{"version":3,"file":"content-view.min.js","sources":["https:\/\/www.nais.or.kr\/local\/tubeboard\/amd\/src\/content-view.js"],"sourcesContent":["\/\/ This file is part of Moodle - http:\/\/moodle.org\/\n\/\/\n\/\/ Moodle is free software: you can redistribute it and\/or modify\n\/\/ it under the terms of the GNU General Public License as published by\n\/\/ the Free Software Foundation, either version 3 of the License, or\n\/\/ (at your option) any later version.\n\/\/\n\/\/ Moodle is distributed in the hope that it will be useful,\n\/\/ but WITHOUT ANY WARRANTY; without even the implied warranty of\n\/\/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\/\/ GNU General Public License for more details.\n\/\/\n\/\/ You should have received a copy of the GNU General Public License\n\/\/ along with Moodle. If not, see .\n\n\/**\n * \uc88b\uc544\uc694, \ucd94\ucc9c, \ubcc4\uc810\n * \uac8c\uc2dc\uae00, \ub313\uae00 \uc218\uc815\/\uc0ad\uc81c\n *\n * @module local_tubeboard\/content-view\n * @class content-view\n * @copyright 2024 intube\n * @license http:\/\/www.gnu.org\/copyleft\/gpl.html GNU GPL v3 or later\n *\/\n\ndefine(['jquery',\n 'core\/ajax',\n 'core\/config',\n 'core\/notification',\n 'core\/str',\n 'core\/modal_factory',\n 'core\/modal_events',\n 'core\/templates',\n 'local_tubeboard\/common'\n ],\n function($,\n Ajax,\n Config,\n Notification,\n Str,\n ModalFactory,\n ModalEvents,\n Templates,\n Common\n ) {\n var SELECTORS = {\n BTN_LIKE_CONTENT: '.btn-content-action.like',\n BTN_RECOMMEND_CONTENT: '.btn-content-action.recommend',\n POINTS: '.points',\n POINT_CONTENT: '.btn-content-action.point',\n FORM_POST_COMMENT: '#form-comment',\n BTN_POST_COMMENT: '#form-comment .post-comment',\n BTN_EDIT_COMMENT: '.comments .edit-comment',\n BTN_DELETE_COMMENT: '.comments .delete-comment',\n BTN_EDIT_CONTENT: '.content-edit',\n BTN_REPLY_CONTENT: '.content-reply',\n BTN_DELETE_CONTENT: '.content-delete',\n };\n\n var likeContent = function(id) {\n var permission = Common.checkPermission('content', id, 'canlike');\n if (permission === Common.PERMISSION.LOGIN_REQUIRED) {\n Common.requireLogin();\n return false;\n }\n\n var method = 'local_tubeboard_like_content';\n var liked = $(SELECTORS.BTN_LIKE_CONTENT + '[data-id=\"' + id + '\"]').hasClass('active');\n\n if (liked) {\n method = 'local_tubeboard_unlike_content';\n }\n\n Ajax.call([{\n methodname: method,\n args: {id: id},\n done: function(data) {\n if (data.success) {\n if (liked) {\n $(SELECTORS.BTN_LIKE_CONTENT + '[data-id=\"' + id + '\"]').removeClass('active');\n $(SELECTORS.BTN_LIKE_CONTENT + '[data-id=\"' + id + '\"]').find('img').addClass('grayscale');\n } else {\n $(SELECTORS.BTN_LIKE_CONTENT + '[data-id=\"' + id + '\"]').addClass('active');\n $(SELECTORS.BTN_LIKE_CONTENT + '[data-id=\"' + id + '\"]').find('img').removeClass('grayscale');\n }\n }\n },\n fail: Notification.exception\n }], true);\n };\n\n var recommendContent = function(id) {\n var permission = Common.checkPermission('content', id, 'canrecommend');\n if (permission === Common.PERMISSION.LOGIN_REQUIRED) {\n Common.requireLogin();\n return false;\n }\n\n var method = 'local_tubeboard_recommend_content';\n var recommended = $(SELECTORS.BTN_RECOMMEND_CONTENT + '[data-id=\"' + id + '\"]').hasClass('active');\n if (recommended) {\n method = 'local_tubeboard_unrecommend_content';\n }\n\n Ajax.call([{\n methodname: method,\n args: {id: id},\n done: function(data) {\n if (data.success) {\n if (recommended) {\n $(SELECTORS.BTN_RECOMMEND_CONTENT + '[data-id=\"' + id + '\"]').removeClass('active');\n $(SELECTORS.BTN_RECOMMEND_CONTENT + '[data-id=\"' + id + '\"]').find('img').addClass('grayscale');\n } else {\n $(SELECTORS.BTN_RECOMMEND_CONTENT + '[data-id=\"' + id + '\"]').addClass('active');\n $(SELECTORS.BTN_RECOMMEND_CONTENT + '[data-id=\"' + id + '\"]').find('img').removeClass('grayscale');\n }\n }\n },\n fail: Notification.exception\n }], true);\n };\n\n var pointContent = function(id, point) {\n var permission = Common.checkPermission('content', id, 'canpoint');\n if (permission === Common.PERMISSION.LOGIN_REQUIRED) {\n Common.requireLogin();\n return false;\n }\n\n Ajax.call([{\n methodname: 'local_tubeboard_point_content',\n args: {id: id, point: point},\n done: function(data) {\n if (data.success) {\n $(SELECTORS.POINT_CONTENT + '[data-id=\"' + id + '\"]').data('point', point);\n showPoint(id, point);\n }\n },\n fail: Notification.exception\n }], true);\n };\n\n var showPoint = function(id, point) {\n var stars = $(SELECTORS.POINT_CONTENT + '[data-id=\"' + id + '\"] ' + SELECTORS.POINTS).find('img');\n for (var i = 0; i < stars.length; i++) {\n if (i < point) {\n $(stars[i]).removeClass('grayscale');\n } else {\n $(stars[i]).addClass('grayscale');\n }\n }\n };\n\n var postComment = function () {\n var contentid = $(SELECTORS.FORM_POST_COMMENT + ' input[name=\"contentid\"]').val();\n\n var permission = Common.checkPermission('content', contentid, 'cancomment');\n\n if (permission === Common.PERMISSION.DENY) {\n Str.get_strings([\n {key:'postcomment', component: 'local_tubeboard'},\n {key:'permission:cannotpostcomment', component: 'local_tubeboard'},\n {key:'ok'}\n ]).then(function (strings) {\n Common.displayAlert(strings[0], strings[1], strings[2], null);\n });\n\n return false;\n }\n\n var id = $(SELECTORS.FORM_POST_COMMENT + \" input[name=id]\").val();\n\n var comment = $(SELECTORS.FORM_POST_COMMENT + \" textarea[name=comment]\").val();\n if (comment === null || comment.trim() === '') {\n Str.get_strings([\n {key:'postcomment', component: 'local_tubeboard'},\n {key:'entercomment', component: 'local_tubeboard'},\n {key:'ok'}\n ]).then(function (strings) {\n Common.displayAlert(strings[0], strings[1], strings[2], null);\n $(SELECTORS.FORM_POST_COMMENT + \" textarea[name=comment]\").focus();\n });\n\n return false;\n }\n\n var name = '';\n if ($(SELECTORS.FORM_POST_COMMENT + ' input[name=\"name\"]').length !== 0) {\n name = $(SELECTORS.FORM_POST_COMMENT + ' input[name=\"name\"]').val();\n if(name === null || name.trim() === '') {\n Str.get_strings([\n {key:'postcomment', component: 'local_tubeboard'},\n {key:'enternickname', component: 'local_tubeboard'},\n {key:'ok'}\n ]).then(function (strings) {\n Common.displayAlert(strings[0], strings[1], strings[2], null);\n $(SELECTORS.FORM_POST_COMMENT + ' input[name=\"name\"]').focus();\n });\n\n return false;\n }\n }\n\n var password = '';\n if ($(SELECTORS.FORM_POST_COMMENT + ' input[name=\"password\"]').length !== 0) {\n password = $(SELECTORS.FORM_POST_COMMENT + ' input[name=\"password\"]').val();\n if(password === null || password.trim() === '') {\n Str.get_strings([\n {key:'postcomment', component: 'local_tubeboard'},\n {key:'enterpassword', component: 'local_tubeboard'},\n {key:'ok'}\n ]).then(function (strings) {\n Common.displayAlert(strings[0], strings[1], strings[2], null);\n $(SELECTORS.FORM_POST_COMMENT + ' input[name=\"password\"]').focus();\n });\n\n return false;\n }\n }\n\n Ajax.call([{\n methodname: 'local_tubeboard_post_comment',\n args: {\n id: id,\n contentid: contentid,\n comment: comment,\n name: name,\n password: password\n },\n done: function(response) {\n if (response.success) {\n window.location.reload();\n } else {\n Str.get_strings([\n {key:'postcomment', component: 'local_tubeboard'},\n {key:'ok'}\n ]).then(function (strings) {\n Common.displayAlert(strings[0], response.warnings[0].message, strings[1], null);\n });\n }\n },\n fail: Notification.exception\n }], true);\n };\n\n var editComment = function (id) {\n var permission = Common.checkPermission('comment', id, 'canedit');\n\n if (permission === Common.PERMISSION.ALLOW) {\n editCommentExecute(id);\n } else if (permission === Common.PERMISSION.DENY) {\n Str.get_strings([\n {key:'editcomment', component: 'local_tubeboard'},\n {key:'permission:cannoteditcomment', component: 'local_tubeboard'},\n {key:'ok'}\n ]).then(function (strings) {\n Common.displayAlert(strings[0], strings[1], strings[2], null);\n });\n } else if (permission === Common.PERMISSION.LOGIN_REQUIRED) {\n Common.requireLogin();\n } else if (permission === Common.PERMISSION.PASSWORD_REQUIRED) {\n Str.get_strings([\n {key:'editcomment', component: 'local_tubeboard'}\n ]).then(function (strings) {\n Common.requirePassword(strings[0], 'comment', id, 'canedit', function () {\n editCommentExecute(id);\n }, null);\n });\n }\n };\n\n var editCommentExecute = function(id) {\n Ajax.call([{\n methodname: 'local_tubeboard_get_comment',\n args: {\n id: id\n },\n done: function(response) {\n if (response.success) {\n var comment = response.comment;\n\n $(SELECTORS.FORM_POST_COMMENT + ' input[name=\"id\"]').val(id);\n $(SELECTORS.FORM_POST_COMMENT + ' textarea[name=\"comment\"]').focus();\n $(SELECTORS.FORM_POST_COMMENT + ' textarea[name=\"comment\"]').val(comment.comment);\n\n if (comment.name !== null && comment.name.trim().length !== 0) {\n if ($(SELECTORS.FORM_POST_COMMENT + ' input[name=\"name\"]').length !== 0) {\n $(SELECTORS.FORM_POST_COMMENT + ' input[name=\"name\"]').val(comment.name.trim());\n $(SELECTORS.FORM_POST_COMMENT + ' input[name=\"name\"]').prop('disabled', true);\n } else {\n $(SELECTORS.FORM_POST_COMMENT)\n .append('');\n }\n } else {\n $(SELECTORS.FORM_POST_COMMENT + ' input[name=\"name\"]').remove();\n }\n\n if (comment.password !== null && comment.password.trim().length !== 0) {\n if ($(SELECTORS.FORM_POST_COMMENT + ' input[name=\"password\"]').length !== 0) {\n $(SELECTORS.FORM_POST_COMMENT + ' input[name=\"password\"]').val(comment.password.trim());\n $(SELECTORS.FORM_POST_COMMENT + ' input[name=\"password\"]').prop('disabled', true);\n } else {\n $(SELECTORS.FORM_POST_COMMENT)\n .append('');\n }\n } else {\n $(SELECTORS.FORM_POST_COMMENT + ' input[name=\"password\"]').remove();\n }\n } else {\n Str.get_strings([\n {key:'comment', component: 'local_tubeboard'},\n {key:'ok'}\n ]).then(function (strings) {\n Common.displayAlert(strings[0], response.warnings[0].message, strings[1], null);\n });\n }\n },\n fail: Notification.exception\n }], true);\n };\n\n var deleteComment = function (id) {\n var permission = Common.checkPermission('comment', id, 'candelete');\n\n var requirepassword = false;\n\n if (permission === Common.PERMISSION.DENY) {\n Str.get_strings([\n {key:'deletecomment', component: 'local_tubeboard'},\n {key:'permission:cannotdeletecomment', component: 'local_tubeboard'},\n {key:'ok'}\n ]).then(function (strings) {\n Common.displayAlert(strings[0], strings[1], strings[2], null);\n });\n\n return false;\n }\n\n if (permission === Common.PERMISSION.LOGIN_REQUIRED) {\n Common.requireLogin();\n\n return false;\n }\n\n if (permission === Common.PERMISSION.PASSWORD_REQUIRED) {\n requirepassword = true;\n }\n\n Str.get_strings([\n {key:'deletecomment', component: 'local_tubeboard'},\n {key:'confirm:deletecomment', component: 'local_tubeboard'},\n {key:'delete'},\n {key:'cancel'}\n ]).then(function (strings) {\n Templates.render('local_tubeboard\/dialog-confirm',\n {requirepassword: requirepassword, message: strings[1]})\n .then(function(body) {\n Common.displayConfirm(strings[0], body, strings[2], strings[3],\n function () {\n var password = '';\n if (requirepassword) {\n password = $('.confirm-dialog input[name=\"password\"]').val();\n }\n deleteCommentExecute(id, password);\n });\n });\n });\n };\n\n var deleteCommentExecute = function (id, password) {\n Ajax.call([{\n methodname: 'local_tubeboard_delete_comment',\n args: {id: id, password: password},\n done: function(response) {\n if (response.success) {\n window.location.reload();\n } else {\n Str.get_strings([\n {key:'deletecomment', component: 'local_tubeboard'},\n {key:'ok'}\n ]).then(function (strings) {\n Common.displayAlert(strings[0], response.warnings[0].message, strings[1], null);\n });\n }\n },\n fail: Notification.exception\n }], true);\n };\n\n var editContent = function (boardid, id) {\n var url = Config.wwwroot + '\/local\/tubeboard\/content_edit.php?boardid=' + boardid;\n\n var permission = Common.PERMISSION.DENY;\n if(id === 0) {\n permission = Common.checkPermission('board', boardid, 'canpost');\n } else {\n url = url + '&id=' + id;\n permission = Common.checkPermission('content', id, 'canedit');\n }\n\n if (permission === Common.PERMISSION.ALLOW) {\n document.location.href = url;\n } else if (permission === Common.PERMISSION.LOGIN_REQUIRED) {\n Common.requireLogin();\n } else if (permission === Common.PERMISSION.PASSWORD_REQUIRED) {\n Str.get_strings([\n {key:'editcontent', component: 'local_tubeboard'}\n ]).then(function (strings) {\n Common.requirePassword(strings[0], 'content', id, 'canedit', function () {\n document.location.href = url;\n }, null);\n });\n } else if (permission === Common.PERMISSION.DENY) {\n Str.get_strings([\n {key:'editcontent', component: 'local_tubeboard'},\n {key:'permission:cannoteditcontent', component: 'local_tubeboard'},\n {key:'ok'}\n ]).then(function (strings) {\n Common.displayAlert(strings[0], strings[1], strings[2], null);\n });\n }\n };\n\n var deleteContentExecute = function (boardid, id, password) {\n var url = Config.wwwroot + '\/local\/tubeboard\/view.php?id=' + boardid;\n\n Ajax.call([{\n methodname: 'local_tubeboard_delete_content',\n args: {id: id, password: password},\n done: function(response) {\n if (response.success) {\n window.location.href = url;\n } else {\n Str.get_strings([\n {key:'deletecontent', component: 'local_tubeboard'},\n {key:'ok'}\n ]).then(function (strings) {\n Common.displayAlert(strings[0], response.warnings[0].message, strings[1], null);\n });\n }\n },\n fail: Notification.exception\n }], true);\n };\n\n var deleteContent = function (boardid, id) {\n var permission = Common.checkPermission('content', id, 'candelete');\n\n if (permission === Common.PERMISSION.ALLOW) {\n Str.get_strings([\n {key:'deletecontent', component: 'local_tubeboard'},\n {key:'confirmdeletecontent', component: 'local_tubeboard'},\n {key:'ok'},\n {key:'cancel'}\n ]).then(function (strings) {\n Templates.render('local_tubeboard\/dialog-confirm',\n {requirepassword: false, message: strings[1]})\n .then(function(body) {\n Common.displayConfirm(strings[0], body, strings[2], strings[3],\n function () {\n deleteContentExecute(boardid, id);\n });\n });\n });\n } else if (permission === Common.PERMISSION.LOGIN_REQUIRED) {\n Common.requireLogin();\n } else if (permission === Common.PERMISSION.PASSWORD_REQUIRED) {\n Str.get_strings([\n {key:'deletecontent', component: 'local_tubeboard'},\n {key:'confirmdeletecontent', component: 'local_tubeboard'},\n {key:'ok'},\n {key:'cancel'}\n ]).then(function (strings) {\n Templates.render('local_tubeboard\/dialog-confirm',\n {requirepassword: true, message: strings[1]})\n .then(function(body) {\n Common.displayConfirm(strings[0], body, strings[2], strings[3],\n function () {\n var password = $('.confirm-dialog input[name=\"password\"]').val();\n var canedit = Common.checkPassword('content', id, password, 'canedit');\n if (canedit) {\n deleteContentExecute(boardid, id, password);\n } else {\n Str.get_strings([\n {key:'deletecontent', component: 'local_tubeboard'},\n {key:'error:invalidpassword', component: 'local_tubeboard'},\n {key:'ok'}\n ]).then(function (strings) {\n Common.displayAlert(strings[0], strings[1], strings[2], null);\n });\n }\n });\n });\n });\n } else if (permission === Common.PERMISSION.DENY) {\n Str.get_strings([\n {key:'deletecontent', component: 'local_tubeboard'},\n {key:'permission:cannotdeletecontent', component: 'local_tubeboard'},\n {key:'ok'}\n ]).then(function (strings) {\n Common.displayAlert(strings[0], strings[1], strings[2], null);\n });\n }\n };\n\n var replyContent = function (boardid, parentid) {\n var url = Config.wwwroot + '\/local\/tubeboard\/content_edit.php?boardid=' + boardid + '&parentid=' + parentid;\n\n var permission = Common.checkPermission('content', parentid, 'canreply');\n\n if (permission === Common.PERMISSION.ALLOW) {\n document.location.href = url;\n } else if (permission === Common.PERMISSION.LOGIN_REQUIRED) {\n Common.requireLogin();\n } else if (permission === Common.PERMISSION.PASSWORD_REQUIRED) {\n Str.get_strings([\n {key:'replycontent', component: 'local_tubeboard'},\n ]).then(function (strings) {\n Common.requirePassword(strings[0], 'content', parentid, 'canreply', function () {\n document.location.href = url;\n }, null);\n });\n } else if (permission === Common.PERMISSION.DENY) {\n Str.get_strings([\n {key:'replycontent', component: 'local_tubeboard'},\n {key:'permission:cannotreplycontent', component: 'local_tubeboard'},\n {key:'ok'}\n ]).then(function (strings) {\n Common.displayAlert(strings[0], strings[1], strings[2], null);\n });\n }\n };\n\n return \/** @alias module:local_tubeboard\/content-view *\/ {\n init: function() {\n $(document).ready(function() {\n \/\/ \uc88b\uc544\uc694\n $(SELECTORS.BTN_LIKE_CONTENT).click(function() {\n var id = $(this).data('id');\n likeContent(id);\n });\n\n \/\/ \ucd94\ucc9c\n $(SELECTORS.BTN_RECOMMEND_CONTENT).click(function() {\n var id = $(this).data('id');\n recommendContent(id);\n });\n\n \/\/ \ubcc4\uc810\n $(SELECTORS.POINT_CONTENT + ' ' + SELECTORS.POINTS).mouseout(function() {\n var id = $(this).closest(SELECTORS.POINT_CONTENT).data('id');\n var point = $(this).closest(SELECTORS.POINT_CONTENT).data('point');\n showPoint(id, point);\n });\n $(SELECTORS.POINT_CONTENT + ' ' + SELECTORS.POINTS).find('img').mouseover(function() {\n var id = $(this).closest(SELECTORS.POINT_CONTENT).data('id');\n var index = $(this).index();\n showPoint(id, parseInt(index) + 1);\n });\n $(SELECTORS.POINT_CONTENT + ' ' + SELECTORS.POINTS).find('img').click(function() {\n var id = $(this).closest(SELECTORS.POINT_CONTENT).data('id');\n var index = $(this).index();\n pointContent(id, parseInt(index) + 1);\n });\n\n \/\/ \uc218\uc815\n $(SELECTORS.BTN_EDIT_CONTENT).click(function(e) {\n e.preventDefault();\n\n var href = $(this).attr('href');\n var boardid = Common.getUrlParam(href, 'boardid');\n var id = Common.getUrlParam(href, 'id');\n\n editContent(boardid, id);\n });\n\n \/\/ \ub2f5\uae00\n $(SELECTORS.BTN_REPLY_CONTENT).click(function(e) {\n e.preventDefault();\n\n var href = $(this).attr('href');\n var boardid = Common.getUrlParam(href, 'boardid');\n var parentid = Common.getUrlParam(href, 'parentid');\n\n replyContent(boardid, parentid);\n });\n\n $(SELECTORS.BTN_DELETE_CONTENT).click(function(e) {\n e.preventDefault();\n\n var href = $(this).attr('href');\n var boardid = Common.getUrlParam(href, 'boardid');\n var id = Common.getUrlParam(href, 'id');\n\n deleteContent(boardid, id);\n });\n\n \/\/ \ub313\uae00 \ub4f1\ub85d\n $(SELECTORS.BTN_POST_COMMENT).click(function() {\n postComment();\n });\n\n \/\/ \ub313\uae00 \uc218\uc815\n $(SELECTORS.BTN_EDIT_COMMENT).click(function() {\n var id = $(this).data('id');\n editComment(id);\n });\n\n \/\/ \ub313\uae00 \uc0ad\uc81c\n $(SELECTORS.BTN_DELETE_COMMENT).click(function() {\n var id = $(this).data('id');\n deleteComment(id);\n });\n });\n }\n };\n});"],"names":["define","$","Ajax","Config","Notification","Str","ModalFactory","ModalEvents","Templates","Common","SELECTORS","showPoint","id","point","stars","find","i","length","removeClass","addClass","editCommentExecute","call","methodname","args","done","response","success","comment","val","focus","name","trim","prop","append","remove","password","get_strings","key","component","then","strings","displayAlert","warnings","message","fail","exception","deleteCommentExecute","window","location","reload","deleteContentExecute","boardid","url","wwwroot","href","init","document","ready","click","checkPermission","PERMISSION","LOGIN_REQUIRED","requireLogin","method","liked","hasClass","data","likeContent","this","recommended","recommendContent","mouseout","closest","mouseover","index","parseInt","pointContent","e","preventDefault","attr","permission","DENY","ALLOW","PASSWORD_REQUIRED","requirePassword","editContent","getUrlParam","parentid","replyContent","render","requirepassword","body","displayConfirm","checkPassword","deleteContent","contentid","postComment","editComment","deleteComment"],"mappings":";;;;;;;;;AAyBAA,sCAAO,CAAC,SACA,YACA,cACA,oBACA,WACA,qBACA,oBACA,iBACA,2BAEJ,SAASC,EACAC,KACAC,OACAC,aACAC,IACAC,aACAC,YACAC,UACAC,YAELC,2BACkB,2BADlBA,gCAEuB,gCAFvBA,iBAGQ,UAHRA,wBAIe,4BAJfA,4BAKmB,gBALnBA,2BAMkB,8BANlBA,2BAOkB,0BAPlBA,6BAQoB,4BARpBA,2BASkB,gBATlBA,4BAUmB,iBAVnBA,6BAWoB,kBAsFpBC,UAAY,SAASC,GAAIC,eACrBC,MAAQb,EAAES,wBAA0B,aAAeE,GAAK,MAAQF,kBAAkBK,KAAK,OAClFC,EAAI,EAAGA,EAAIF,MAAMG,OAAQD,IAC1BA,EAAIH,MACJZ,EAAEa,MAAME,IAAIE,YAAY,aAExBjB,EAAEa,MAAME,IAAIG,SAAS,cA2H7BC,mBAAqB,SAASR,IAC9BV,KAAKmB,KAAK,CAAC,CACPC,WAAY,8BACZC,KAAM,CACFX,GAAIA,IAERY,KAAM,SAASC,aACPA,SAASC,QAAS,KACdC,QAAUF,SAASE,QAEvB1B,EAAES,4BAA8B,qBAAqBkB,IAAIhB,IACzDX,EAAES,4BAA8B,6BAA6BmB,QAC7D5B,EAAES,4BAA8B,6BAA6BkB,IAAID,QAAQA,SAEpD,OAAjBA,QAAQG,MAAgD,IAA\/BH,QAAQG,KAAKC,OAAOd,OACyB,IAAlEhB,EAAES,4BAA8B,uBAAuBO,QACvDhB,EAAES,4BAA8B,uBAAuBkB,IAAID,QAAQG,KAAKC,QACxE9B,EAAES,4BAA8B,uBAAuBsB,KAAK,YAAY,IAExE\/B,EAAES,6BACGuB,OAAO,2CAA6CN,QAAQG,KAAKC,OAAS,QAGnF9B,EAAES,4BAA8B,uBAAuBwB,SAGlC,OAArBP,QAAQQ,UAAwD,IAAnCR,QAAQQ,SAASJ,OAAOd,OACqB,IAAtEhB,EAAES,4BAA8B,2BAA2BO,QAC3DhB,EAAES,4BAA8B,2BAA2BkB,IAAID,QAAQQ,SAASJ,QAChF9B,EAAES,4BAA8B,2BAA2BsB,KAAK,YAAY,IAE5E\/B,EAAES,6BACGuB,OAAO,+CAAiDN,QAAQQ,SAASJ,OAAS,QAG3F9B,EAAES,4BAA8B,2BAA2BwB,cAG\/D7B,IAAI+B,YAAY,CACZ,CAACC,IAAI,UAAWC,UAAW,mBAC3B,CAACD,IAAI,QACNE,MAAK,SAAUC,SACd\/B,OAAOgC,aAAaD,QAAQ,GAAIf,SAASiB,SAAS,GAAGC,QAASH,QAAQ,GAAI,UAItFI,KAAMxC,aAAayC,aACnB,IAmDJC,qBAAuB,SAAUlC,GAAIuB,UACrCjC,KAAKmB,KAAK,CAAC,CACPC,WAAY,iCACZC,KAAM,CAACX,GAAIA,GAAIuB,SAAUA,UACzBX,KAAM,SAASC,UACPA,SAASC,QACTqB,OAAOC,SAASC,SAEhB5C,IAAI+B,YAAY,CACZ,CAACC,IAAI,gBAAiBC,UAAW,mBACjC,CAACD,IAAI,QACNE,MAAK,SAAUC,SACd\/B,OAAOgC,aAAaD,QAAQ,GAAIf,SAASiB,SAAS,GAAGC,QAASH,QAAQ,GAAI,UAItFI,KAAMxC,aAAayC,aACnB,IAqCJK,qBAAuB,SAAUC,QAASvC,GAAIuB,cAC1CiB,IAAMjD,OAAOkD,QAAU,gCAAkCF,QAE7DjD,KAAKmB,KAAK,CAAC,CACPC,WAAY,iCACZC,KAAM,CAACX,GAAIA,GAAIuB,SAAUA,UACzBX,KAAM,SAASC,UACPA,SAASC,QACTqB,OAAOC,SAASM,KAAOF,IAEvB\/C,IAAI+B,YAAY,CACZ,CAACC,IAAI,gBAAiBC,UAAW,mBACjC,CAACD,IAAI,QACNE,MAAK,SAAUC,SACd\/B,OAAOgC,aAAaD,QAAQ,GAAIf,SAASiB,SAAS,GAAGC,QAASH,QAAQ,GAAI,UAItFI,KAAMxC,aAAayC,aACnB,UA2FiD,CACrDU,KAAM,WACFtD,EAAEuD,UAAUC,OAAM,WAEdxD,EAAES,4BAA4BgD,OAAM,YA9d9B,SAAS9C,OACNH,OAAOkD,gBAAgB,UAAW\/C,GAAI,aACpCH,OAAOmD,WAAWC,sBACjCpD,OAAOqD,gBACA,MAGPC,OAAS,+BACTC,MAAQ\/D,EAAES,2BAA6B,aAAeE,GAAK,MAAMqD,SAAS,UAE1ED,QACAD,OAAS,kCAGb7D,KAAKmB,KAAK,CAAC,CACPC,WAAYyC,OACZxC,KAAM,CAACX,GAAIA,IACXY,KAAM,SAAS0C,MACPA,KAAKxC,UACDsC,OACA\/D,EAAES,2BAA6B,aAAeE,GAAK,MAAMM,YAAY,UACrEjB,EAAES,2BAA6B,aAAeE,GAAK,MAAMG,KAAK,OAAOI,SAAS,eAE9ElB,EAAES,2BAA6B,aAAeE,GAAK,MAAMO,SAAS,UAClElB,EAAES,2BAA6B,aAAeE,GAAK,MAAMG,KAAK,OAAOG,YAAY,gBAI7F0B,KAAMxC,aAAayC,aACnB,GAmcQsB,CADSlE,EAAEmE,MAAMF,KAAK,UAK1BjE,EAAES,iCAAiCgD,OAAM,YApc9B,SAAS9C,OACXH,OAAOkD,gBAAgB,UAAW\/C,GAAI,kBACpCH,OAAOmD,WAAWC,sBACjCpD,OAAOqD,gBACA,MAGPC,OAAS,oCACTM,YAAcpE,EAAES,gCAAkC,aAAeE,GAAK,MAAMqD,SAAS,UACrFI,cACAN,OAAS,uCAGb7D,KAAKmB,KAAK,CAAC,CACPC,WAAYyC,OACZxC,KAAM,CAACX,GAAIA,IACXY,KAAM,SAAS0C,MACPA,KAAKxC,UACD2C,aACApE,EAAES,gCAAkC,aAAeE,GAAK,MAAMM,YAAY,UAC1EjB,EAAES,gCAAkC,aAAeE,GAAK,MAAMG,KAAK,OAAOI,SAAS,eAEnFlB,EAAES,gCAAkC,aAAeE,GAAK,MAAMO,SAAS,UACvElB,EAAES,gCAAkC,aAAeE,GAAK,MAAMG,KAAK,OAAOG,YAAY,gBAIlG0B,KAAMxC,aAAayC,aACnB,GA0aQyB,CADSrE,EAAEmE,MAAMF,KAAK,UAK1BjE,EAAES,wBAA0B,IAAMA,kBAAkB6D,UAAS,eACrD3D,GAAKX,EAAEmE,MAAMI,QAAQ9D,yBAAyBwD,KAAK,MACnDrD,MAAQZ,EAAEmE,MAAMI,QAAQ9D,yBAAyBwD,KAAK,SAC1DvD,UAAUC,GAAIC,UAElBZ,EAAES,wBAA0B,IAAMA,kBAAkBK,KAAK,OAAO0D,WAAU,eAClE7D,GAAKX,EAAEmE,MAAMI,QAAQ9D,yBAAyBwD,KAAK,MACnDQ,MAAQzE,EAAEmE,MAAMM,QACpB\/D,UAAUC,GAAI+D,SAASD,OAAS,MAEpCzE,EAAES,wBAA0B,IAAMA,kBAAkBK,KAAK,OAAO2C,OAAM,eAC9D9C,GAAKX,EAAEmE,MAAMI,QAAQ9D,yBAAyBwD,KAAK,MACnDQ,MAAQzE,EAAEmE,MAAMM,SAvbjB,SAAS9D,GAAIC,UACXJ,OAAOkD,gBAAgB,UAAW\/C,GAAI,cACpCH,OAAOmD,WAAWC,sBACjCpD,OAAOqD,gBACA,EAGX5D,KAAKmB,KAAK,CAAC,CACPC,WAAY,gCACZC,KAAM,CAACX,GAAIA,GAAIC,MAAOA,OACtBW,KAAM,SAAS0C,MACPA,KAAKxC,UACLzB,EAAES,wBAA0B,aAAeE,GAAK,MAAMsD,KAAK,QAASrD,OACpEF,UAAUC,GAAIC,SAGtB+B,KAAMxC,aAAayC,aACnB,GAuaQ+B,CAAahE,GAAI+D,SAASD,OAAS,MAIvCzE,EAAES,4BAA4BgD,OAAM,SAASmB,GACzCA,EAAEC,qBAEExB,KAAOrD,EAAEmE,MAAMW,KAAK,SApLtB,SAAU5B,QAASvC,QAC7BwC,IAAMjD,OAAOkD,QAAU,6CAA+CF,QAEtE6B,WAAavE,OAAOmD,WAAWqB,KACzB,IAAPrE,GACCoE,WAAavE,OAAOkD,gBAAgB,QAASR,QAAS,YAEtDC,IAAMA,IAAM,OAASxC,GACrBoE,WAAavE,OAAOkD,gBAAgB,UAAW\/C,GAAI,YAGnDoE,aAAevE,OAAOmD,WAAWsB,MACjC1B,SAASR,SAASM,KAAOF,IAClB4B,aAAevE,OAAOmD,WAAWC,eACxCpD,OAAOqD,eACAkB,aAAevE,OAAOmD,WAAWuB,kBACxC9E,IAAI+B,YAAY,CACZ,CAACC,IAAI,cAAeC,UAAW,qBAChCC,MAAK,SAAUC,SACd\/B,OAAO2E,gBAAgB5C,QAAQ,GAAI,UAAW5B,GAAI,WAAW,WACzD4C,SAASR,SAASM,KAAOF,MAC1B,SAEA4B,aAAevE,OAAOmD,WAAWqB,MACxC5E,IAAI+B,YAAY,CACZ,CAACC,IAAI,cAAeC,UAAW,mBAC\/B,CAACD,IAAI,+BAAgCC,UAAW,mBAChD,CAACD,IAAI,QACNE,MAAK,SAAUC,SACd\/B,OAAOgC,aAAaD,QAAQ,GAAIA,QAAQ,GAAIA,QAAQ,GAAI,SA2JpD6C,CAHc5E,OAAO6E,YAAYhC,KAAM,WAC9B7C,OAAO6E,YAAYhC,KAAM,UAMtCrD,EAAES,6BAA6BgD,OAAM,SAASmB,GAC1CA,EAAEC,qBAEExB,KAAOrD,EAAEmE,MAAMW,KAAK,SA3ErB,SAAU5B,QAASoC,cAC9BnC,IAAMjD,OAAOkD,QAAU,6CAA+CF,QAAU,aAAeoC,SAE\/FP,WAAavE,OAAOkD,gBAAgB,UAAW4B,SAAU,YAEzDP,aAAevE,OAAOmD,WAAWsB,MACjC1B,SAASR,SAASM,KAAOF,IAClB4B,aAAevE,OAAOmD,WAAWC,eACxCpD,OAAOqD,eACAkB,aAAevE,OAAOmD,WAAWuB,kBACxC9E,IAAI+B,YAAY,CACZ,CAACC,IAAI,eAAgBC,UAAW,qBACjCC,MAAK,SAAUC,SACd\/B,OAAO2E,gBAAgB5C,QAAQ,GAAI,UAAW+C,SAAU,YAAY,WAChE\/B,SAASR,SAASM,KAAOF,MAC1B,SAEA4B,aAAevE,OAAOmD,WAAWqB,MACxC5E,IAAI+B,YAAY,CACZ,CAACC,IAAI,eAAgBC,UAAW,mBAChC,CAACD,IAAI,gCAAiCC,UAAW,mBACjD,CAACD,IAAI,QACNE,MAAK,SAAUC,SACd\/B,OAAOgC,aAAaD,QAAQ,GAAIA,QAAQ,GAAIA,QAAQ,GAAI,SAwDpDgD,CAHc\/E,OAAO6E,YAAYhC,KAAM,WACxB7C,OAAO6E,YAAYhC,KAAM,gBAK5CrD,EAAES,8BAA8BgD,OAAM,SAASmB,GAC3CA,EAAEC,qBAEExB,KAAOrD,EAAEmE,MAAMW,KAAK,SAjJpB,SAAU5B,QAASvC,QAC\/BoE,WAAavE,OAAOkD,gBAAgB,UAAW\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\/B,CAACD,IAAI,QACNE,MAAK,SAAUC,SACd\/B,OAAOgC,aAAaD,QAAQ,GAAIf,SAASiB,SAAS,GAAGC,QAASH,QAAQ,GAAI,UAItFI,KAAMxC,aAAayC,aACnB,GAqWQmD,MAIJ\/F,EAAES,4BAA4BgD,OAAM,YAtW9B,SAAU9C,QACpBoE,WAAavE,OAAOkD,gBAAgB,UAAW\/C,GAAI,WAEnDoE,aAAevE,OAAOmD,WAAWsB,MACjC9D,mBAAmBR,IACZoE,aAAevE,OAAOmD,WAAWqB,KACxC5E,IAAI+B,YAAY,CACZ,CAACC,IAAI,cAAeC,UAAW,mBAC\/B,CAACD,IAAI,+BAAgCC,UAAW,mBAChD,CAACD,IAAI,QACNE,MAAK,SAAUC,SACd\/B,OAAOgC,aAAaD,QAAQ,GAAIA,QAAQ,GAAIA,QAAQ,GAAI,SAErDwC,aAAevE,OAAOmD,WAAWC,eACxCpD,OAAOqD,eACAkB,aAAevE,OAAOmD,WAAWuB,mBACxC9E,IAAI+B,YAAY,CACZ,CAACC,IAAI,cAAeC,UAAW,qBAChCC,MAAK,SAAUC,SACd\/B,OAAO2E,gBAAgB5C,QAAQ,GAAI,UAAW5B,GAAI,WAAW,WACzDQ,mBAAmBR,MACpB,SAmVCqF,CADShG,EAAEmE,MAAMF,KAAK,UAK1BjE,EAAES,8BAA8BgD,OAAM,YAhS9B,SAAU9C,QACtBoE,WAAavE,OAAOkD,gBAAgB,UAAW\/C,GAAI,aAEnD8E,iBAAkB,EAElBV,aAAevE,OAAOmD,WAAWqB,KACjC5E,IAAI+B,YAAY,CACZ,CAACC,IAAI,gBAAiBC,UAAW,mBACjC,CAACD,IAAI,iCAAkCC,UAAW,mBAClD,CAACD,IAAI,QACNE,MAAK,SAAUC,SACd\/B,OAAOgC,aAAaD,QAAQ,GAAIA,QAAQ,GAAIA,QAAQ,GAAI,SAM5DwC,aAAevE,OAAOmD,WAAWC,eACjCpD,OAAOqD,gBAKPkB,aAAevE,OAAOmD,WAAWuB,oBACjCO,iBAAkB,GAGtBrF,IAAI+B,YAAY,CACZ,CAACC,IAAI,gBAAiBC,UAAW,mBACjC,CAACD,IAAI,wBAAyBC,UAAW,mBACzC,CAACD,IAAI,UACL,CAACA,IAAI,YACNE,MAAK,SAAUC,SACdhC,UAAUiF,OAAO,iCACb,CAACC,gBAAiBA,gBAAiB\/C,QAASH,QAAQ,KACnDD,MAAK,SAASoD,MACXlF,OAAOmF,eAAepD,QAAQ,GAAImD,KAAMnD,QAAQ,GAAIA,QAAQ,IACxD,eACQL,SAAW,GACXuD,kBACAvD,SAAWlC,EAAE,0CAA0C2B,OAE3DkB,qBAAqBlC,GAAIuB,oBAwPjC+D,CADSjG,EAAEmE,MAAMF,KAAK"}