From ac09daefaa9050d21429fa65c8db65f9598e5da5 Mon Sep 17 00:00:00 2001 From: JooYoung Date: Mon, 19 Sep 2022 12:35:00 +0900 Subject: [PATCH] =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=20=EC=86=A1?= =?UTF-8?q?=EB=8B=AC=EB=AC=B8=EC=84=9C=20=EC=83=81=EC=84=B8=EB=B3=B4?= =?UTF-8?q?=EA=B8=B0=20(=EC=A7=84=ED=96=89=EC=A4=91)=20SNS=20=EA=B0=84?= =?UTF-8?q?=ED=8E=B8=EB=A1=9C=EA=B7=B8=EC=9D=B8=20(=EC=A7=84=ED=96=89?= =?UTF-8?q?=EC=A4=91)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kccadr/certDoc/web/CertDocController.java | 369 + .../egovProps/globals_local.properties | 2 +- .../jsp/web/kccadr/certDoc/armDetail.jsp | 182 + .../jsp/web/kccadr/certDoc/certDocList.jsp | 195 + .../jsp/web/kccadr/certDoc/cfrmDetail.jsp | 253 + .../jsp/web/kccadr/certDoc/crtDetail.jsp | 113 + .../jsp/web/kccadr/certDoc/dntDetail.jsp | 123 + .../jsp/web/kccadr/certDoc/drtCtrDetail.jsp | 193 + .../jsp/web/kccadr/certDoc/drtDetail.jsp | 285 + .../jsp/web/kccadr/certDoc/entDetail.jsp | 113 + .../jsp/web/kccadr/certDoc/oadDetail.jsp | 171 + src/main/webapp/js/kccadr/kakaojs/kakao.js | 7727 +++++++++++++++++ .../naverjs/naveridlogin_js_sdk_2.0.2.js | 1 + 13 files changed, 9726 insertions(+), 1 deletion(-) create mode 100644 src/main/java/kcc/kccadr/certDoc/web/CertDocController.java create mode 100644 src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/armDetail.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/certDocList.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/cfrmDetail.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/crtDetail.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/dntDetail.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/drtCtrDetail.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/drtDetail.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/entDetail.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/oadDetail.jsp create mode 100644 src/main/webapp/js/kccadr/kakaojs/kakao.js create mode 100644 src/main/webapp/js/kccadr/naverjs/naveridlogin_js_sdk_2.0.2.js diff --git a/src/main/java/kcc/kccadr/certDoc/web/CertDocController.java b/src/main/java/kcc/kccadr/certDoc/web/CertDocController.java new file mode 100644 index 00000000..132abf8d --- /dev/null +++ b/src/main/java/kcc/kccadr/certDoc/web/CertDocController.java @@ -0,0 +1,369 @@ +package kcc.kccadr.certDoc.web; + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; + +import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; +import kcc.com.cmm.EgovMessageSource; +import kcc.com.cmm.util.StringUtil; +import kcc.com.utl.user.service.CheckLoginUtil; +import kcc.kccadr.adjPgrMgr.arm.service.CmntVO; +import kcc.kccadr.adjPgrMgr.cmm.service.CloseVO; +import kcc.kccadr.adjPgrMgr.cmm.service.PgrCmmService; +import kcc.kccadr.adjPgrMgr.cmm.service.PgrCmmVO; +import kcc.kccadr.adjPgrMgr.dlvinfo.service.DlvinfoService; +import kcc.kccadr.adjPgrMgr.dlvinfo.service.DlvinfoVO; +import kcc.kccadr.adjPgrMgr.dnt.service.DntService; +import kcc.kccadr.adjPgrMgr.dnt.service.DntVO; +import kcc.kccadr.adjPgrMgr.drt.service.AssVO; +import kcc.kccadr.adjPgrMgr.drt.service.DrtService; +import kcc.kccadr.adjPgrMgr.drt.service.DrtVO; +import kcc.kccadr.adjPgrMgr.drtctr.service.AssCtrVO; +import kcc.kccadr.adjPgrMgr.drtctr.service.DrtCtrService; +import kcc.kccadr.adjPgrMgr.drtctr.service.DrtCtrVO; +import kcc.kccadr.adjcclt.service.AdjstConciliatorService; +import kcc.kccadr.adjcclt.service.AdjstConciliatorVO; +import kcc.kccadr.cmm.KccadrConstants; +import kcc.let.utl.fcc.service.EgovCryptoUtil; + +/** + * 대국민(사용자) + * 인증을 통한 송달서류 조회 controller 클래스를 정의한다. + * @author 김봉호 + * @since 2022.08.29 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2022.08.29  안주영          최초 생성
+ *
+ * 
+ */ +@Controller +public class CertDocController { + + //private static final Logger LOGGER = LoggerFactory.getLogger(AdjstChangeDateController.class); + + // eGov 공통 메세지 + @Resource(name = "egovMessageSource") + EgovMessageSource egovMessageSource; + + //로그인 체크 util + @Resource(name = "checkLoginUtil") + private CheckLoginUtil checkLoginUtil; + //암복호화 유틸 + @Resource(name = "egovCryptoUtil") + EgovCryptoUtil egovCryptoUtil; + + @Resource(name = "pgrCmmService") + private PgrCmmService cmmService; + + @Resource(name = "dlvinfoService") + private DlvinfoService dlvinfoService; + + @Resource(name = "drtCtrService") + private DrtCtrService drtCtrService; + + @Resource(name = "dntService") + private DntService dntService; + + @Resource(name = "drtService") + private DrtService drtService; + + @Resource(name="adjstConciliatorService") + private AdjstConciliatorService adjstConciliatorService; + + /** + * 확정증명원 상세 + */ + @RequestMapping("/web/kccadr/certDoc/cfrmDetail.do") + public String cfrmDetail(@ModelAttribute("cmmVO") PgrCmmVO cmmVO, ModelMap model) throws Exception { + + //TEST CODE START + cmmVO.setAdrSeq("ADR_0000000000002620"); + cmmVO.setAdrSn("1"); + //TEST CODE END + + //사건 정보 불러오기 + model.addAttribute("info", cmmService.selectPgrCmm(cmmVO)); + + //종결문서에서 확정증명서 불러오기 + CloseVO closeVO = new CloseVO(); + closeVO.setAdrSeq(cmmVO.getAdrSeq()); + closeVO.setAdrSn(cmmVO.getAdrSn()); + closeVO.setCloseDocTy(KccadrConstants.ADR_CLOSE_DOC_TY_80); + + model.addAttribute("closeDocInfo", cmmService.selectCloseDoc(closeVO)); + + //송달정보 count 조회해오기 + DlvinfoVO dlvInfoVO = new DlvinfoVO(); + dlvInfoVO.setSrcCon("10"); //조정번호 검색 조건 입력 - 10: 사건번호, 20: 신청인/피신청인 이름 + dlvInfoVO.setSrcTxt(cmmVO.getAdrNo()); //사건번호 입력 + dlvInfoVO.setSrcDocty(KccadrConstants.ADR_CLOSE_DOC_TY_80); //송달 문서 종류 코드번호 + model.addAttribute("dlvCnt", dlvinfoService.selectAdjustDeliveryInfoListCnt(dlvInfoVO)); + return "/web/kccadr/certDoc/cfrmDetail"; + + } + + /** + * 기일통지서 상세 + */ + @RequestMapping(value = "/web/kccadr/certDoc/dntDetail.do") + public String dntDetail(@ModelAttribute("dntVO") PgrCmmVO cmmVO, ModelMap model) throws Exception { + + //TEST CODE START + cmmVO.setAdrSeq("ADR_0000000000002620"); + cmmVO.setAdrSn("1"); + //TEST CODE END + + PgrCmmVO dntVO = getDntInfo(cmmVO); + model.addAttribute("info", dntVO); + + if(cmmVO.getSearchKeyword().equals("update")) { + // 조정기일 변경 조회 + DntVO dntNoticeVO = new DntVO(); + dntNoticeVO.setAdrSn(cmmVO.getAdrSn()); + dntNoticeVO.setAdrSeq(cmmVO.getAdrSeq()); + DntVO selectDateNoticeDate = dntService.selectDateNoticeDate(dntNoticeVO); + model.addAttribute("date",selectDateNoticeDate); + } + + //송달정보 count 조회해오기 + DlvinfoVO dlvInfoVO = new DlvinfoVO(); + dlvInfoVO.setSrcCon("10"); + dlvInfoVO.setSrcTxt(cmmVO.getAdrNo()); + model.addAttribute("dlvCnt", dlvinfoService.selectAdjustDeliveryInfoListCnt(dlvInfoVO)); + + return "/web/kccadr/certDoc/dntDetail"; + } + + /** + * 기일조서 상세 + */ + @RequestMapping(value = "/web/kccadr/certDoc/drtDetail.do") + public String drtDetail(PgrCmmVO cmmVO, DrtVO drtVO, ModelMap model) throws Exception { + + List assList = drtService.selectAssList(drtVO); + + PgrCmmVO info = cmmService.selectPgrCmm(cmmVO); + + //송달정보 count 조회해오기 + DlvinfoVO dlvInfoVO = new DlvinfoVO(); + dlvInfoVO.setSrcCon("10"); + dlvInfoVO.setSrcDocty("20"); //송달 문서 종류 코드번호 + dlvInfoVO.setSrcTxt(cmmVO.getAdrNo()); + dlvInfoVO.setAdrSeq(cmmVO.getAdrSeq()); + dlvInfoVO.setAdrSn(drtVO.getAdrSn()); + model.addAttribute("dlvCnt", dlvinfoService.selectAdjustDeliveryInfoListCnt(dlvInfoVO)); + + model.addAttribute("assList", assList); + model.addAttribute("info", info); + + //조정위원 정보 불러오기 + PgrCmmVO dntVO = getDntInfo(cmmVO); + model.addAttribute("uiwonInfo", dntVO); + + return "/web/kccadr/certDoc/drtDetail"; + } + + /** + * 조정권고안 상세 + */ + @RequestMapping(value = "/web/kccadr/certDoc/armDetail.do") + public String armDetail(@ModelAttribute("closeVO") CloseVO closeVO, ModelMap model) throws Exception { + + //TEST CODE START + closeVO.setAdrSeq("ADR_0000000000002762"); + closeVO.setAdrSn("1"); + //TEST CODE END + + //조정기일 배석 정보 불러오기 + DrtCtrVO drtCtrVO = new DrtCtrVO(); + drtCtrVO.setAdrSeq(closeVO.getAdrSeq()); + drtCtrVO.setAdrSn(closeVO.getAdrSn()); + List assList = drtCtrService.selectAssList(drtCtrVO); + + //기일조서 정보 불러오기 + PgrCmmVO pgrCmmVO = new PgrCmmVO(); + pgrCmmVO.setAdrSeq(closeVO.getAdrSeq()); + pgrCmmVO.setPrtclSeq(closeVO.getPrtclSeq()); + PgrCmmVO info = cmmService.selectPgrCmm(pgrCmmVO); + + + //직권조정 조서 정보 가져오기 + model.addAttribute("assList", assList); + model.addAttribute("info", info); + + closeVO.setCloseDocTy("30"); + model.addAttribute("drtCtrVO", cmmService.selectCloseDoc(closeVO)); + + //송달정보 count 조회해오기 + DlvinfoVO dlvInfoVO = new DlvinfoVO(); + dlvInfoVO.setSrcCon("10"); + dlvInfoVO.setSrcTxt(closeVO.getAdrNo()); + model.addAttribute("dlvCnt", dlvinfoService.selectAdjustDeliveryInfoListCnt(dlvInfoVO)); + + CmntVO cmntVO = new CmntVO(); + cmntVO.setAdrSeq(closeVO.getAdrSeq()); + cmntVO.setAdrSn(closeVO.getAdrSn()); + cmntVO.setCmntSeq(closeVO.getCmntSeq()); + cmntVO.setCmntTy("30"); + + //조정위원 의견 리스트 + model.addAttribute("list", cmmService.selectCmnList(cmntVO)); + + return "/web/kccadr/certDoc/armDetail"; + } + + /** + * 조정조서 상세 + */ + @RequestMapping("/web/kccadr/certDoc/drtCtrDetail.do") + public String drtCtrDetail(PgrCmmVO cmmVO, DrtCtrVO drtCtrVO, ModelMap model) throws Exception { + + //조정기일 배석 정보 불러오기 + List assList = drtCtrService.selectAssList(drtCtrVO); + + //기일조서 정보 불러오기 + PgrCmmVO info = cmmService.selectPgrCmm(cmmVO); + + //조정조서 정보 불러오기 + DrtCtrVO resultDrtCtrVO = drtCtrService.selectDrtCtrReport(drtCtrVO); + + //송달정보 count 조회해오기 + DlvinfoVO dlvInfoVO = new DlvinfoVO(); + dlvInfoVO.setSrcCon("10"); + dlvInfoVO.setSrcTxt(cmmVO.getAdrNo()); + model.addAttribute("dlvCnt", dlvinfoService.selectAdjustDeliveryInfoListCnt(dlvInfoVO)); + + + model.addAttribute("assList", assList); + model.addAttribute("info", info); + model.addAttribute("drtCtrVO", resultDrtCtrVO); + + return "/web/kccadr/certDoc/drtCtrDetail"; + + } + + /** + * 취하종결통보서 상세 + */ + @RequestMapping(value = "/web/kccadr/certDoc/entDetail.do") + public String entDetail(@ModelAttribute("closeVO") CloseVO closeVO, ModelMap model) throws Exception { + + model.addAttribute("info", cmmService.selectPgrCmm(closeVO)); + + //송달정보 count 조회해오기 + DlvinfoVO dlvInfoVO = new DlvinfoVO(); + dlvInfoVO.setSrcCon("10"); + dlvInfoVO.setSrcDocty("50"); //송달 문서 종류 코드번호 + dlvInfoVO.setSrcTxt(closeVO.getAdrNo()); + + model.addAttribute("dlvCnt", dlvinfoService.selectAdjustDeliveryInfoListCnt(dlvInfoVO)); + + return "/web/kccadr/certDoc/entDetail"; + } + + /** + * 직권조정결정서 상세 + */ + + @RequestMapping(value = "/web/kccadr/certDoc/oadDetail.do") + public String oadDetail(@ModelAttribute("closeVO") CloseVO closeVO, ModelMap model) throws Exception { + + //조정기일 배석 정보 불러오기 + DrtCtrVO drtCtrVO = new DrtCtrVO(); + drtCtrVO.setAdrSeq(closeVO.getAdrSeq()); + drtCtrVO.setAdrSn(closeVO.getAdrSn()); + List assList = drtCtrService.selectAssList(drtCtrVO); + model.addAttribute("assList", assList); + + //기일조서 정보 불러오기 + PgrCmmVO pgrCmmVO = new PgrCmmVO(); + pgrCmmVO.setAdrSeq(closeVO.getAdrSeq()); + pgrCmmVO.setPrtclSeq(closeVO.getPrtclSeq()); + PgrCmmVO info = cmmService.selectPgrCmm(pgrCmmVO); + model.addAttribute("info", info); + + //직권조정 조서 정보 가져오기 + closeVO.setCloseDocTy("60"); + model.addAttribute("drtCtrVO", cmmService.selectCloseDoc(closeVO)); + + //송달정보 count 조회해오기 + DlvinfoVO dlvInfoVO = new DlvinfoVO(); + dlvInfoVO.setSrcCon("10"); + dlvInfoVO.setSrcDocty("60"); //송달 문서 종류 코드번호 + dlvInfoVO.setSrcTxt(closeVO.getAdrNo()); + model.addAttribute("dlvCnt", dlvinfoService.selectAdjustDeliveryInfoListCnt(dlvInfoVO)); + + + //조정위원들 의견 정보 불러오기(전체 불러오기 - memSeq로 그룹핑해서 중복 제거했음) 20220209 - 우영두 추가 + AdjstConciliatorVO adjstConciliatorVO = new AdjstConciliatorVO(); + adjstConciliatorVO.setAdrSeq(closeVO.getAdrSeq()); + adjstConciliatorVO.setAdrSn(closeVO.getAdrSn()); + adjstConciliatorVO.setCmntTy(dlvInfoVO.getSrcDocty()); //문서종류 코드 번호 전달 + + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(adjstConciliatorVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(100); + paginationInfo.setPageSize(adjstConciliatorVO.getPageSize()); + + adjstConciliatorVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + adjstConciliatorVO.setLastIndex(paginationInfo.getLastRecordIndex()); + adjstConciliatorVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + List cmnList = adjstConciliatorService.selectAdjstRecommendationCommentListGroup(adjstConciliatorVO); + + model.addAttribute("cmnList",cmnList); + + return "/web/kccadr/certDoc/oadDetail"; + } + + /** + * 불성립종결통보서 상세 + */ + @RequestMapping(value = "crtDetail.do") + public String crtDetail(@ModelAttribute("closeVO") CloseVO closeVO, ModelMap model) throws Exception { + + model.addAttribute("info", cmmService.selectPgrCmm(closeVO)); + + //송달정보 count 조회해오기 + DlvinfoVO dlvInfoVO = new DlvinfoVO(); + dlvInfoVO.setSrcCon("10"); + dlvInfoVO.setSrcTxt(closeVO.getAdrNo()); + dlvInfoVO.setSrcDocty("70");//불성립종결통보서 송달 문서 코드번호 + model.addAttribute("dlvCnt", dlvinfoService.selectAdjustDeliveryInfoListCnt(dlvInfoVO)); + + return "/web/kccadr/certDoc/crtDetail"; + } + + private PgrCmmVO getDntInfo(PgrCmmVO cmmVO) throws Exception { + PgrCmmVO dntVO = cmmService.selectPgrCmm(cmmVO); + if (!StringUtil.isEmpty(dntVO.getMemNames())) { + String[] memNames = dntVO.getMemNames().split(", "); + String[] assSeqes = dntVO.getAssSeqes().split(", "); + + if(memNames.length==1) { + dntVO.setAddUsrNm0(memNames[0]); + dntVO.setAssSeq0(assSeqes[0]); + }else if(memNames.length>1) { + dntVO.setAddUsrNm0(memNames[0]); + dntVO.setAssSeq0(assSeqes[0]); + dntVO.setAddUsrNm1(memNames[1]); + dntVO.setAssSeq1(assSeqes[1]); + } + + } + return dntVO; + } + +} diff --git a/src/main/resources/egovframework/egovProps/globals_local.properties b/src/main/resources/egovframework/egovProps/globals_local.properties index bbf6e930..d40eb2aa 100644 --- a/src/main/resources/egovframework/egovProps/globals_local.properties +++ b/src/main/resources/egovframework/egovProps/globals_local.properties @@ -33,7 +33,7 @@ Globals.DriverClassName=cubrid.jdbc.driver.CUBRIDDriver #\ud074\ub77c\uc6b0\ub4dc \uc11c\ubc84 #Globals.Url=jdbc:cubrid:158.247.225.133:30000:kcc_adrs4:::?charset=utf8 #\uac1c\ubc1c\uc11c\ubc84 -Globals.Url=jdbc:cubrid:192.168.0.176:30000:cubdb:::?charset=utf8 +Globals.Url=jdbc:cubrid:119.193.215.98:30000:kcc_adr_advc:::?charset=utf8 #\uc2e4\uc11c\ubc84 #Globals.Url=jdbc:cubrid:192.168.39.14:30000:kcc_adrs4:::?charset=utf8 diff --git a/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/armDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/armDetail.jsp new file mode 100644 index 00000000..5a8b454e --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/armDetail.jsp @@ -0,0 +1,182 @@ +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> + + + +조정권고안 상세 + + + + + + " /> + " /> + " /> + " /> + + +
+
+
+

조정권고안

+
+
+
+

조정권고안

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
조정권고안 정보
조정부 +

+ +

+
사건 +

+ +

+
신청인 +

+ +

+
피신청인 +

+ +

+
권고일 +
+ " data-datecontrol="true"> +
+ + +
+
+
신청의표시신청취지 +

별지 조정신청 해당란 기재와 같다.

+
신청원인 +

별지 조정신청 해당란 기재와 같다.

+
조정조항 + +
조정부장 +

+ +

+
조정위원 +

+ +

+
조사관 +

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 등록일자 + + 의견 내용조정위원
+

${item.frstRegistDay }

+
+

+ ')"> ${item.cmntCn } +

+
+

${item.memName}

+
등록된 의견이 없습니다.
+
+
+
+ +
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/certDocList.jsp b/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/certDocList.jsp new file mode 100644 index 00000000..eebb25ab --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/certDocList.jsp @@ -0,0 +1,195 @@ +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> + + + +송달 서류 목록 + + + + + + " /> + " /> + " /> + " /> + + +
+
+
+

송달 서류 목록

+
+
+
+

송달 서류 목록

+
+ + + + + + + + + 목록 수정 필요 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
송달 서류 목록
조정부 +

+ +

+
사건 +

+ +

+
신청인 +

+ +

+
피신청인 +

+ +

+
권고일 +
+ " data-datecontrol="true"> +
+ + +
+
+
신청의표시신청취지 +

별지 조정신청 해당란 기재와 같다.

+
신청원인 +

별지 조정신청 해당란 기재와 같다.

+
조정조항 + +
조정부장 +

+ +

+
조정위원 +

+ +

+
조사관 +

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 등록일자 + + 의견 내용조정위원
+

${item.frstRegistDay }

+
+

+ ')"> ${item.cmntCn } +

+
+

${item.memName}

+
등록된 의견이 없습니다.
+
+
+
+ +
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/cfrmDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/cfrmDetail.jsp new file mode 100644 index 00000000..a191f03a --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/cfrmDetail.jsp @@ -0,0 +1,253 @@ +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> + + + +확정증명원 상세 + + + + + + + + " /> + " /> + +
+
+
+

확정증명원

+
+
+
+

확정증명원

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
확정증명원 정보
조정부 +

+ +

+
사건 +

+ +

+
신청인 +

+ +

+
피신청인 +

+ +

+
확정일자 +
+ +
+ + +
+
+
확정 증명 내용 + +
조정부장 +

+ +

+
조정위원 +

+ +

+
조정조사관 +

+ +

+
+
+
+
+ + + + + + +





+ + + + + + + +
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/crtDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/crtDetail.jsp new file mode 100644 index 00000000..fc500be2 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/crtDetail.jsp @@ -0,0 +1,113 @@ +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> + + + +불성립종결통보서 상세 + + + + + + " /> + " /> + " /> + " /> + + +
+
+
+

불성립종결통보서

+
+
+
+

불성립종결통보서

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
불성립종결통보서 정보
조정부 +

+ +

+
사건 +

+ +

+
신청내용 +

+ +

+
제목 +

+ 불성립 종결 통보 + <%-- --%> +

+
수신신청인 +

+ +

+
피신청인 +

+ +

+
이 유 + +
조정부장 +

+ +

+
+
+
+
+ +
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/dntDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/dntDetail.jsp new file mode 100644 index 00000000..39e54d43 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/dntDetail.jsp @@ -0,0 +1,123 @@ +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> + + + +기일통지서 상세 + + + + + + " /> + " /> + " /> + " /> + " /> + " /> + + + + + + + + + +
+
+
+

기일통지서

+
+
+
+

기일통지서

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
기일통지서 정보
조 정 부 + +
차 수 + +
사 건 + + 사건내용 + +
신청인 + +
피신청인 + +
변경기일 + +    + +
조정기일 + +    + +
장소 + +
주소 + +
+
+
+
+ +
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/drtCtrDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/drtCtrDetail.jsp new file mode 100644 index 00000000..76152845 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/drtCtrDetail.jsp @@ -0,0 +1,193 @@ +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> + + + +조정조서 상세 + + + + + + " /> + " /> + " /> + " /> + + +
+
+
+

조정조서

+
+
+
+

조정조서

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
조정조서 정보
조 정 부 + +
차 수 + +
사 건 + + 사건내용 + +
신청인 + + +

+ +

+ +
+
+
+
대리인 + + +

+ +

+ +
+
+
+
피신청인 + + +

+ +

+ +
+
+
+
대리인 + + +

+ +

+ +
+
+
조정기일 +
+ " data-datecontrol="true" onkeyup="setFormat('day',this)" maxlength="10" readonly> +
+ + +
+
+ " onkeyup="setFormat('time',this)" maxlength="8" readonly> +
공개여부 + +
장소 + + +
조정조항 + +
조정부장 + +
조정위원 + +
조정조사관 + +
+
+
+
+ +
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/drtDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/drtDetail.jsp new file mode 100644 index 00000000..fd3304f7 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/drtDetail.jsp @@ -0,0 +1,285 @@ +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> + + + +기일조서 상세 + + + + + + " /> + " /> + +
+
+
+

기일조서

+
+
+
+

기일조서

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <%-- + + + --%> + + + + + + + + + + + + + + + +
기일조서 정보
조 정 부 + +
차 수 + +
사 건 + + 사건내용 + +
신청인 + + +

+ +

+ +
+
+
대리인 + + +

+ +

+ +
+
+
참관대리인 + + + +

+ +

+ +
+ + + +
+
+
피신청인 + + +

+ +

+ +
+
+
대리인 + + +

+ +

+ +
+
+
참관대리인 + + + +

+ +

+ +
+ + + +
+
+
조정기일 +
+ " data-datecontrol="true" onkeyup="setFormat('day',this)" maxlength="10"> +
+ + +
+
+ " onkeyup="setFormat('time',this)" maxlength="8"> +
공개여부 + +
장소 + + +
기일결과 + +
다음 기일 지정 여부 +
+ + checked="checked" onclick="fncCheckNextYn()"> + + + + checked="checked" onclick="fncCheckNextYn()"> + + +
+
고지된 다음기일 +
+ " onkeyup="setFormat('day',this)" maxlength="10"> +
+ + +
+
+ " onkeyup="setFormat('time',this)" maxlength="8"> +
조서내용 + +
조정부장 + +
조정위원 + +
조정위원1 +   + + + +
조정위원2 +   + + + +
조정조사관 + +
+
+
+
+ +
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/entDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/entDetail.jsp new file mode 100644 index 00000000..c969bdfa --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/entDetail.jsp @@ -0,0 +1,113 @@ +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> + + + +취하종결통보서 상세 + + + + + + " /> + " /> + " /> + " /> + + +
+
+
+

취하종결통보서

+
+
+
+

취하종결통보서

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
취하종결통보서 정보
조정부 +

+ +

+
사건 +

+ +

+
신청내용 +

+ +

+
제목 +

+ 취하 종결 통보 + <%-- --%> +

+
수신신청인 +

+ +

+
피신청인 +

+ +

+
이 유 + +
조정부장 +

+ +

+
+
+
+
+ +
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/oadDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/oadDetail.jsp new file mode 100644 index 00000000..e0f71b82 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/kccadr/certDoc/oadDetail.jsp @@ -0,0 +1,171 @@ +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> + + + +직권조정결정서 상세 + + + + + + " /> + " /> + " /> + " /> + + +
+
+
+

직권조정결정서

+
+
+
+

직권조정결정서

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <%-- 조정위원 이름 split 처리 --%> + + + <%-- 조정위원 일련번호 split 처리 --%> + + + + + + + + +
직권조정결정서 정보
조정부 +

+ +

+
사건 +

+ +

+
신청인 +

+ +

+
피신청인 +

+ +

+
결정일 +
+ " data-datecontrol="true" readonly> +
+ + +
+
+
송달완료일 +

+ +

+
이의신청기한 +
+ " data-datecontrol="true" readonly> +
+ + +
+
+
주문 + <%-- " size="70"> --%> + +
신청취지 + <%-- " size="70"> --%> + +
이유 + +
조정부장 +

+ + + + + + +

+
조정위원 +

+ + <%-- 현재 선택된 조정위원에 해당하는 일련번호 변수 저장 --%> + + + + + + +

+
+
+
+
+ +
+ + \ No newline at end of file diff --git a/src/main/webapp/js/kccadr/kakaojs/kakao.js b/src/main/webapp/js/kccadr/kakaojs/kakao.js new file mode 100644 index 00000000..e07a6e9b --- /dev/null +++ b/src/main/webapp/js/kccadr/kakaojs/kakao.js @@ -0,0 +1,7727 @@ +/** + * Kakao SDK for JavaScript - v1.43.0 + * + * Copyright 2017 Kakao Corp. + * + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * + * OSS Notice | KakaoSDK-Javascript + * + * This application is Copyright © Kakao Corp. All rights reserved. + * The following sets forth attribution notices for third party software that may be contained in this application. + * If you have any questions or concerns, please contact us at opensource@kakaocorp.com + * + * + * crypto-js + * + * https://github.com/brix/crypto-js + * + * Copyright 2009-2013 Jeff Mott + * Copyright 2013-2016 Evan Vosberg + * + * MIT License + * + * + * easyXDM + * + * https://github.com/oyvindkinsey/easyXDM/ + * + * Copyright 2009-2011 Øyvind Sean Kinsey, oyvind@kinsey.no + * + * MIT License + * + * + * ES6-Promise + * + * https://github.com/stefanpenner/es6-promise + * + * Copyright 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors + * + * MIT License + * + * + * Kakao Web2App Library + * + * https://github.com/kakao/web2app + * + * Copyright 2015 Kakao Corp. http://www.kakaocorp.com + * + * MIT License + * + * + * lodash + * + * https://github.com/lodash/lodash + * + * Copyright JS Foundation and other contributors + * + * MIT License + * + * + * ua_parser + * + * https://github.com/html5crew/ua_parser + * + * Copyright HTML5 Tech. Team in Daum Communications Corp. + * + * MIT License + * + * + * `````````` + * MIT License + * + * Copyright (c) + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * `````````` + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Kakao = global.Kakao || {})); +})(this, (function (exports) { 'use strict'; + + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + var freeGlobal$1 = freeGlobal; + + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + var root = freeGlobal$1 || freeSelf || Function('return this')(); + var root$1 = root; + + var Symbol$1 = root$1.Symbol; + var Symbol$2 = Symbol$1; + + var objectProto$a = Object.prototype; + var hasOwnProperty$8 = objectProto$a.hasOwnProperty; + var nativeObjectToString$1 = objectProto$a.toString; + var symToStringTag$1 = Symbol$2 ? Symbol$2.toStringTag : undefined; + function getRawTag(value) { + var isOwn = hasOwnProperty$8.call(value, symToStringTag$1), + tag = value[symToStringTag$1]; + try { + value[symToStringTag$1] = undefined; + var unmasked = true; + } catch (e) {} + var result = nativeObjectToString$1.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag$1] = tag; + } else { + delete value[symToStringTag$1]; + } + } + return result; + } + + var objectProto$9 = Object.prototype; + var nativeObjectToString = objectProto$9.toString; + function objectToString(value) { + return nativeObjectToString.call(value); + } + + var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; + var symToStringTag = Symbol$2 ? Symbol$2.toStringTag : undefined; + function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value); + } + + function isObjectLike(value) { + return value != null && typeof value == 'object'; + } + + var symbolTag = '[object Symbol]'; + function isSymbol(value) { + return typeof value == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag; + } + + var isArray = Array.isArray; + var isArray$1 = isArray; + + var reWhitespace = /\s/; + function trimmedEndIndex(string) { + var index = string.length; + while (index-- && reWhitespace.test(string.charAt(index))) {} + return index; + } + + var reTrimStart = /^\s+/; + function baseTrim(string) { + return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') : string; + } + + function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); + } + + var NAN = 0 / 0; + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + var reIsBinary = /^0b[01]+$/i; + var reIsOctal = /^0o[0-7]+$/i; + var freeParseInt = parseInt; + function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? other + '' : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = baseTrim(value); + var isBinary = reIsBinary.test(value); + return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; + } + + var INFINITY = 1 / 0, + MAX_INTEGER = 1.7976931348623157e+308; + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = value < 0 ? -1 : 1; + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } + + function toInteger(value) { + var result = toFinite(value), + remainder = result % 1; + return result === result ? remainder ? result - remainder : result : 0; + } + + function identity(value) { + return value; + } + + var asyncTag = '[object AsyncFunction]', + funcTag$1 = '[object Function]', + genTag = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; + function isFunction(value) { + if (!isObject(value)) { + return false; + } + var tag = baseGetTag(value); + return tag == funcTag$1 || tag == genTag || tag == asyncTag || tag == proxyTag; + } + + var coreJsData = root$1['__core-js_shared__']; + var coreJsData$1 = coreJsData; + + var maskSrcKey = function () { + var uid = /[^.]+$/.exec(coreJsData$1 && coreJsData$1.keys && coreJsData$1.keys.IE_PROTO || ''); + return uid ? 'Symbol(src)_1.' + uid : ''; + }(); + function isMasked(func) { + return !!maskSrcKey && maskSrcKey in func; + } + + var funcProto$2 = Function.prototype; + var funcToString$2 = funcProto$2.toString; + function toSource(func) { + if (func != null) { + try { + return funcToString$2.call(func); + } catch (e) {} + try { + return func + ''; + } catch (e) {} + } + return ''; + } + + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + var reIsHostCtor = /^\[object .+?Constructor\]$/; + var funcProto$1 = Function.prototype, + objectProto$8 = Object.prototype; + var funcToString$1 = funcProto$1.toString; + var hasOwnProperty$7 = objectProto$8.hasOwnProperty; + var reIsNative = RegExp('^' + funcToString$1.call(hasOwnProperty$7).replace(reRegExpChar, '\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'); + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + + function getValue(object, key) { + return object == null ? undefined : object[key]; + } + + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } + + function apply(func, thisArg, args) { + switch (args.length) { + case 0: + return func.call(thisArg); + case 1: + return func.call(thisArg, args[0]); + case 2: + return func.call(thisArg, args[0], args[1]); + case 3: + return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); + } + + var HOT_COUNT = 800, + HOT_SPAN = 16; + var nativeNow = Date.now; + function shortOut(func) { + var count = 0, + lastCalled = 0; + return function () { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; + } + + function constant(value) { + return function () { + return value; + }; + } + + var defineProperty = function () { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} + }(); + var defineProperty$1 = defineProperty; + + var baseSetToString = !defineProperty$1 ? identity : function (func, string) { + return defineProperty$1(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); + }; + var baseSetToString$1 = baseSetToString; + + var setToString = shortOut(baseSetToString$1); + var setToString$1 = setToString; + + function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; + } + + var MAX_SAFE_INTEGER$1 = 9007199254740991; + var reIsUint = /^(?:0|[1-9]\d*)$/; + function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER$1 : length; + return !!length && (type == 'number' || type != 'symbol' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length; + } + + function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty$1) { + defineProperty$1(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } + } + + function eq(value, other) { + return value === other || value !== value && other !== other; + } + + var objectProto$7 = Object.prototype; + var hasOwnProperty$6 = objectProto$7.hasOwnProperty; + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty$6.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) { + baseAssignValue(object, key, value); + } + } + + function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + var index = -1, + length = props.length; + while (++index < length) { + var key = props[index]; + var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined; + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; + } + + var nativeMax = Math.max; + function overRest(func, start, transform) { + start = nativeMax(start === undefined ? func.length - 1 : start, 0); + return function () { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; + } + + function baseRest(func, start) { + return setToString$1(overRest(func, start, identity), func + ''); + } + + var MAX_SAFE_INTEGER = 9007199254740991; + function isLength(value) { + return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' ? isArrayLike(object) && isIndex(index, object.length) : type == 'string' && index in object) { + return eq(object[index], value); + } + return false; + } + + function createAssigner(assigner) { + return baseRest(function (object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + customizer = assigner.length > 3 && typeof customizer == 'function' ? (length--, customizer) : undefined; + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); + } + + var objectProto$6 = Object.prototype; + function isPrototype(value) { + var Ctor = value && value.constructor, + proto = typeof Ctor == 'function' && Ctor.prototype || objectProto$6; + return value === proto; + } + + function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + while (++index < n) { + result[index] = iteratee(index); + } + return result; + } + + var argsTag$1 = '[object Arguments]'; + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag$1; + } + + var objectProto$5 = Object.prototype; + var hasOwnProperty$5 = objectProto$5.hasOwnProperty; + var propertyIsEnumerable = objectProto$5.propertyIsEnumerable; + var isArguments = baseIsArguments(function () { + return arguments; + }()) ? baseIsArguments : function (value) { + return isObjectLike(value) && hasOwnProperty$5.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee'); + }; + var isArguments$1 = isArguments; + + function stubFalse() { + return false; + } + + var freeExports$1 = typeof exports == 'object' && exports && !exports.nodeType && exports; + var freeModule$1 = freeExports$1 && typeof module == 'object' && module && !module.nodeType && module; + var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1; + var Buffer = moduleExports$1 ? root$1.Buffer : undefined; + var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; + var isBuffer = nativeIsBuffer || stubFalse; + var isBuffer$1 = isBuffer; + + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag$1 = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + mapTag = '[object Map]', + numberTag$1 = '[object Number]', + objectTag$1 = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag$1 = '[object String]', + weakMapTag = '[object WeakMap]'; + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag$1] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag$1] = typedArrayTags[objectTag$1] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag$1] = typedArrayTags[weakMapTag] = false; + function baseIsTypedArray(value) { + return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; + } + + function baseUnary(func) { + return function (value) { + return func(value); + }; + } + + var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + var moduleExports = freeModule && freeModule.exports === freeExports; + var freeProcess = moduleExports && freeGlobal$1.process; + var nodeUtil = function () { + try { + var types = freeModule && freeModule.require && freeModule.require('util').types; + if (types) { + return types; + } + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} + }(); + var nodeUtil$1 = nodeUtil; + + var nodeIsTypedArray = nodeUtil$1 && nodeUtil$1.isTypedArray; + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + var isTypedArray$1 = isTypedArray; + + var objectProto$4 = Object.prototype; + var hasOwnProperty$4 = objectProto$4.hasOwnProperty; + function arrayLikeKeys(value, inherited) { + var isArr = isArray$1(value), + isArg = !isArr && isArguments$1(value), + isBuff = !isArr && !isArg && isBuffer$1(value), + isType = !isArr && !isArg && !isBuff && isTypedArray$1(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + for (var key in value) { + if ((inherited || hasOwnProperty$4.call(value, key)) && !(skipIndexes && ( + key == 'length' || + isBuff && (key == 'offset' || key == 'parent') || + isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') || + isIndex(key, length)))) { + result.push(key); + } + } + return result; + } + + function overArg(func, transform) { + return function (arg) { + return func(transform(arg)); + }; + } + + var nativeKeys = overArg(Object.keys, Object); + var nativeKeys$1 = nativeKeys; + + var objectProto$3 = Object.prototype; + var hasOwnProperty$3 = objectProto$3.hasOwnProperty; + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys$1(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty$3.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; + } + + function keys$1(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); + } + + function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; + } + + var objectProto$2 = Object.prototype; + var hasOwnProperty$2 = objectProto$2.hasOwnProperty; + function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty$2.call(object, key)))) { + result.push(key); + } + } + return result; + } + + function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + } + + var assignIn = createAssigner(function (object, source) { + copyObject(source, keysIn(source), object); + }); + var extend = assignIn; + + var getPrototype = overArg(Object.getPrototypeOf, Object); + var getPrototype$1 = getPrototype; + + var objectTag = '[object Object]'; + var funcProto = Function.prototype, + objectProto$1 = Object.prototype; + var funcToString = funcProto.toString; + var hasOwnProperty$1 = objectProto$1.hasOwnProperty; + var objectCtorString = funcToString.call(Object); + function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype$1(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty$1.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString; + } + + function createBaseFor(fromRight) { + return function (object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; + } + + var baseFor = createBaseFor(); + var baseFor$1 = baseFor; + + function baseForOwn(object, iteratee) { + return object && baseFor$1(object, iteratee, keys$1); + } + + function createBaseEach(eachFunc, fromRight) { + return function (collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + while (fromRight ? index-- : ++index < length) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; + } + + var baseEach = createBaseEach(baseForOwn); + var baseEach$1 = baseEach; + + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + var defaults = baseRest(function (object, sources) { + object = Object(object); + var index = -1; + var length = sources.length; + var guard = length > 2 ? sources[2] : undefined; + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + length = 1; + } + while (++index < length) { + var source = sources[index]; + var props = keysIn(source); + var propsIndex = -1; + var propsLength = props.length; + while (++propsIndex < propsLength) { + var key = props[propsIndex]; + var value = object[key]; + if (value === undefined || eq(value, objectProto[key]) && !hasOwnProperty.call(object, key)) { + object[key] = source[key]; + } + } + } + return object; + }); + var defaults$1 = defaults; + + function castFunction(value) { + return typeof value == 'function' ? value : identity; + } + + function forEach(collection, iteratee) { + var func = isArray$1(collection) ? arrayEach : baseEach$1; + return func(collection, castFunction(iteratee)); + } + + var stringTag = '[object String]'; + function isString(value) { + return typeof value == 'string' || !isArray$1(value) && isObjectLike(value) && baseGetTag(value) == stringTag; + } + + var boolTag = '[object Boolean]'; + function isBoolean(value) { + return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag; + } + + function isElement(value) { + return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); + } + + function isInteger(value) { + return typeof value == 'number' && value == toInteger(value); + } + + var numberTag = '[object Number]'; + function isNumber(value) { + return typeof value == 'number' || isObjectLike(value) && baseGetTag(value) == numberTag; + } + + function checkObjType(type) { + return function (e) { + return Object.prototype.toString.call(e) === "[object ".concat(type, "]"); + }; + } + function isBlob(b) { + return checkObjType('Blob')(b); + } + function isFile(f) { + return checkObjType('File')(f); + } + function isFileList(fl) { + return checkObjType('FileList')(fl); + } + function isURL(u) { + var urlRegex = /(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/; + return urlRegex.test(u); + } + function isJSONString(s) { + try { + JSON.parse(s); + } catch (e) { + return false; + } + return true; + } + function map(arr, fn) { + return Array.prototype.slice.call(arr).map(fn); + } + function every(arr, fn) { + return Array.prototype.slice.call(arr).every(fn); + } + function difference(a0, a1) { + var arrays = [a0, a1]; + return arrays.reduce(function (a, b) { + return a.filter(function (c) { + return b.indexOf(c) === -1; + }); + }); + } + function keys(e) { + return Object.keys(e || {}); + } + function emptyFunc() { + } + function getRandomString() { + return Math.random().toString(36).slice(2); + } + function getElement(e) { + if (isElement(e)) { + return e; + } else if (isString(e)) { + return document.querySelector(e); + } else { + return null; + } + } + function addEvent(target, type, callback) { + if (target.addEventListener) { + target.addEventListener(type, callback, false); + } + } + function removeEvent(target, type, callback) { + if (target.removeEventListener) { + target.removeEventListener(type, callback, false); + } + } + function buildQueryString(params) { + var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var esc = encode ? encodeURIComponent : function (e) { + return e; + }; + var ret = map(keys(params), function (k) { + var v = params[k]; + return esc(k) + '=' + esc(isObjectLike(v) ? JSON.stringify(v) : v); + }); + return ret.join('&'); + } + function ab2str(buf) { + var bytes = Array.prototype.slice.call(new Uint8Array(buf)); + return bytes.reduce(function (acc, b) { + return acc + String.fromCharCode.apply(null, [b]); + }, ''); + } + function isOneOf(elements) { + if (!isArray$1(elements)) { + throw new Error('elements should be an Array'); + } + return function (e) { + return elements.indexOf(e) > -1; + }; + } + function passesOneOf(validators) { + if (!isArray$1(validators)) { + throw new Error('validators should be an Array'); + } + return function (e) { + return validators.some(function (v) { + return v(e); + }); + }; + } + var localStorage = function () { + var polyfill = { + _data: {}, + setItem: function setItem(id, val) { + return this._data[id] = String(val); + }, + getItem: function getItem(id) { + return this._data.hasOwnProperty(id) ? this._data[id] : null; + }, + removeItem: function removeItem(id) { + return delete this._data[id]; + }, + clear: function clear() { + return this._data = {}; + } + }; + try { + if ('localStorage' in window && window['localStorage'] !== null) { + window.localStorage.setItem('store', ''); + window.localStorage.removeItem('store'); + return window.localStorage; + } else { + return polyfill; + } + } catch (e) { + return polyfill; + } + }(); + + function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); + } + + return keys; + } + + function _objectSpread2(target) { + for (var i = 1; i < arguments.length; i++) { + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { + _defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + + return target; + } + + function _typeof(obj) { + "@babel/helpers - typeof"; + + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, _typeof(obj); + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { + writable: false + }); + return Constructor; + } + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + } + + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + Object.defineProperty(subClass, "prototype", { + writable: false + }); + if (superClass) _setPrototypeOf(subClass, superClass); + } + + function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); + } + + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + + function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + + try { + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + return true; + } catch (e) { + return false; + } + } + + function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return self; + } + + function _possibleConstructorReturn(self, call) { + if (call && (typeof call === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + + return _assertThisInitialized(self); + } + + function _createSuper(Derived) { + var hasNativeReflectConstruct = _isNativeReflectConstruct(); + + return function _createSuperInternal() { + var Super = _getPrototypeOf(Derived), + result; + + if (hasNativeReflectConstruct) { + var NewTarget = _getPrototypeOf(this).constructor; + + result = Reflect.construct(Super, arguments, NewTarget); + } else { + result = Super.apply(this, arguments); + } + + return _possibleConstructorReturn(this, result); + }; + } + + function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); + } + + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + + function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; + } + + function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); + } + + function _iterableToArrayLimit(arr, i) { + var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; + + if (_i == null) return; + var _arr = []; + var _n = true; + var _d = false; + + var _s, _e; + + try { + for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; + } + + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + + var ua_parser = function () { + if (!Array.isArray) { + Array.isArray = function (arg) { + return Object.prototype.toString.call(arg) === '[object Array]'; + }; + } + function checkUserAgent(ua) { + var browser = {}; + var match = /(dolfin)[ \/]([\w.]+)/.exec(ua) || /(edge)[ \/]([\w.]+)/.exec(ua) || /(chrome)[ \/]([\w.]+)/.exec(ua) || /(tizen)[ \/]([\w.]+)/.exec(ua) || /(opera)(?:.*version)?[ \/]([\w.]+)/.exec(ua) || /(webkit)(?:.*version)?[ \/]([\w.]+)/.exec(ua) || /(msie) ([\w.]+)/.exec(ua) || ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+))?/.exec(ua) || ["", "unknown"]; + if (match[1] === "webkit") { + match = /(iphone|ipad|ipod)[\S\s]*os ([\w._\-]+) like/.exec(ua) || /(android)[ \/]([\w._\-]+);/.exec(ua) || [match[0], "safari", match[2]]; + } else if (match[1] === "mozilla") { + if (/trident/.test(ua)) { + match[1] = "msie"; + } else { + match[1] = "firefox"; + } + } else if (/polaris|natebrowser|([010|011|016|017|018|019]{3}\d{3,4}\d{4}$)/.test(ua)) { + match[1] = "polaris"; + } + browser[match[1]] = true; + browser.name = match[1]; + browser.version = setVersion(match[2]); + return browser; + } + function setVersion(versionString) { + var version = {}; + var versions = versionString ? versionString.split(/\.|-|_/) : ["0", "0", "0"]; + version.info = versions.join("."); + version.major = versions[0] || "0"; + version.minor = versions[1] || "0"; + version.patch = versions[2] || "0"; + return version; + } + function checkPlatform(ua) { + if (isTablet(ua)) { + return "tablet"; + } else if (isPc(ua)) { + return "pc"; + } else if (isMobile(ua)) { + return "mobile"; + } else { + return ""; + } + } + function isPc(ua) { + if (ua.match(/linux|windows (nt|98)|macintosh|cros/) && !ua.match(/android|mobile|polaris|lgtelecom|uzard|natebrowser|ktf;|skt;/)) { + return true; + } + return false; + } + function isTablet(ua) { + if (ua.match(/ipad/) || ua.match(/android/) && !ua.match(/mobi|mini|fennec/) || ua.match(/macintosh/) && window.navigator.maxTouchPoints > 1) { + return true; + } + return false; + } + function isMobile(ua) { + if (!!ua.match(/ip(hone|od)|android.+mobile|windows (ce|phone)|blackberry|bb10|symbian|webos|firefox.+fennec|opera m(ob|in)i|tizen.+mobile|polaris|iemobile|lgtelecom|nokia|sonyericsson|dolfin|uzard|natebrowser|ktf;|skt;/)) { + return true; + } else { + return false; + } + } + function checkOs(ua) { + var os = {}, + match = /(iphone|ipad|ipod)[\S\s]*os ([\w._\-]+) like/.exec(ua) || (/polaris|natebrowser|([010|011|016|017|018|019]{3}\d{3,4}\d{4}$)/.test(ua) ? ["", "polaris", "0.0.0"] : false) || /(windows)(?: nt | phone(?: os){0,1} | )([\w._\-]+)/.exec(ua) || /(android)[ \/]([\w._\-]+);/.exec(ua) || (/android/.test(ua) ? ["", "android", "0.0.0"] : false) || (/(windows)/.test(ua) ? ["", "windows", "0.0.0"] : false) || /(mac) os x ([\w._\-]+)/.exec(ua) || /(tizen)[ \/]([\w._\-]+);/.exec(ua) || (/(linux)/.test(ua) ? ["", "linux", "0.0.0"] : false) || (/webos/.test(ua) ? ["", "webos", "0.0.0"] : false) || /(cros)(?:\s[\w]+\s)([\d._\-]+)/.exec(ua) || /(bada)[ \/]([\w._\-]+)/.exec(ua) || (/bada/.test(ua) ? ["", "bada", "0.0.0"] : false) || (/(rim|blackberry|bb10)/.test(ua) ? ["", "blackberry", "0.0.0"] : false) || ["", "unknown", "0.0.0"]; + if (match[1] === "iphone" || match[1] === "ipad" || match[1] === "ipod") { + match[1] = "ios"; + } else if (match[1] === "windows" && match[2] === "98") { + match[2] = "0.98.0"; + } + if (match[1] === "mac" && typeof window !== 'undefined' && window.navigator.maxTouchPoints > 1) { + match[1] = "ios"; + } + if (match[1] === 'cros') { + match[1] = "chrome"; + } + os[match[1]] = true; + os.name = match[1]; + os.version = setVersion(match[2]); + return os; + } + var baseAppList = ['crios', 'fxios', 'daumapps']; + function checkApp(ua, customAppList) { + var app = {}, + match = null, + checkAppList = baseAppList; + if (Array.isArray(customAppList)) { + checkAppList = baseAppList.concat(customAppList); + } else if (typeof customAppList === 'string') { + checkAppList = baseAppList.concat([customAppList]); + } + for (var i = 0, len = checkAppList.length; i < len; i += 1) { + var appname = checkAppList[i]; + var regex = new RegExp('(' + appname + ')[ \\/]([\\w._\\-]+)'); + match = regex.exec(ua); + if (match) { + break; + } + } + if (!match) { + match = ["", ""]; + } + if (match[1]) { + app.isApp = true; + app.name = match[1]; + app.version = setVersion(match[2]); + } else { + app.isApp = false; + } + return app; + } + function getLowerUserAgent(ua) { + var lowerUa = ''; + if (!ua) { + if (typeof window !== 'undefined' && window.navigator && typeof window.navigator.userAgent === 'string') { + lowerUa = window.navigator.userAgent.toLowerCase(); + } else { + lowerUa = ''; + } + } else { + lowerUa = ua.toLowerCase(); + } + return lowerUa; + } + var userAgent = function userAgent(ua, customAppList) { + var lowerUa = getLowerUserAgent(ua); + return { + ua: lowerUa, + browser: checkUserAgent(lowerUa), + platform: checkPlatform(lowerUa), + os: checkOs(lowerUa), + app: checkApp(lowerUa, customAppList) + }; + }; + return userAgent; + }(); + var ua_parser$1 = ua_parser; + + var UA$1 = ua_parser$1(); + function getOrigin() { + var _location = location, + protocol = _location.protocol, + hostname = _location.hostname, + port = _location.port; + return "".concat(protocol, "//").concat(hostname).concat(port ? ':' + port : ''); + } + function getNavigator() { + return navigator; + } + function getUA() { + return UA$1; + } + + var ACCOUNT = "https://accounts.kakao.com"; + var AUTH = "https://kauth.kakao.com"; + var API$2 = "https://kapi.kakao.com"; + var SHARER_DOMAIN = "https://sharer.kakao.com"; + var PICKER_DOMAIN = "https://friend-picker.kakao.com"; + var APPS_DOMAIN = "https://apps.kakao.com"; + var CHANNEL = "https://pf.kakao.com"; + var STORY = "https://story.kakao.com"; + var STORY_POST_SCHEME = "storylink://posting"; + var REDIRECT_URI = "JS-SDK"; + var UNIVERSAL_LINK = "https://talk-apps.kakao.com"; + var TALK_LOGIN_SCHEME = "kakaokompassauth://authorize"; + var TALK_LOGIN_REDIRECT_URI = "https://kapi.kakao.com/cors/afterlogin.html"; + var TALK_INAPP_SCHEME = "kakaotalk://inappbrowser"; + var TALK_SYNCPLUGIN_SCHEME = "kakaotalk://bizplugin?plugin_id=6011263b74fc2b49c73a7298"; + var TALK_LINK_SCHEME = "kakaolink://send"; + var TALK_ANDROID_PACKAGE = "com.kakao.talk"; + var NAVI_SCHEME = "kakaonavi-sdk://navigate"; + var NAVI_FALLBACK_URL = "https://kakaonavi.kakao.com/launch/index.do"; + var DEVELOPERS = "https://developers.kakao.com"; + + var origin = getOrigin(); + var UA = getUA(); + var isTalkWebview = /KAKAOTALK/i.test(UA.ua); + var VERSION = "1.43.0".concat(''); + var navigator$1 = getNavigator(); + var KAKAO_AGENT = ["sdk/".concat(VERSION), 'os/javascript', 'sdk_type/javascript', "lang/".concat(navigator$1.userLanguage || navigator$1.language), "device/".concat(navigator$1.platform.replace(/ /g, '_')), "origin/".concat(encodeURIComponent(origin))].join(' '); + var URL = { + accountDomain: ACCOUNT, + authDomain: AUTH, + authorize: "".concat(AUTH, "/oauth/authorize"), + loginWidget: "".concat(AUTH, "/public/widget/login/kakaoLoginWidget.html"), + redirectUri: REDIRECT_URI, + universalKakaoLink: "".concat(UNIVERSAL_LINK, "/scheme/"), + talkLoginScheme: TALK_LOGIN_SCHEME, + talkLoginRedirectUri: TALK_LOGIN_REDIRECT_URI, + talkInappScheme: TALK_INAPP_SCHEME, + talkSyncpluginScheme: TALK_SYNCPLUGIN_SCHEME, + apiRemote: "".concat(API$2, "/cors/"), + sharerDomain: SHARER_DOMAIN, + pickerDomain: PICKER_DOMAIN, + appsDomain: APPS_DOMAIN, + talkLinkScheme: TALK_LINK_SCHEME, + talkAndroidPackage: TALK_ANDROID_PACKAGE, + channel: CHANNEL, + channelIcon: "".concat(DEVELOPERS, "/assets/img/about/logos"), + storyShare: "".concat(STORY, "/s/share"), + storyChannelFollow: "".concat(STORY, "/s/follow"), + storyIcon: "".concat(DEVELOPERS, "/sdk/js/resources/story/icon_small.png"), + storyPostScheme: STORY_POST_SCHEME, + naviScheme: NAVI_SCHEME, + naviFallback: NAVI_FALLBACK_URL + }; + var appKey$1 = null; + function getAppKey$1() { + return appKey$1; + } + function setAppKey(_appKey) { + appKey$1 = _appKey; + } + function KakaoError(message) { + Error.prototype.constructor.apply(this, arguments); + this.name = 'KakaoError'; + this.message = message; + } + KakaoError.prototype = new Error(); + function logDebug(obj) { + } + function makeModule(subModules) { + var module = extend.apply(void 0, [{ + cleanup: function cleanup() { + forEach(subModules, function (e) { + return e.cleanup && e.cleanup(); + }); + } + }].concat(_toConsumableArray(subModules))); + return module; + } + function emptyCleanups(cleanups) { + forEach(cleanups, function (fn) { + fn(); + }); + cleanups.length = 0; + } + function validate(target, validator, callerMsg) { + if (validator(target) === false) { + throw new KakaoError("Illegal argument for ".concat(callerMsg)); + } + } + function processRules() { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var rules = arguments.length > 1 ? arguments[1] : undefined; + var callerMsg = arguments.length > 2 ? arguments[2] : undefined; + if (!isObjectLike(params)) { + throw new Error('params should be an Object'); + } + if (isFunction(rules.before)) { + rules.before(params); + } + if (isFunction(rules.defaults)) { + defaults$1(params, rules.defaults(params)); + } else { + defaults$1(params, rules.defaults); + } + var _rules$required = rules.required, + required = _rules$required === void 0 ? {} : _rules$required, + _rules$optional = rules.optional, + optional = _rules$optional === void 0 ? {} : _rules$optional; + var missingRequiredKeys = difference(keys(required), keys(params)); + if (missingRequiredKeys.length > 0) { + throw new KakaoError("Missing required keys: ".concat(missingRequiredKeys.join(','), " at ").concat(callerMsg)); + } + var allowed = extend({}, required, optional); + var invalidKeys = difference(keys(params), keys(allowed)); + if (invalidKeys.length > 0) { + throw new KakaoError("Invalid parameter keys: ".concat(invalidKeys.join(','), " at ").concat(callerMsg)); + } + forEach(params, function (value, key) { + validate(value, allowed[key], "\"".concat(key, "\" in ").concat(callerMsg)); + }); + if (isFunction(rules.after)) { + rules.after(params); + } + return params; + } + function generateTxId() { + var tranId = Math.random().toString(36).slice(2) + getAppKey$1() + Date.now().toString(36); + return tranId.slice(0, 60); + } + function getInstallUrl(androidAppId, iOSAppId) { + if (UA.os.android) { + var referrer = JSON.stringify({ + appKey: appKey$1, + KA: KAKAO_AGENT + }); + return "market://details?id=".concat(androidAppId, "&referrer=").concat(referrer); + } else if (UA.os.ios) { + return "https://itunes.apple.com/app/id".concat(iOSAppId); + } else { + return location.href; + } + } + function guardCreateEasyXDM(createEasyXDM) { + try { + return createEasyXDM(); + } catch (e) { + if (e instanceof TypeError) { + throw new KakaoError('kakao.js should be loaded from a web server'); + } else { + throw new KakaoError("EasyXDM - ".concat(e.message)); + } + } + } + var popupWindows = {}; + function windowOpen(url, name, feature) { + var popupWindow = popupWindows[name]; + if (popupWindow && popupWindow.close && !popupWindow.closed) { + popupWindow.close(); + } + popupWindows[name] = window.open(url, name, feature); + return popupWindows[name]; + } + function applyAttributes(settings, container$, mapper) { + forEach(mapper, function (value, key) { + var attr = container$.getAttribute(value); + if (attr !== null) { + settings[key] = attr === 'true' || attr === 'false' ? attr === 'true' : attr; + } + }); + } + function createHiddenIframe(id, src, cleanups) { + var iframe = document.createElement('iframe'); + iframe.id = iframe.name = id; + iframe.src = src; + iframe.setAttribute('style', 'border:none; width:0; height:0; display:none; overflow:hidden;'); + document.body.appendChild(iframe); + cleanups.push(function () { + document.body.removeChild(iframe); + }); + } + function addMessageEvent(settings, requestDomain, cleanups) { + var callback = function callback(_ref) { + var data = _ref.data, + origin = _ref.origin; + if (data && origin === requestDomain) { + var resp = JSON.parse(data); + if (resp.code) { + settings.fail(resp); + } else { + settings.success(resp); + } + settings.always(resp); + removeEvent(window, 'message', callback); + } + }; + addEvent(window, 'message', callback); + cleanups.push(function () { + removeEvent(window, 'message', callback); + }); + } + function openPopupAndSubmitForm(params, popupParams) { + var url = popupParams.url, + popupName = popupParams.popupName, + popupFeatures = popupParams.popupFeatures; + var popup = UA.browser.msie ? {} : windowOpen('', popupName, popupFeatures); + if (popup.focus) { + popup.focus(); + } + createAndSubmitForm(params, url, popupName); + return popup; + } + function createAndSubmitForm(params, url) { + var popupName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; + var form = document.createElement('form'); + form.setAttribute('accept-charset', 'utf-8'); + form.setAttribute('method', 'post'); + form.setAttribute('action', url); + form.setAttribute('target', popupName); + form.setAttribute('style', 'display:none'); + forEach(params, function (value, key) { + var input = document.createElement('input'); + input.type = 'hidden'; + input.name = key; + input.value = isString(value) ? value : JSON.stringify(value); + form.appendChild(input); + }); + document.body.appendChild(form); + form.submit(); + document.body.removeChild(form); + } + + var eventObserverMap = {}; + function subscribe(eventName, observer) { + eventObserverMap[eventName] = eventObserverMap[eventName] || []; + eventObserverMap[eventName].push(observer); + } + function unsubscribe(eventName, observer) { + var observers = eventObserverMap[eventName]; + for (var i = 0; i < observers.length; i++) { + if (observers[i] === observer) { + observers.splice(i, 1); + return; + } + } + } + function dispatch(eventName) { + forEach(eventObserverMap[eventName], function (observer) { + observer(); + }); + } + var eventObserver = { + subscribe: subscribe, + unsubscribe: unsubscribe, + dispatch: dispatch + }; + + var Poller = function () { + function Poller(interval, maxCount) { + _classCallCheck(this, Poller); + this._interval = interval; + this._maxCount = maxCount; + this._count = 0; + this._stopped = false; + this._timeout = null; + } + _createClass(Poller, [{ + key: "start", + value: function start(pollFunc, failFunc) { + if (this._timeout !== null) { + this.stop(); + } + this._count = 0; + this._stopped = false; + this._doPolling(pollFunc, failFunc); + } + }, { + key: "_doPolling", + value: function _doPolling(pollFunc, failFunc) { + var _this = this; + if (this._stopped) return; + this._timeout = setTimeout(function () { + if (++_this._count > _this._maxCount) { + failFunc(); + } else { + pollFunc(); + _this._doPolling(pollFunc, failFunc); + } + }, this._interval); + } + }, { + key: "stop", + value: function stop() { + this._stopped = true; + clearTimeout(this._timeout); + this._timeout = null; + } + }]); + return Poller; + }(); + + var defaultCallbacks = { + success: emptyFunc, + fail: emptyFunc, + always: emptyFunc + }; + var loginDefaultSettings = _objectSpread2({ + throughTalk: true, + persistAccessToken: true, + persistRefreshToken: false + }, defaultCallbacks); + var loginCommonSettings = { + success: isFunction, + fail: isFunction, + always: isFunction, + persistAccessToken: isBoolean, + persistRefreshToken: isBoolean, + approvalType: isOneOf(['project']), + scope: isString, + throughTalk: isBoolean, + plusFriendPublicId: isString, + channelPublicId: isString, + serviceTerms: isString, + redirectUri: isString, + state: isString, + deviceType: isOneOf(['watch', 'tv']), + nonce: isString + }; + var shippingAddressSettings = { + optional: { + success: isFunction, + fail: isFunction, + always: isFunction, + close: isFunction, + returnUrl: isString, + forceMobileLayout: isBoolean, + enableBackButton: isBoolean + }, + defaults: _objectSpread2(_objectSpread2({}, defaultCallbacks), {}, { + close: emptyFunc, + forceMobileLayout: false, + enableBackButton: true + }) + }; + var rules$8 = { + createLoginButton: { + required: { + container: passesOneOf([isElement, isString]) + }, + optional: _objectSpread2({ + lang: isOneOf(['en', 'kr']), + size: isOneOf(['small', 'medium', 'large']) + }, loginCommonSettings), + defaults: _objectSpread2({ + lang: 'kr', + size: 'medium' + }, loginDefaultSettings) + }, + login: { + optional: loginCommonSettings, + defaults: loginDefaultSettings + }, + authorize: { + optional: { + redirectUri: isString, + approvalType: isOneOf(['project']), + scope: isString, + throughTalk: isBoolean, + plusFriendPublicId: isString, + channelPublicId: isString, + serviceTerms: isString, + isPopup: isBoolean, + state: isString, + autoLogin: isBoolean, + deviceType: isOneOf(['watch', 'tv']), + prompts: isString, + reauthenticate: isBoolean, + throughSyncplugin: isBoolean, + loginHint: isString, + nonce: isString, + success: isFunction, + fail: isFunction, + always: isFunction + }, + defaults: _objectSpread2({ + throughTalk: true, + isPopup: false, + reauthenticate: false, + throughSyncplugin: true + }, defaultCallbacks) + }, + autoLogin: { + optional: { + success: isFunction, + fail: isFunction, + always: isFunction + }, + defaults: defaultCallbacks + }, + issueAccessToken: { + required: { + code: isString, + redirectUri: isString + }, + optional: { + success: isFunction, + fail: isFunction, + always: isFunction + }, + defaults: defaultCallbacks + }, + selectShippingAddress: shippingAddressSettings, + createShippingAddress: shippingAddressSettings, + updateShippingAddress: _objectSpread2({ + required: { + addressId: isInteger + } + }, shippingAddressSettings) + }; + + function openLoginPopup(url) { + var LOGIN_POPUP_NAME = '_blank'; + return windowOpen(url, LOGIN_POPUP_NAME, getLoginPopupFeatures()); + } + function getLoginPopupFeatures() { + var popupWidth = 480; + var popupHeight = 700; + var sLeft = window.screenLeft ? window.screenLeft : window.screenX ? window.screenX : 0; + var sTop = window.screenTop ? window.screenTop : window.screenY ? window.screenY : 0; + var popupLeft = screen.width / 2 - popupWidth / 2 + sLeft; + var popupTop = screen.height / 2 - popupHeight / 2 + sTop; + return ["width=".concat(popupWidth), "height=".concat(popupHeight), "left=".concat(popupLeft), "top=".concat(popupTop), 'scrollbars=yes', 'resizable=1'].join(','); + } + function makeAuthUrl(params) { + return "".concat(URL.authorize, "?").concat(buildQueryString(params)); + } + function makeAuthParams(settings) { + var params = { + client_id: getAppKey$1() + }; + if (settings.approvalType) { + params['approval_type'] = settings.approvalType; + } + if (settings.scope) { + params['scope'] = settings.scope; + } + if (settings.state) { + params['state'] = settings.state; + } + return params; + } + function makeAuthExtraParams(settings) { + var params = {}; + if (settings.plusFriendPublicId) { + params['extra.plus_friend_public_id'] = settings.plusFriendPublicId; + } + if (settings.channelPublicId) { + params['channel_public_id'] = settings.channelPublicId; + } + if (settings.serviceTerms) { + params['extra.service_terms'] = settings.serviceTerms; + } + if (settings.autoLogin) { + params['prompt'] = 'none'; + } + if (settings.reauthenticate) { + params['prompt'] = 'login'; + } + if (settings.prompts) { + params['prompt'] = settings.prompts; + } + if (settings.deviceType) { + params['device_type'] = settings.deviceType; + } + if (settings.loginHint) { + params['login_hint'] = settings.loginHint; + } + if (settings.nonce) { + params['nonce'] = settings.nonce; + } + return params; + } + function makeBaseAuthParams(settings) { + return _objectSpread2(_objectSpread2(_objectSpread2({}, makeAuthParams(settings)), makeAuthExtraParams(settings)), {}, { + redirect_uri: settings.redirectUri || URL.redirectUri, + response_type: 'code', + auth_tran_id: generateTxId() + }); + } + function makeWebAuthParams(settings, baseAuthParams) { + return _objectSpread2(_objectSpread2({}, baseAuthParams), {}, { + ka: KAKAO_AGENT, + is_popup: settings.isPopup + }); + } + function makeCodeUrl(authTranId) { + var params = buildQueryString({ + client_id: getAppKey$1(), + auth_tran_id: authTranId, + ka: KAKAO_AGENT + }); + return "".concat(URL.authDomain, "/apiweb/code.json?").concat(params); + } + function runAuthCallback(settings, resp) { + if (resp.error) { + settings.fail(resp); + } else { + settings.success(resp); + } + settings.always(resp); + } + + function checkAuthorize(url, onResponse) { + request$7({ + method: 'GET', + url: url + }, onResponse); + } + function request$7(req, onResponse) { + var url = req.url, + method = req.method, + data = req.data; + var xhr = new XMLHttpRequest(); + if (typeof xhr.withCredentials !== 'undefined') { + xhr.open(method, url); + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + xhr.onreadystatechange = function () { + if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { + onResponse(xhr); + } + }; + xhr.send(data); + } else { + var xdr = new XDomainRequest(); + xdr.open(method.toLowerCase(), url); + xdr.onload = function () { + onResponse({ + status: xdr.responseText ? 200 : 'error', + response: xdr.responseText + }); + }; + setTimeout(function () { + xdr.send(data); + }, 0); + } + } + + var poller$2 = new Poller(1000, 600); + function authorize(settings) { + settings = processRules(settings, rules$8.authorize, 'Auth.authorize'); + if ((settings.autoLogin || includePrompts(settings.prompts, 'none')) && !isTalkWebview) { + handleResponse(settings, { + error: 'auto_login', + error_description: 'NOT_SUPPORTED_BROWSER' + }); + return false; + } + if (isTalkChannelHome(settings) && isSupportImplicitLogin(settings)) { + implicitLogin(settings).then(function (isNeedRetry) { + if (isNeedRetry) { + doAuthorize(settings); + } + }); + } else { + doAuthorize(settings); + } + eventObserver.dispatch('LOGIN_START'); + } + function doAuthorize(settings) { + var baseAuthParams = makeBaseAuthParams(settings); + var webAuthParams = makeWebAuthParams(settings, baseAuthParams); + var isEasyLogin = isSupportEasyLogin(settings); + var isSupportSyncplugin = isTalkChannelHome(settings); + var webAuthUrl = makeAuthUrl(webAuthParams); + var loginUrl = isEasyLogin ? makeEasyLoginUrl(settings, baseAuthParams, webAuthUrl) : webAuthUrl; + var popup = null; + if (isSupportSyncplugin) { + executeSyncpluginScheme(webAuthParams); + } else if (settings.isPopup) { + popup = openLoginPopup(loginUrl); + } else { + location.href = loginUrl; + } + if (isEasyLogin || isSupportSyncplugin || settings.isPopup) { + var codeUrl = makeCodeUrl(baseAuthParams.auth_tran_id); + poller$2.start(function () { + checkAuthorize(codeUrl, function (httpResp) { + var isValidResp = onResponse(settings, httpResp); + if (isValidResp) { + poller$2.stop(); + popup && popup.close && popup.close(); + } + if (!isEasyLogin && popup && popup.closed) { + poller$2.stop(); + } + }); + }, function () { + handleResponse(settings, { + error: 'timeout', + error_description: 'LOGIN_TIMEOUT' + }); + }); + } + } + function isSupportEasyLogin(settings) { + var isNotInAppBrowser = UA.os.ios || UA.os.android ? !isTalkWebview : false; + var isAccountLogin = settings.reauthenticate === true || includePrompts(settings.prompts, 'login'); + var isAutoLogin = settings.autoLogin === true || includePrompts(settings.prompts, 'none'); + return !(UA.os.android && /instagram|fb_iab/g.test(UA.ua)) && isNotInAppBrowser && !isAccountLogin && settings.throughTalk === true && !isAutoLogin; + } + function includePrompts(prompts, option) { + return !!(prompts && prompts.indexOf(option) > -1); + } + function onResponse(settings, httpResp) { + if (httpResp.status === 200 && httpResp.response) { + var resp = JSON.parse(httpResp.response); + if (resp.status === 'ok' && resp.code) { + handleResponse(settings, { + code: resp.code + }); + return true; + } else if (resp.status === 'error' && resp.error_code && resp.error_code !== '300') { + handleResponse(settings, { + error: resp.error, + error_description: resp.error_description + }); + if (resp.error_code === '700') { + location.href = "".concat(URL.authDomain, "/error/network"); + } + return true; + } + } + return false; + } + function handleResponse(settings, respObj) { + if (settings.state) { + respObj.state = settings.state; + } + if (settings.redirectUri) { + var delimiter = settings.redirectUri.indexOf('?') > -1 ? '&' : '?'; + location.href = settings.redirectUri + delimiter + buildQueryString(respObj); + } else { + runAuthCallback(settings, respObj); + } + } + function makeEasyLoginUrl(settings, baseAuthParams, fallbackUrl) { + var easyLoginAuthParams = _objectSpread2(_objectSpread2({}, baseAuthParams), {}, { + is_popup: true + }); + var getAndroidLoginIntent = function getAndroidLoginIntent() { + return ['intent:#Intent', 'action=com.kakao.talk.intent.action.CAPRI_LOGGED_IN_ACTIVITY', 'launchFlags=0x08880000', "S.com.kakao.sdk.talk.appKey=".concat(getAppKey$1()), "S.com.kakao.sdk.talk.redirectUri=".concat(easyLoginAuthParams.redirect_uri), "S.com.kakao.sdk.talk.kaHeader=".concat(KAKAO_AGENT), "S.com.kakao.sdk.talk.extraparams=".concat(encodeURIComponent(JSON.stringify(easyLoginAuthParams)))].concat(_toConsumableArray(settings.state ? ["S.com.kakao.sdk.talk.state=".concat(settings.state)] : []), ["S.browser_fallback_url=".concat(encodeURIComponent(fallbackUrl)), 'end;']).join(';'); + }; + var getIosLoginUniversalLink = function getIosLoginUniversalLink() { + var iosLoginUrl = makeAuthUrl(easyLoginAuthParams); + var iosFallbackUrl = settings.isPopup ? iosLoginUrl : fallbackUrl; + var iosEasyLoginUrl = "".concat(iosLoginUrl, "&ka=").concat(encodeURIComponent(KAKAO_AGENT)); + var talkWebviewUrl = "".concat(URL.talkInappScheme, "?url=").concat(encodeURIComponent(iosEasyLoginUrl)); + return "".concat(URL.universalKakaoLink).concat(encodeURIComponent(talkWebviewUrl), "&web=").concat(encodeURIComponent(iosFallbackUrl)); + }; + return UA.os.android ? getAndroidLoginIntent() : getIosLoginUniversalLink(); + } + function isTalkChannelHome(settings) { + return settings.throughSyncplugin && isTalkWebview && /ch-home/i.test(UA.ua); + } + function executeSyncpluginScheme(webAuthParams) { + var bizpluginParams = _objectSpread2(_objectSpread2({}, webAuthParams), {}, { + is_popup: true, + approval_window_type: 'v4_bizplugin' + }); + var query = encodeURIComponent(buildQueryString(bizpluginParams)); + location.href = "".concat(URL.talkSyncpluginScheme, "&query=").concat(query); + } + function isSupportImplicitLogin(settings) { + return settings.isPopup === false && !includePrompts(settings.prompts, 'cert') && window.kakaoweb && typeof window.kakaoweb.reqSignInLocation === 'function'; + } + function implicitLogin(settings) { + var baseAuthParams = makeBaseAuthParams(settings); + var webAuthParams = makeWebAuthParams(settings, baseAuthParams); + var implicitLoginParams = buildQueryString(_objectSpread2(_objectSpread2({}, webAuthParams), {}, { + is_popup: false, + prompt: 'none' + })); + return kakaoweb.reqSignInLocation(implicitLoginParams).then(function (location) { + var parsed = Object.fromEntries(new window.URL(location).searchParams); + if (parsed.error === 'consent_required' && !includePrompts(settings.prompts, 'none') || parsed.error === 'interaction_required') { + return true; + } + handleResponse(settings, _objectSpread2(_objectSpread2({}, parsed.code && { + code: parsed.code + }), parsed.error && { + error: parsed.error, + error_description: parsed.error_description + })); + return false; + })["catch"](function (error) { + return false; + }); + } + + var oauth = /*#__PURE__*/Object.freeze({ + __proto__: null, + authorize: authorize + }); + + function isAndroidWebView() { + return UA.os.android && (olderAndroidWebView() || oldAndroidWebView() || newerAndroidWebView()); + } + function olderAndroidWebView() { + return UA.os.version.major == 2 && /Version\/\d+.\d+|/i.test(UA.ua); + } + function oldAndroidWebView() { + return UA.os.version.major == 4 && UA.os.version.minor < 4 && /Version\/\d+.\d+|/i.test(UA.ua); + } + function newerAndroidWebView() { + return /Version\/\d+\.\d+/i.test(UA.ua) && (/Chrome\/\d+\.\d+\.\d+\.\d+ Mobile/i.test(UA.ua) || /; wv\)/i.test(UA.ua)); + } + function isIOSKakaoTalkWebView() { + return UA.os.ios && isTalkWebview; + } + function isAndroidKakaoTalkWebView() { + return UA.os.android && isTalkWebview; + } + function isNewerAndroidKakaoTalkWebView() { + return UA.os.android && isTalkWebview && UA.browser.chrome && UA.browser.version.major >= 71; + } + + function commonjsRequire(path) { + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); + } + + var es6Promise = {exports: {}}; + + (function (module, exports) { + (function (global, factory) { + module.exports = factory() ; + })(commonjsGlobal, function () { + function objectOrFunction(x) { + var type = typeof x; + return x !== null && (type === 'object' || type === 'function'); + } + function isFunction(x) { + return typeof x === 'function'; + } + var _isArray = void 0; + if (Array.isArray) { + _isArray = Array.isArray; + } else { + _isArray = function (x) { + return Object.prototype.toString.call(x) === '[object Array]'; + }; + } + var isArray = _isArray; + var len = 0; + var vertxNext = void 0; + var customSchedulerFn = void 0; + var asap = function asap(callback, arg) { + queue[len] = callback; + queue[len + 1] = arg; + len += 2; + if (len === 2) { + if (customSchedulerFn) { + customSchedulerFn(flush); + } else { + scheduleFlush(); + } + } + }; + function setScheduler(scheduleFn) { + customSchedulerFn = scheduleFn; + } + function setAsap(asapFn) { + asap = asapFn; + } + var browserWindow = typeof window !== 'undefined' ? window : undefined; + var browserGlobal = browserWindow || {}; + var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver; + var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; + var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined'; + function useNextTick() { + return function () { + return process.nextTick(flush); + }; + } + function useVertxTimer() { + if (typeof vertxNext !== 'undefined') { + return function () { + vertxNext(flush); + }; + } + return useSetTimeout(); + } + function useMutationObserver() { + var iterations = 0; + var observer = new BrowserMutationObserver(flush); + var node = document.createTextNode(''); + observer.observe(node, { + characterData: true + }); + return function () { + node.data = iterations = ++iterations % 2; + }; + } + function useMessageChannel() { + var channel = new MessageChannel(); + channel.port1.onmessage = flush; + return function () { + return channel.port2.postMessage(0); + }; + } + function useSetTimeout() { + var globalSetTimeout = setTimeout; + return function () { + return globalSetTimeout(flush, 1); + }; + } + var queue = new Array(1000); + function flush() { + for (var i = 0; i < len; i += 2) { + var callback = queue[i]; + var arg = queue[i + 1]; + callback(arg); + queue[i] = undefined; + queue[i + 1] = undefined; + } + len = 0; + } + function attemptVertx() { + try { + var vertx = Function('return this')().require('vertx'); + vertxNext = vertx.runOnLoop || vertx.runOnContext; + return useVertxTimer(); + } catch (e) { + return useSetTimeout(); + } + } + var scheduleFlush = void 0; + if (isNode) { + scheduleFlush = useNextTick(); + } else if (BrowserMutationObserver) { + scheduleFlush = useMutationObserver(); + } else if (isWorker) { + scheduleFlush = useMessageChannel(); + } else if (browserWindow === undefined && typeof commonjsRequire === 'function') { + scheduleFlush = attemptVertx(); + } else { + scheduleFlush = useSetTimeout(); + } + function then(onFulfillment, onRejection) { + var parent = this; + var child = new this.constructor(noop); + if (child[PROMISE_ID] === undefined) { + makePromise(child); + } + var _state = parent._state; + if (_state) { + var callback = arguments[_state - 1]; + asap(function () { + return invokeCallback(_state, child, callback, parent._result); + }); + } else { + subscribe(parent, child, onFulfillment, onRejection); + } + return child; + } + function resolve$1(object) { + var Constructor = this; + if (object && typeof object === 'object' && object.constructor === Constructor) { + return object; + } + var promise = new Constructor(noop); + resolve(promise, object); + return promise; + } + var PROMISE_ID = Math.random().toString(36).substring(2); + function noop() {} + var PENDING = void 0; + var FULFILLED = 1; + var REJECTED = 2; + function selfFulfillment() { + return new TypeError("You cannot resolve a promise with itself"); + } + function cannotReturnOwn() { + return new TypeError('A promises callback cannot return that same promise.'); + } + function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) { + try { + then$$1.call(value, fulfillmentHandler, rejectionHandler); + } catch (e) { + return e; + } + } + function handleForeignThenable(promise, thenable, then$$1) { + asap(function (promise) { + var sealed = false; + var error = tryThen(then$$1, thenable, function (value) { + if (sealed) { + return; + } + sealed = true; + if (thenable !== value) { + resolve(promise, value); + } else { + fulfill(promise, value); + } + }, function (reason) { + if (sealed) { + return; + } + sealed = true; + reject(promise, reason); + }, 'Settle: ' + (promise._label || ' unknown promise')); + if (!sealed && error) { + sealed = true; + reject(promise, error); + } + }, promise); + } + function handleOwnThenable(promise, thenable) { + if (thenable._state === FULFILLED) { + fulfill(promise, thenable._result); + } else if (thenable._state === REJECTED) { + reject(promise, thenable._result); + } else { + subscribe(thenable, undefined, function (value) { + return resolve(promise, value); + }, function (reason) { + return reject(promise, reason); + }); + } + } + function handleMaybeThenable(promise, maybeThenable, then$$1) { + if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) { + handleOwnThenable(promise, maybeThenable); + } else { + if (then$$1 === undefined) { + fulfill(promise, maybeThenable); + } else if (isFunction(then$$1)) { + handleForeignThenable(promise, maybeThenable, then$$1); + } else { + fulfill(promise, maybeThenable); + } + } + } + function resolve(promise, value) { + if (promise === value) { + reject(promise, selfFulfillment()); + } else if (objectOrFunction(value)) { + var then$$1 = void 0; + try { + then$$1 = value.then; + } catch (error) { + reject(promise, error); + return; + } + handleMaybeThenable(promise, value, then$$1); + } else { + fulfill(promise, value); + } + } + function publishRejection(promise) { + if (promise._onerror) { + promise._onerror(promise._result); + } + publish(promise); + } + function fulfill(promise, value) { + if (promise._state !== PENDING) { + return; + } + promise._result = value; + promise._state = FULFILLED; + if (promise._subscribers.length !== 0) { + asap(publish, promise); + } + } + function reject(promise, reason) { + if (promise._state !== PENDING) { + return; + } + promise._state = REJECTED; + promise._result = reason; + asap(publishRejection, promise); + } + function subscribe(parent, child, onFulfillment, onRejection) { + var _subscribers = parent._subscribers; + var length = _subscribers.length; + parent._onerror = null; + _subscribers[length] = child; + _subscribers[length + FULFILLED] = onFulfillment; + _subscribers[length + REJECTED] = onRejection; + if (length === 0 && parent._state) { + asap(publish, parent); + } + } + function publish(promise) { + var subscribers = promise._subscribers; + var settled = promise._state; + if (subscribers.length === 0) { + return; + } + var child = void 0, + callback = void 0, + detail = promise._result; + for (var i = 0; i < subscribers.length; i += 3) { + child = subscribers[i]; + callback = subscribers[i + settled]; + if (child) { + invokeCallback(settled, child, callback, detail); + } else { + callback(detail); + } + } + promise._subscribers.length = 0; + } + function invokeCallback(settled, promise, callback, detail) { + var hasCallback = isFunction(callback), + value = void 0, + error = void 0, + succeeded = true; + if (hasCallback) { + try { + value = callback(detail); + } catch (e) { + succeeded = false; + error = e; + } + if (promise === value) { + reject(promise, cannotReturnOwn()); + return; + } + } else { + value = detail; + } + if (promise._state !== PENDING) ; else if (hasCallback && succeeded) { + resolve(promise, value); + } else if (succeeded === false) { + reject(promise, error); + } else if (settled === FULFILLED) { + fulfill(promise, value); + } else if (settled === REJECTED) { + reject(promise, value); + } + } + function initializePromise(promise, resolver) { + try { + resolver(function resolvePromise(value) { + resolve(promise, value); + }, function rejectPromise(reason) { + reject(promise, reason); + }); + } catch (e) { + reject(promise, e); + } + } + var id = 0; + function nextId() { + return id++; + } + function makePromise(promise) { + promise[PROMISE_ID] = id++; + promise._state = undefined; + promise._result = undefined; + promise._subscribers = []; + } + function validationError() { + return new Error('Array Methods must be provided an Array'); + } + var Enumerator = function () { + function Enumerator(Constructor, input) { + this._instanceConstructor = Constructor; + this.promise = new Constructor(noop); + if (!this.promise[PROMISE_ID]) { + makePromise(this.promise); + } + if (isArray(input)) { + this.length = input.length; + this._remaining = input.length; + this._result = new Array(this.length); + if (this.length === 0) { + fulfill(this.promise, this._result); + } else { + this.length = this.length || 0; + this._enumerate(input); + if (this._remaining === 0) { + fulfill(this.promise, this._result); + } + } + } else { + reject(this.promise, validationError()); + } + } + Enumerator.prototype._enumerate = function _enumerate(input) { + for (var i = 0; this._state === PENDING && i < input.length; i++) { + this._eachEntry(input[i], i); + } + }; + Enumerator.prototype._eachEntry = function _eachEntry(entry, i) { + var c = this._instanceConstructor; + var resolve$$1 = c.resolve; + if (resolve$$1 === resolve$1) { + var _then = void 0; + var error = void 0; + var didError = false; + try { + _then = entry.then; + } catch (e) { + didError = true; + error = e; + } + if (_then === then && entry._state !== PENDING) { + this._settledAt(entry._state, i, entry._result); + } else if (typeof _then !== 'function') { + this._remaining--; + this._result[i] = entry; + } else if (c === Promise$1) { + var promise = new c(noop); + if (didError) { + reject(promise, error); + } else { + handleMaybeThenable(promise, entry, _then); + } + this._willSettleAt(promise, i); + } else { + this._willSettleAt(new c(function (resolve$$1) { + return resolve$$1(entry); + }), i); + } + } else { + this._willSettleAt(resolve$$1(entry), i); + } + }; + Enumerator.prototype._settledAt = function _settledAt(state, i, value) { + var promise = this.promise; + if (promise._state === PENDING) { + this._remaining--; + if (state === REJECTED) { + reject(promise, value); + } else { + this._result[i] = value; + } + } + if (this._remaining === 0) { + fulfill(promise, this._result); + } + }; + Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) { + var enumerator = this; + subscribe(promise, undefined, function (value) { + return enumerator._settledAt(FULFILLED, i, value); + }, function (reason) { + return enumerator._settledAt(REJECTED, i, reason); + }); + }; + return Enumerator; + }(); + function all(entries) { + return new Enumerator(this, entries).promise; + } + function race(entries) { + var Constructor = this; + if (!isArray(entries)) { + return new Constructor(function (_, reject) { + return reject(new TypeError('You must pass an array to race.')); + }); + } else { + return new Constructor(function (resolve, reject) { + var length = entries.length; + for (var i = 0; i < length; i++) { + Constructor.resolve(entries[i]).then(resolve, reject); + } + }); + } + } + function reject$1(reason) { + var Constructor = this; + var promise = new Constructor(noop); + reject(promise, reason); + return promise; + } + function needsResolver() { + throw new TypeError('You must pass a resolver function as the first argument to the promise constructor'); + } + function needsNew() { + throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."); + } + var Promise$1 = function () { + function Promise(resolver) { + this[PROMISE_ID] = nextId(); + this._result = this._state = undefined; + this._subscribers = []; + if (noop !== resolver) { + typeof resolver !== 'function' && needsResolver(); + this instanceof Promise ? initializePromise(this, resolver) : needsNew(); + } + } + Promise.prototype.catch = function _catch(onRejection) { + return this.then(null, onRejection); + }; + Promise.prototype.finally = function _finally(callback) { + var promise = this; + var constructor = promise.constructor; + if (isFunction(callback)) { + return promise.then(function (value) { + return constructor.resolve(callback()).then(function () { + return value; + }); + }, function (reason) { + return constructor.resolve(callback()).then(function () { + throw reason; + }); + }); + } + return promise.then(callback, callback); + }; + return Promise; + }(); + Promise$1.prototype.then = then; + Promise$1.all = all; + Promise$1.race = race; + Promise$1.resolve = resolve$1; + Promise$1.reject = reject$1; + Promise$1._setScheduler = setScheduler; + Promise$1._setAsap = setAsap; + Promise$1._asap = asap; + function polyfill() { + var local = void 0; + if (typeof commonjsGlobal !== 'undefined') { + local = commonjsGlobal; + } else if (typeof self !== 'undefined') { + local = self; + } else { + try { + local = Function('return this')(); + } catch (e) { + throw new Error('polyfill failed because global object is unavailable in this environment'); + } + } + var P = local.Promise; + if (P) { + var promiseToString = null; + try { + promiseToString = Object.prototype.toString.call(P.resolve()); + } catch (e) { + } + if (promiseToString === '[object Promise]' && !P.cast) { + return; + } + } + local.Promise = Promise$1; + } + Promise$1.polyfill = polyfill; + Promise$1.Promise = Promise$1; + return Promise$1; + }); + })(es6Promise); + + var easyXDM_1 = function () { + (function (O, d, q, L, l, I) { + var b = this || O; + var o = Math.floor(Math.random() * 10000); + var r = Function.prototype; + var R = /^((http.?:)\/\/([^:\/\s]+)(:\d+)*)/; + var S = /[\-\w]+\/\.\.\//; + var G = /([^:])\/\//g; + var J = ""; + var p = {}; + var N = O.easyXDM; + var V = "easyXDM_"; + var F; + var z = false; + var j; + var i; + function D(Y, aa) { + var Z = _typeof(Y[aa]); + return Z == "function" || !!(Z == "object" && Y[aa]) || Z == "unknown"; + } + function v(Y, Z) { + return !!(_typeof(Y[Z]) == "object" && Y[Z]); + } + function s(Y) { + return Object.prototype.toString.call(Y) === "[object Array]"; + } + function c() { + var aa = "Shockwave Flash", + ae = "application/x-shockwave-flash"; + if (!u(navigator.plugins) && _typeof(navigator.plugins[aa]) == "object") { + var ac = navigator.plugins[aa].description; + if (ac && !u(navigator.mimeTypes) && navigator.mimeTypes[ae] && navigator.mimeTypes[ae].enabledPlugin) { + j = ac.match(/\d+/g); + } + } + if (!j) { + var Z; + try { + Z = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + j = Array.prototype.slice.call(Z.GetVariable("$version").match(/(\d+),(\d+),(\d+),(\d+)/), 1); + Z = null; + } catch (ad) {} + } + if (!j) { + return false; + } + var Y = parseInt(j[0], 10), + ab = parseInt(j[1], 10); + i = Y > 9 && ab > 0; + return true; + } + var w, y; + if (D(O, "addEventListener")) { + w = function w(aa, Y, Z) { + aa.addEventListener(Y, Z, false); + }; + y = function y(aa, Y, Z) { + aa.removeEventListener(Y, Z, false); + }; + } else { + if (D(O, "attachEvent")) { + w = function w(Y, aa, Z) { + Y.attachEvent("on" + aa, Z); + }; + y = function y(Y, aa, Z) { + Y.detachEvent("on" + aa, Z); + }; + } else { + throw new Error("Browser not supported"); + } + } + var X = false, + K = [], + M; + if ("readyState" in d) { + M = d.readyState; + X = M == "complete" || ~navigator.userAgent.indexOf("AppleWebKit/") && (M == "loaded" || M == "interactive"); + } else { + X = !!d.body; + } + function t() { + if (X) { + return; + } + X = true; + for (var Y = 0; Y < K.length; Y++) { + K[Y](); + } + K.length = 0; + } + if (!X) { + if (D(O, "addEventListener")) { + w(d, "DOMContentLoaded", t); + } else { + w(d, "readystatechange", function () { + if (d.readyState == "complete") { + t(); + } + }); + if (d.documentElement.doScroll && O === top) { + var h = function h() { + if (X) { + return; + } + try { + d.documentElement.doScroll("left"); + } catch (Y) { + L(h, 1); + return; + } + t(); + }; + h(); + } + } + w(O, "load", t); + } + function H(Z, Y) { + if (X) { + Z.call(Y); + return; + } + K.push(function () { + Z.call(Y); + }); + } + function n() { + var aa = parent; + if (J !== "") { + for (var Y = 0, Z = J.split("."); Y < Z.length; Y++) { + aa = aa[Z[Y]]; + } + } + return aa.easyXDM; + } + function f(Y) { + O.easyXDM = N; + J = Y; + if (J) { + V = "easyXDM_" + J.replace(".", "_") + "_"; + } + return p; + } + function A(Y) { + return Y.match(R)[3]; + } + function g(Y) { + return Y.match(R)[4] || ""; + } + function k(aa) { + if (aa.indexOf("file://") >= 0) { + return "file://"; + } + var Y = aa.toLowerCase().match(R); + if (!Y) { + return ""; + } + var ab = Y[2], + ac = Y[3], + Z = Y[4] || ""; + if (ab == "http:" && Z == ":80" || ab == "https:" && Z == ":443") { + Z = ""; + } + return ab + "//" + ac + Z; + } + function C(Y) { + Y = Y.replace(G, "$1/"); + if (!Y.match(/^(http||https):\/\//)) { + var Z = Y.substring(0, 1) === "/" ? "" : q.pathname; + if (Z.substring(Z.length - 1) !== "/") { + Z = Z.substring(0, Z.lastIndexOf("/") + 1); + } + Y = q.protocol + "//" + q.host + Z + Y; + } + while (S.test(Y)) { + Y = Y.replace(S, ""); + } + return Y; + } + function Q(Y, ab) { + var ad = "", + aa = Y.indexOf("#"); + if (aa !== -1) { + ad = Y.substring(aa); + Y = Y.substring(0, aa); + } + var ac = []; + for (var Z in ab) { + if (ab.hasOwnProperty(Z)) { + ac.push(Z + "=" + I(ab[Z])); + } + } + return Y + (z ? "#" : Y.indexOf("?") == -1 ? "?" : "&") + ac.join("&") + ad; + } + var T = function (Y) { + Y = Y.substring(1).split("&"); + var aa = {}, + ab, + Z = Y.length; + while (Z--) { + ab = Y[Z].split("="); + aa[ab[0]] = l(ab[1]); + } + return aa; + }(/xdm_e=/.test(q.search) ? q.search : q.hash); + function u(Y) { + return typeof Y === "undefined"; + } + var _P = function P() { + var Z = {}; + var aa = { + a: [1, 2, 3] + }, + Y = '{"a":[1,2,3]}'; + if (typeof JSON != "undefined" && typeof JSON.stringify === "function" && JSON.stringify(aa).replace(/\s/g, "") === Y) { + return JSON; + } + if (Object.toJSON) { + if (Object.toJSON(aa).replace(/\s/g, "") === Y) { + Z.stringify = Object.toJSON; + } + } + if (typeof String.prototype.evalJSON === "function") { + aa = Y.evalJSON(); + if (aa.a && aa.a.length === 3 && aa.a[2] === 3) { + Z.parse = function (ab) { + return ab.evalJSON(); + }; + } + } + if (Z.stringify && Z.parse) { + _P = function P() { + return Z; + }; + return Z; + } + return null; + }; + function U(Y, Z, aa) { + var ac; + for (var ab in Z) { + if (Z.hasOwnProperty(ab)) { + if (ab in Y) { + ac = Z[ab]; + if (_typeof(ac) === "object") { + U(Y[ab], ac, aa); + } else { + if (!aa) { + Y[ab] = Z[ab]; + } + } + } else { + Y[ab] = Z[ab]; + } + } + } + return Y; + } + function a() { + var Z = d.body.appendChild(d.createElement("form")), + Y = Z.appendChild(d.createElement("input")); + Y.name = V + "TEST" + o; + F = Y !== Z.elements[Y.name]; + d.body.removeChild(Z); + } + function B(Z) { + if (u(F)) { + a(); + } + var ad; + if (F) { + ad = d.createElement('