@citolab/qti-components 6.9.1-beta.42 → 6.9.1-beta.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
- import { Q as QtiRule, a as QtiRuleBase, b as QtiExpressionBase, c as QtiExpression, B as BaseType, d as QtiConditionExpression, R as ResponseVariable, V as VariableDeclaration, I as ItemContext } from '../qti-simple-choice-CWJsmgbB.js';
2
- export { A as ActiveElementMixin, C as Calculate, m as Cardinality, r as ChoiceInterface, ae as Interaction, e as InteractionChangedDetails, U as MockQtiExpression, M as Multiple, l as Ordered, O as OutcomeChangedDetails, o as OutcomeVariable, T as QtiAnd, p as QtiAssessmentItem, q as QtiAssessmentStimulusRef, af as QtiAssociableHotspot, Z as QtiAssociateInteraction, K as QtiChoiceInteraction, w as QtiCompanionMaterialsInfo, x as QtiContentBody, _ as QtiCustomInteraction, ad as QtiCustomOperator, $ as QtiEndAttemptInteraction, F as QtiExtendedTextInteraction, z as QtiFeedbackBlock, D as QtiFeedbackInline, ag as QtiGap, ah as QtiGapImg, a0 as QtiGapMatchInteraction, ai as QtiGapText, a1 as QtiGraphicAssociateInteraction, a2 as QtiGraphicGapMatchInteraction, a3 as QtiGraphicOrderInteraction, aj as QtiHotspotChoice, a4 as QtiHotspotInteraction, ak as QtiHottext, H as QtiHottextInteraction, al as QtiInlineChoice, J as QtiInlineChoiceInteraction, f as QtiInteractionChanged, S as QtiLookupOutcomeValue, X as QtiMapping, a5 as QtiMatchInteraction, a6 as QtiMediaInteraction, E as QtiModalFeedback, a7 as QtiOrderInteraction, g as QtiOutcomeChanged, u as QtiOutcomeDeclaration, L as QtiOutcomeProcessing, N as QtiOutcomeProcessingProcessor, Y as QtiPortableCustomInteraction, a8 as QtiPositionObjectStage, s as QtiPrompt, v as QtiResponseDeclaration, P as QtiResponseProcessing, y as QtiRubricBlock, a9 as QtiSelectPointInteraction, am as QtiSimpleAssociableChoice, an as QtiSimpleChoice, aa as QtiSliderInteraction, t as QtiStylesheet, G as QtiTextEntryInteraction, i as ResponseInteraction, n as VariableValue, h as directedPair, j as float, k as integer, ac as itemContext, ab as itemContextVariables, W as qtiAndMixin } from '../qti-simple-choice-CWJsmgbB.js';
1
+ import { a as QtiRule, b as QtiRuleBase, c as QtiExpressionBase, d as QtiExpression, B as BaseType, e as QtiConditionExpression, R as ResponseVariable, V as VariableDeclaration, I as ItemContext } from '../qti-simple-choice-BdZuFHJR.js';
2
+ export { A as ActiveElementMixin, C as Calculate, n as Cardinality, r as ChoiceInterface, ae as Interaction, f as InteractionChangedDetails, U as MockQtiExpression, M as Multiple, m as Ordered, O as OutcomeChangedDetails, p as OutcomeVariable, T as QtiAnd, Q as QtiAssessmentItem, q as QtiAssessmentStimulusRef, af as QtiAssociableHotspot, Z as QtiAssociateInteraction, K as QtiChoiceInteraction, w as QtiCompanionMaterialsInfo, x as QtiContentBody, _ as QtiCustomInteraction, ad as QtiCustomOperator, $ as QtiEndAttemptInteraction, F as QtiExtendedTextInteraction, z as QtiFeedbackBlock, D as QtiFeedbackInline, ag as QtiGap, ah as QtiGapImg, a0 as QtiGapMatchInteraction, ai as QtiGapText, a1 as QtiGraphicAssociateInteraction, a2 as QtiGraphicGapMatchInteraction, a3 as QtiGraphicOrderInteraction, aj as QtiHotspotChoice, a4 as QtiHotspotInteraction, ak as QtiHottext, H as QtiHottextInteraction, al as QtiInlineChoice, J as QtiInlineChoiceInteraction, g as QtiInteractionChanged, S as QtiLookupOutcomeValue, X as QtiMapping, a5 as QtiMatchInteraction, a6 as QtiMediaInteraction, E as QtiModalFeedback, a7 as QtiOrderInteraction, h as QtiOutcomeChanged, u as QtiOutcomeDeclaration, L as QtiOutcomeProcessing, N as QtiOutcomeProcessingProcessor, Y as QtiPortableCustomInteraction, a8 as QtiPositionObjectStage, s as QtiPrompt, v as QtiResponseDeclaration, P as QtiResponseProcessing, y as QtiRubricBlock, a9 as QtiSelectPointInteraction, am as QtiSimpleAssociableChoice, an as QtiSimpleChoice, aa as QtiSliderInteraction, t as QtiStylesheet, G as QtiTextEntryInteraction, j as ResponseInteraction, o as VariableValue, i as directedPair, k as float, l as integer, ac as itemContext, ab as itemContextVariables, W as qtiAndMixin } from '../qti-simple-choice-BdZuFHJR.js';
3
3
  import * as lit_html from 'lit-html';
4
4
  import * as lit from 'lit';
5
5
  import { LitElement } from 'lit';
@@ -1,4 +1,4 @@
1
- import{a as Dt}from"../chunk-PQ5G7ZQ7.js";import{a as b,b as C,c as n}from"../chunk-NYAUPIAG.js";import{provide as hr}from"@lit/context";import{LitElement as fr,html as gr}from"lit";import{customElement as br,property as K}from"lit/decorators.js";function x(c,i){let e=b({waitUntilFirstUpdate:!1},i);return(t,r)=>{let{update:s}=t,o=Array.isArray(c)?c:[c];t.update=function(a){o.forEach(l=>{let p=l;if(a.has(p)){let d=a.get(p),u=this[p];d!==u&&(!e.waitUntilFirstUpdate||this.hasUpdated)&&this[r](d,u)}}),s.call(this,a)}}}import{createContext as mr}from"@lit/context";var Ht=[{identifier:"completionStatus",cardinality:"single",baseType:"string",value:"unknown",type:"outcome"},{identifier:"numAttempts",cardinality:"single",baseType:"integer",value:"0",type:"response"}],L=mr("item");var q=class extends fr{constructor(){super();this.identifier="";this.adaptive="false";this.timeDependent=null;this._handleDisabledChange=(e,t)=>{this._interactionElements.forEach(r=>r.disabled=t)};this._handleReadonlyChange=(e,t)=>this._interactionElements.forEach(r=>r.readonly=t);this._context={identifier:this.getAttribute("identifier"),variables:Ht};this._initialContext=C(b({},this._context),{variables:this._context.variables});this._feedbackElements=[];this._interactionElements=[];this.addEventListener("qti-register-variable",e=>{this._context=C(b({},this._context),{variables:[...this._context.variables,e.detail.variable]}),this._initialContext=this._context,e.stopPropagation()}),this.addEventListener("qti-register-feedback",e=>{e.stopPropagation();let t=e.detail;this._feedbackElements.push(t),t.checkShowFeedback(t.outcomeIdentifier)}),this.addEventListener("qti-register-interaction",e=>{e.stopPropagation(),this._interactionElements.push(e.target)}),this.addEventListener("end-attempt",e=>{let{responseIdentifier:t,countAttempt:r}=e.detail;this.updateResponseVariable(t,"true"),this.processResponse(r)}),this.addEventListener("qti-set-outcome-value",e=>{let{outcomeIdentifier:t,value:r}=e.detail;this.updateOutcomeVariable(t,r),e.stopPropagation()}),this.addEventListener("qti-interaction-response",this.handleUpdateResponseVariable)}get variables(){return this._context.variables.map(e=>b({identifier:e.identifier,value:e.value,type:e.type},e.type==="outcome"&&e.identifier==="SCORE"?{externalScored:e.externalScored}:{}))}set variables(e){if(!Array.isArray(e)||e.some(t=>!("identifier"in t))){console.warn("variables property should be an array of VariableDeclaration");return}this._context=C(b({},this._context),{variables:this._context.variables.map(t=>{let r=e.find(s=>s.identifier===t.identifier);return r?b(b({},t),r):t})}),this._context.variables.forEach(t=>{if(t.type==="response"){let r=this._interactionElements.find(s=>s.responseIdentifier===t.identifier);r&&(r.response=t.value)}t.type==="outcome"&&this._feedbackElements.forEach(r=>r.checkShowFeedback(t.identifier))})}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this._emit("qti-assessment-item-connected",this)}set responses(e){if(e)for(let t of e){this.getResponse(t.responseIdentifier)&&this.updateResponseVariable(t.responseIdentifier,t.response);let s=this._interactionElements.find(o=>o.getAttribute("response-identifier")===t.responseIdentifier);s&&(s.response=t.response)}}render(){return gr`<slot></slot>`}showCorrectResponse(e){let r=this._context.variables.filter(s=>"correctResponse"in s&&s.correctResponse).map(s=>({responseIdentifier:s.identifier,response:s.correctResponse}));for(let s of r){let o=this._interactionElements.find(a=>a.getAttribute("response-identifier")===s.responseIdentifier);o&&(o.correctResponse=e?s.response:"")}}processResponse(e=!0){var r;let t=this.querySelector("qti-response-processing");return!t||!t.process?!1:(t.process(),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",this._getCompletionStatus()),e&&this.updateOutcomeVariable("numAttempts",(+((r=this._context.variables.find(s=>s.identifier==="numAttempts"))==null?void 0:r.value)+1).toString()),this._emit("qti-response-processed"),!0)}resetResponses(){this._context=this._initialContext}getResponse(e){return this.getVariable(e)}getOutcome(e){return this.getVariable(e)}getVariable(e){return this._context.variables.find(t=>t.identifier===e)||null}handleUpdateResponseVariable(e){let{responseIdentifier:t,response:r}=e.detail;this.updateResponseVariable(t,r)}updateResponseVariable(e,t){this._context=C(b({},this._context),{variables:this._context.variables.map(r=>r.identifier!==e?r:C(b({},r),{value:t}))}),this._emit("qti-interaction-changed",{item:this.identifier,responseIdentifier:e,response:Array.isArray(t)?[...t]:t}),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",this._getCompletionStatus())}updateOutcomeVariable(e,t){var s;let r=this.getOutcome(e);if(!r){console.warn(`Can not set qti-outcome-identifier: ${e}, it is not available`);return}this._context=C(b({},this._context),{variables:this._context.variables.map(o=>o.identifier!==e?o:C(b({},o),{value:r.cardinality==="single"?t:[...o.value,t]}))}),this._feedbackElements.forEach(o=>o.checkShowFeedback(e)),this._emit("qti-outcome-changed",{item:this.identifier,outcomeIdentifier:e,value:(s=this._context.variables.find(o=>o.identifier===e))==null?void 0:s.value})}_getCompletionStatus(){return this._interactionElements.every(e=>e.validate())?"completed":this._interactionElements.some(e=>e.validate())?"incomplete":"not_attempted"}_emit(e,t=null){this.dispatchEvent(new CustomEvent(e,{bubbles:!0,composed:!0,detail:t}))}};n([K({type:String})],q.prototype,"title",2),n([K({type:String})],q.prototype,"identifier",2),n([K({type:String})],q.prototype,"adaptive",2),n([K({type:String})],q.prototype,"timeDependent",2),n([K({type:Boolean})],q.prototype,"disabled",2),n([x("disabled",{waitUntilFirstUpdate:!0})],q.prototype,"_handleDisabledChange",2),n([K({type:Boolean})],q.prototype,"readonly",2),n([x("readonly",{waitUntilFirstUpdate:!0})],q.prototype,"_handleReadonlyChange",2),n([hr({context:L})],q.prototype,"_context",2),q=n([br("qti-assessment-item")],q);import{LitElement as vr}from"lit";import{customElement as yr,property as Nt}from"lit/decorators.js";var W=class extends vr{constructor(){super(...arguments);this.identifier="";this.href=""}async connectedCallback(){super.connectedCallback();let e=new Event("qti-assessment-stimulus-ref-connected",{cancelable:!0,bubbles:!0});if(this.dispatchEvent(e)){let s=this.closest("qti-assessment-item").querySelector(`[data-stimulus-idref=${this.identifier}]`);s?await this.updateStimulusRef(s):console.warn(`Stimulus with data-stimulus-idref ${this.identifier} not found`)}}async updateStimulusRef(e){let t=this.href.substring(0,this.href.lastIndexOf("/")),r=await Dt().load(this.href).then(s=>s.path(t).htmldoc());if(r){let s=r.querySelectorAll("qti-stimulus-body, qti-stylesheet");e.innerHTML="",e.append(...s)}}};n([Nt({type:String})],W.prototype,"identifier",2),n([Nt({type:String})],W.prototype,"href",2),W=n([yr("qti-assessment-stimulus-ref")],W);import{html as xr}from"lit";import{property as Ae}from"lit/decorators.js";var Vt={toAttribute:c=>c?"true":"false",fromAttribute:c=>c==="true"};function R(c,i){class e extends c{constructor(...s){super(...s);this.identifier="";this.tabIndex=0;this.disabled=!1;this.readonly=!1;this._internals=this.attachInternals()}handleDisabledChange(s,o){this.tabIndex=o?-1:0,o&&this.blur()}setInternalState(s,o){o&&!this._internals.states.has(s)?this._internals.states.add(s):!o&&this._internals.states.has(s)&&this._internals.states.delete(s)}connectedCallback(){super.connectedCallback(),this.addEventListener("keyup",this._onKeyUp),this.addEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent(`register-${i}`,{bubbles:!0,composed:!0}))}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("keyup",this._onKeyUp),this.removeEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent(`unregister-${i}`,{bubbles:!0,composed:!0}))}_onKeyUp(s){s.altKey||s.code==="Space"&&(s.preventDefault(),this._activate())}_onClick(){this.disabled||this.readonly||(this.focus(),this._activate())}_activate(){this.disabled||this.readonly||this.dispatchEvent(new CustomEvent(`activate-${i}`,{bubbles:!0,composed:!0,detail:{identifier:this.identifier}}))}render(){return xr`<slot></slot>`}}return n([Ae({type:String})],e.prototype,"identifier",2),n([Ae({type:Number,reflect:!0,attribute:"tabindex"})],e.prototype,"tabIndex",2),n([Ae({type:Boolean,reflect:!0,attribute:"aria-disabled",converter:Vt})],e.prototype,"disabled",2),n([Ae({type:Boolean,reflect:!0,attribute:"aria-readonly",converter:Vt})],e.prototype,"readonly",2),n([x("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"handleDisabledChange",1),e}import{customElement as Cr}from"lit/decorators.js";import{html as qr,LitElement as Tr}from"lit";import{css as Er}from"lit";var $t=Er`
1
+ import{a as Dt}from"../chunk-JOALQWA3.js";import{a as b,b as C,c as n}from"../chunk-NYAUPIAG.js";import{provide as hr}from"@lit/context";import{LitElement as fr,html as gr}from"lit";import{customElement as br,property as K}from"lit/decorators.js";function x(c,i){let e=b({waitUntilFirstUpdate:!1},i);return(t,r)=>{let{update:s}=t,o=Array.isArray(c)?c:[c];t.update=function(a){o.forEach(l=>{let p=l;if(a.has(p)){let d=a.get(p),u=this[p];d!==u&&(!e.waitUntilFirstUpdate||this.hasUpdated)&&this[r](d,u)}}),s.call(this,a)}}}import{createContext as mr}from"@lit/context";var Ht=[{identifier:"completionStatus",cardinality:"single",baseType:"string",value:"unknown",type:"outcome"},{identifier:"numAttempts",cardinality:"single",baseType:"integer",value:"0",type:"response"}],L=mr("item");var q=class extends fr{constructor(){super();this.identifier="";this.adaptive="false";this.timeDependent=null;this._handleDisabledChange=(e,t)=>{this._interactionElements.forEach(r=>r.disabled=t)};this._handleReadonlyChange=(e,t)=>this._interactionElements.forEach(r=>r.readonly=t);this._context={identifier:this.getAttribute("identifier"),variables:Ht};this._initialContext=C(b({},this._context),{variables:this._context.variables});this._feedbackElements=[];this._interactionElements=[];this.addEventListener("qti-register-variable",e=>{this._context=C(b({},this._context),{variables:[...this._context.variables,e.detail.variable]}),this._initialContext=this._context,e.stopPropagation()}),this.addEventListener("qti-register-feedback",e=>{e.stopPropagation();let t=e.detail;this._feedbackElements.push(t),t.checkShowFeedback(t.outcomeIdentifier)}),this.addEventListener("qti-register-interaction",e=>{e.stopPropagation(),this._interactionElements.push(e.target)}),this.addEventListener("end-attempt",e=>{let{responseIdentifier:t,countAttempt:r}=e.detail;this.updateResponseVariable(t,"true"),this.processResponse(r)}),this.addEventListener("qti-set-outcome-value",e=>{let{outcomeIdentifier:t,value:r}=e.detail;this.updateOutcomeVariable(t,r),e.stopPropagation()}),this.addEventListener("qti-interaction-response",this.handleUpdateResponseVariable)}get variables(){return this._context.variables.map(e=>b({identifier:e.identifier,value:e.value,type:e.type},e.type==="outcome"&&e.identifier==="SCORE"?{externalScored:e.externalScored}:{}))}set variables(e){if(!Array.isArray(e)||e.some(t=>!("identifier"in t))){console.warn("variables property should be an array of VariableDeclaration");return}this._context=C(b({},this._context),{variables:this._context.variables.map(t=>{let r=e.find(s=>s.identifier===t.identifier);return r?b(b({},t),r):t})}),this._context.variables.forEach(t=>{if(t.type==="response"){let r=this._interactionElements.find(s=>s.responseIdentifier===t.identifier);r&&(r.response=t.value)}t.type==="outcome"&&this._feedbackElements.forEach(r=>r.checkShowFeedback(t.identifier))})}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this._emit("qti-assessment-item-connected",this)}set responses(e){if(e)for(let t of e){this.getResponse(t.responseIdentifier)&&this.updateResponseVariable(t.responseIdentifier,t.response);let s=this._interactionElements.find(o=>o.getAttribute("response-identifier")===t.responseIdentifier);s&&(s.response=t.response)}}render(){return gr`<slot></slot>`}showCorrectResponse(e){let r=this._context.variables.filter(s=>"correctResponse"in s&&s.correctResponse).map(s=>({responseIdentifier:s.identifier,response:s.correctResponse}));for(let s of r){let o=this._interactionElements.find(a=>a.getAttribute("response-identifier")===s.responseIdentifier);o&&(o.correctResponse=e?s.response:"")}}processResponse(e=!0){var r;let t=this.querySelector("qti-response-processing");return!t||!t.process?!1:(t.process(),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",this._getCompletionStatus()),e&&this.updateOutcomeVariable("numAttempts",(+((r=this._context.variables.find(s=>s.identifier==="numAttempts"))==null?void 0:r.value)+1).toString()),this._emit("qti-response-processed"),!0)}resetResponses(){this._context=this._initialContext}getResponse(e){return this.getVariable(e)}getOutcome(e){return this.getVariable(e)}getVariable(e){return this._context.variables.find(t=>t.identifier===e)||null}handleUpdateResponseVariable(e){let{responseIdentifier:t,response:r}=e.detail;this.updateResponseVariable(t,r)}updateResponseVariable(e,t){this._context=C(b({},this._context),{variables:this._context.variables.map(r=>r.identifier!==e?r:C(b({},r),{value:t}))}),this._emit("qti-interaction-changed",{item:this.identifier,responseIdentifier:e,response:Array.isArray(t)?[...t]:t}),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",this._getCompletionStatus())}updateOutcomeVariable(e,t){var s;let r=this.getOutcome(e);if(!r){console.warn(`Can not set qti-outcome-identifier: ${e}, it is not available`);return}this._context=C(b({},this._context),{variables:this._context.variables.map(o=>o.identifier!==e?o:C(b({},o),{value:r.cardinality==="single"?t:[...o.value,t]}))}),this._feedbackElements.forEach(o=>o.checkShowFeedback(e)),this._emit("qti-outcome-changed",{item:this.identifier,outcomeIdentifier:e,value:(s=this._context.variables.find(o=>o.identifier===e))==null?void 0:s.value})}_getCompletionStatus(){return this._interactionElements.every(e=>e.validate())?"completed":this._interactionElements.some(e=>e.validate())?"incomplete":"not_attempted"}_emit(e,t=null){this.dispatchEvent(new CustomEvent(e,{bubbles:!0,composed:!0,detail:t}))}};n([K({type:String})],q.prototype,"title",2),n([K({type:String})],q.prototype,"identifier",2),n([K({type:String})],q.prototype,"adaptive",2),n([K({type:String})],q.prototype,"timeDependent",2),n([K({type:Boolean})],q.prototype,"disabled",2),n([x("disabled",{waitUntilFirstUpdate:!0})],q.prototype,"_handleDisabledChange",2),n([K({type:Boolean})],q.prototype,"readonly",2),n([x("readonly",{waitUntilFirstUpdate:!0})],q.prototype,"_handleReadonlyChange",2),n([hr({context:L})],q.prototype,"_context",2),q=n([br("qti-assessment-item")],q);import{LitElement as vr}from"lit";import{customElement as yr,property as Nt}from"lit/decorators.js";var W=class extends vr{constructor(){super(...arguments);this.identifier="";this.href=""}async connectedCallback(){super.connectedCallback();let e=new Event("qti-assessment-stimulus-ref-connected",{cancelable:!0,bubbles:!0});if(this.dispatchEvent(e)){let s=this.closest("qti-assessment-item").querySelector(`[data-stimulus-idref=${this.identifier}]`);s?await this.updateStimulusRef(s):console.warn(`Stimulus with data-stimulus-idref ${this.identifier} not found`)}}async updateStimulusRef(e){let t=this.href.substring(0,this.href.lastIndexOf("/")),r=await Dt().load(this.href).then(s=>s.path(t).htmldoc());if(r){let s=r.querySelectorAll("qti-stimulus-body, qti-stylesheet");e.innerHTML="",e.append(...s)}}};n([Nt({type:String})],W.prototype,"identifier",2),n([Nt({type:String})],W.prototype,"href",2),W=n([yr("qti-assessment-stimulus-ref")],W);import{html as xr}from"lit";import{property as Ae}from"lit/decorators.js";var Vt={toAttribute:c=>c?"true":"false",fromAttribute:c=>c==="true"};function R(c,i){class e extends c{constructor(...s){super(...s);this.identifier="";this.tabIndex=0;this.disabled=!1;this.readonly=!1;this._internals=this.attachInternals()}handleDisabledChange(s,o){this.tabIndex=o?-1:0,o&&this.blur()}setInternalState(s,o){o&&!this._internals.states.has(s)?this._internals.states.add(s):!o&&this._internals.states.has(s)&&this._internals.states.delete(s)}connectedCallback(){super.connectedCallback(),this.addEventListener("keyup",this._onKeyUp),this.addEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent(`register-${i}`,{bubbles:!0,composed:!0}))}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("keyup",this._onKeyUp),this.removeEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent(`unregister-${i}`,{bubbles:!0,composed:!0}))}_onKeyUp(s){s.altKey||s.code==="Space"&&(s.preventDefault(),this._activate())}_onClick(){this.disabled||this.readonly||(this.focus(),this._activate())}_activate(){this.disabled||this.readonly||this.dispatchEvent(new CustomEvent(`activate-${i}`,{bubbles:!0,composed:!0,detail:{identifier:this.identifier}}))}render(){return xr`<slot></slot>`}}return n([Ae({type:String})],e.prototype,"identifier",2),n([Ae({type:Number,reflect:!0,attribute:"tabindex"})],e.prototype,"tabIndex",2),n([Ae({type:Boolean,reflect:!0,attribute:"aria-disabled",converter:Vt})],e.prototype,"disabled",2),n([Ae({type:Boolean,reflect:!0,attribute:"aria-readonly",converter:Vt})],e.prototype,"readonly",2),n([x("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"handleDisabledChange",1),e}import{customElement as Cr}from"lit/decorators.js";import{html as qr,LitElement as Tr}from"lit";import{css as Er}from"lit";var $t=Er`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,5 +1,5 @@
1
1
  import { LitElement } from 'lit';
2
- import { p as QtiAssessmentItem } from '../qti-simple-choice-CWJsmgbB.js';
2
+ import { Q as QtiAssessmentItem } from '../qti-simple-choice-BdZuFHJR.js';
3
3
  import 'lit-html';
4
4
  import 'lit-html/directives/ref.js';
5
5
 
@@ -1,2 +1,2 @@
1
- import{a as c,b as h,c as m}from"../chunk-PQ5G7ZQ7.js";import"../chunk-NYAUPIAG.js";var l=t=>t.endsWith("/")?t:`${t}/`,g=async(t,e,n=!0)=>{let a=l(t),i=await h().load(`${a}imsmanifest.xml`).then(s=>s.assessmentTest()),f=await m().load(`${a}${i.href}`).then(s=>s.items()),r=`${a}${i.href.substring(0,i.href.lastIndexOf("/"))}/${f[e].href}`,o=await c().load(r,n).then(s=>s.path(r.substring(0,r.lastIndexOf("/"))).stripStyleSheets());return{itemHTMLDoc:o.htmldoc(),itemHTML:o.html(),items:f}},$=async t=>{let e=l(t),n=await h().load(`${e}imsmanifest.xml`).then(s=>s.assessmentTest()),a=await m().load(`${e}${n.href}`).then(s=>s.htmldoc()),i=await m().load(`${e}${n.href}`).then(s=>s.items()),r=`${e.substring(0,e.lastIndexOf("/"))}/${n.href.substring(0,n.href.lastIndexOf("/"))}`,o=`${r}/${i[0].href.substring(0,i[0].href.lastIndexOf("/"))}`;return{assessmentXML:a,itemLocation:o,assessmentLocation:r,items:i,testIdentifier:n.identifier}},x=async(t,e=!0)=>c().load(t,e).then(n=>n.path(t.substring(0,t.lastIndexOf("/"))).stripStyleSheets().htmldoc().firstElementChild);export{$ as getAssessmentData,g as getItemByIndex,x as getItemByUri};
1
+ import{a as c,b as h,c as m}from"../chunk-JOALQWA3.js";import"../chunk-NYAUPIAG.js";var l=t=>t.endsWith("/")?t:`${t}/`,g=async(t,e,n=!0)=>{let a=l(t),i=await h().load(`${a}imsmanifest.xml`).then(s=>s.assessmentTest()),f=await m().load(`${a}${i.href}`).then(s=>s.items()),r=`${a}${i.href.substring(0,i.href.lastIndexOf("/"))}/${f[e].href}`,o=await c().load(r,n).then(s=>s.path(r.substring(0,r.lastIndexOf("/"))).stripStyleSheets());return{itemHTMLDoc:o.htmldoc(),itemHTML:o.html(),items:f}},$=async t=>{let e=l(t),n=await h().load(`${e}imsmanifest.xml`).then(s=>s.assessmentTest()),a=await m().load(`${e}${n.href}`).then(s=>s.htmldoc()),i=await m().load(`${e}${n.href}`).then(s=>s.items()),r=`${e.substring(0,e.lastIndexOf("/"))}/${n.href.substring(0,n.href.lastIndexOf("/"))}`,o=`${r}/${i[0].href.substring(0,i[0].href.lastIndexOf("/"))}`;return{assessmentXML:a,itemLocation:o,assessmentLocation:r,items:i,testIdentifier:n.identifier}},x=async(t,e=!0)=>c().load(t,e).then(n=>n.path(t.substring(0,t.lastIndexOf("/"))).stripStyleSheets().htmldoc().firstElementChild);export{$ as getAssessmentData,g as getItemByIndex,x as getItemByUri};
2
2
  //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2xpYi9xdGktbG9hZGVyL3F0aS1sb2FkZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHF0aVRyYW5zZm9ybUl0ZW0sIHF0aVRyYW5zZm9ybU1hbmlmZXN0LCBxdGlUcmFuc2Zvcm1UZXN0IH0gZnJvbSAnLi4vcXRpLXRyYW5zZm9ybWVycyc7XG5cbmV4cG9ydCB0eXBlIE1hbmlmZXN0RGF0YSA9IHtcbiAgaXRlbUxvY2F0aW9uOiBzdHJpbmc7XG4gIHRlc3RJZGVudGlmaWVyOiBzdHJpbmc7XG4gIGFzc2Vzc21lbnRYTUw6IERvY3VtZW50RnJhZ21lbnQ7XG4gIGFzc2Vzc21lbnRMb2NhdGlvbjogc3RyaW5nO1xuICBpdGVtczoge1xuICAgICAgaWRlbnRpZmllcjogc3RyaW5nO1xuICAgICAgaHJlZjogc3RyaW5nO1xuICAgICAgY2F0ZWdvcnk6IHN0cmluZztcbiAgfVtdO1xufTtcblxuLy8gVXRpbGl0eSBmdW5jdGlvbiB0byBlbnN1cmUgcGFja2FnZSBVUklzIGVuZCB3aXRoIGEgJy8nXG5jb25zdCBub3JtYWxpemVVcmkgPSAodXJpOiBzdHJpbmcpID0+ICh1cmkuZW5kc1dpdGgoJy8nKSA/IHVyaSA6IGAke3VyaX0vYCk7XG5cbi8vIEZldGNoZXMgYW4gaXRlbSBmcm9tIGEgbWFuaWZlc3QgYnkgaW5kZXhcbmV4cG9ydCBjb25zdCBnZXRJdGVtQnlJbmRleCA9IGFzeW5jIChwYWNrYWdlVXJpOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIGNhbmNlbFByZXZpb3VzUmVxdWVzdCA9IHRydWUpOiBQcm9taXNlPGFueT4gPT4ge1xuICBjb25zdCBub3JtYWxpemVkVXJpID0gbm9ybWFsaXplVXJpKHBhY2thZ2VVcmkpO1xuXG4gIGNvbnN0IHRlc3QgPSBhd2FpdCBxdGlUcmFuc2Zvcm1NYW5pZmVzdCgpXG4gICAgLmxvYWQoYCR7bm9ybWFsaXplZFVyaX1pbXNtYW5pZmVzdC54bWxgKVxuICAgIC50aGVuKGFwaSA9PiBhcGkuYXNzZXNzbWVudFRlc3QoKSk7XG5cbiAgY29uc3QgaXRlbXMgPSBhd2FpdCBxdGlUcmFuc2Zvcm1UZXN0KClcbiAgICAubG9hZChgJHtub3JtYWxpemVkVXJpfSR7dGVzdC5ocmVmfWApXG4gICAgLnRoZW4oYXBpID0+IGFwaS5pdGVtcygpKTtcblxuICBjb25zdCBpdGVtVXJpID0gYCR7bm9ybWFsaXplZFVyaX0ke3Rlc3QuaHJlZi5zdWJzdHJpbmcoMCwgdGVzdC5ocmVmLmxhc3RJbmRleE9mKCcvJykpfS8ke2l0ZW1zW2luZGV4XS5ocmVmfWA7XG5cbiAgY29uc3QgaXRlbURvYyA9IGF3YWl0IHF0aVRyYW5zZm9ybUl0ZW0oKVxuICAgIC5sb2FkKGl0ZW1VcmksIGNhbmNlbFByZXZpb3VzUmVxdWVzdClcbiAgICAudGhlbihhcGkgPT4gYXBpLnBhdGgoaXRlbVVyaS5zdWJzdHJpbmcoMCwgaXRlbVVyaS5sYXN0SW5kZXhPZignLycpKSkuc3RyaXBTdHlsZVNoZWV0cygpKTtcblxuICByZXR1cm4ge1xuICAgIGl0ZW1IVE1MRG9jOiBpdGVtRG9jLmh0bWxkb2MoKSxcbiAgICBpdGVtSFRNTDogaXRlbURvYy5odG1sKCksXG4gICAgaXRlbXNcbiAgfTtcbn07XG5cbi8vIEZldGNoZXMgYXNzZXNzbWVudCBkYXRhIGZyb20gdGhlIG1hbmlmZXN0XG5leHBvcnQgY29uc3QgZ2V0QXNzZXNzbWVudERhdGEgPSBhc3luYyAocGFja2FnZVVyaTogc3RyaW5nKTogUHJvbWlzZTxNYW5pZmVzdERhdGE+ID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZFVyaSA9IG5vcm1hbGl6ZVVyaShwYWNrYWdlVXJpKTtcblxuICBjb25zdCB0ZXN0ID0gYXdhaXQgcXRpVHJhbnNmb3JtTWFuaWZlc3QoKVxuICAgIC5sb2FkKGAke25vcm1hbGl6ZWRVcml9aW1zbWFuaWZlc3QueG1sYClcbiAgICAudGhlbihhcGkgPT4gYXBpLmFzc2Vzc21lbnRUZXN0KCkpO1xuXG4gIGNvbnN0IGFzc2Vzc21lbnREb2MgPSBhd2FpdCBxdGlUcmFuc2Zvcm1UZXN0KClcbiAgICAubG9hZChgJHtub3JtYWxpemVkVXJpfSR7dGVzdC5ocmVmfWApXG4gICAgLnRoZW4oYXBpID0+IGFwaS5odG1sZG9jKCkpO1xuXG4gIGNvbnN0IGl0ZW1zID0gYXdhaXQgcXRpVHJhbnNmb3JtVGVzdCgpXG4gICAgLmxvYWQoYCR7bm9ybWFsaXplZFVyaX0ke3Rlc3QuaHJlZn1gKVxuICAgIC50aGVuKGFwaSA9PiBhcGkuaXRlbXMoKSk7XG5cbiAgY29uc3QgYmFzZVVyaSA9IG5vcm1hbGl6ZWRVcmkuc3Vic3RyaW5nKDAsIG5vcm1hbGl6ZWRVcmkubGFzdEluZGV4T2YoJy8nKSk7XG4gIGNvbnN0IGFzc2Vzc21lbnRMb2NhdGlvbiA9IGAke2Jhc2VVcml9LyR7dGVzdC5ocmVmLnN1YnN0cmluZygwLCB0ZXN0LmhyZWYubGFzdEluZGV4T2YoJy8nKSl9YDtcbiAgY29uc3QgaXRlbUxvY2F0aW9uID0gYCR7YXNzZXNzbWVudExvY2F0aW9ufS8ke2l0ZW1zWzBdLmhyZWYuc3Vic3RyaW5nKDAsIGl0ZW1zWzBdLmhyZWYubGFzdEluZGV4T2YoJy8nKSl9YDtcblxuICByZXR1cm4ge1xuICAgIGFzc2Vzc21lbnRYTUw6IGFzc2Vzc21lbnREb2MsXG4gICAgaXRlbUxvY2F0aW9uLFxuICAgIGFzc2Vzc21lbnRMb2NhdGlvbixcbiAgICBpdGVtcyxcbiAgICB0ZXN0SWRlbnRpZmllcjogdGVzdC5pZGVudGlmaWVyXG4gIH07XG59O1xuXG4vLyBGZXRjaGVzIGEgc2luZ2xlIGl0ZW0gYnkgVVJJXG5leHBvcnQgY29uc3QgZ2V0SXRlbUJ5VXJpID0gYXN5bmMgKGl0ZW1Vcmk6IHN0cmluZywgY2FuY2VsUHJldmlvdXNSZXF1ZXN0ID0gdHJ1ZSk6IFByb21pc2U8RWxlbWVudD4gPT4ge1xuICByZXR1cm4gcXRpVHJhbnNmb3JtSXRlbSgpXG4gICAgLmxvYWQoaXRlbVVyaSwgY2FuY2VsUHJldmlvdXNSZXF1ZXN0KVxuICAgIC50aGVuKGFwaSA9PlxuICAgICAgYXBpXG4gICAgICAgIC5wYXRoKGl0ZW1Vcmkuc3Vic3RyaW5nKDAsIGl0ZW1VcmkubGFzdEluZGV4T2YoJy8nKSkpXG4gICAgICAgIC5zdHJpcFN0eWxlU2hlZXRzKClcbiAgICAgICAgLmh0bWxkb2MoKS5maXJzdEVsZW1lbnRDaGlsZFxuICAgICk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIm9GQWVBLElBQU1BLEVBQWdCQyxHQUFpQkEsRUFBSSxTQUFTLEdBQUcsRUFBSUEsRUFBTSxHQUFHQSxDQUFHLElBRzFEQyxFQUFpQixNQUFPQyxFQUFvQkMsRUFBZUMsRUFBd0IsS0FBdUIsQ0FDckgsSUFBTUMsRUFBZ0JOLEVBQWFHLENBQVUsRUFFdkNJLEVBQU8sTUFBTUMsRUFBcUIsRUFDckMsS0FBSyxHQUFHRixDQUFhLGlCQUFpQixFQUN0QyxLQUFLRyxHQUFPQSxFQUFJLGVBQWUsQ0FBQyxFQUU3QkMsRUFBUSxNQUFNQyxFQUFpQixFQUNsQyxLQUFLLEdBQUdMLENBQWEsR0FBR0MsRUFBSyxJQUFJLEVBQUUsRUFDbkMsS0FBS0UsR0FBT0EsRUFBSSxNQUFNLENBQUMsRUFFcEJHLEVBQVUsR0FBR04sQ0FBYSxHQUFHQyxFQUFLLEtBQUssVUFBVSxFQUFHQSxFQUFLLEtBQUssWUFBWSxHQUFHLENBQUMsQ0FBQyxJQUFJRyxFQUFNTixDQUFLLEVBQUUsSUFBSSxHQUVwR1MsRUFBVSxNQUFNQyxFQUFpQixFQUNwQyxLQUFLRixFQUFTUCxDQUFxQixFQUNuQyxLQUFLSSxHQUFPQSxFQUFJLEtBQUtHLEVBQVEsVUFBVSxFQUFHQSxFQUFRLFlBQVksR0FBRyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxFQUUxRixNQUFPLENBQ0wsWUFBYUMsRUFBUSxRQUFRLEVBQzdCLFNBQVVBLEVBQVEsS0FBSyxFQUN2QixNQUFBSCxDQUNGLENBQ0YsRUFHYUssRUFBb0IsTUFBT1osR0FBOEMsQ0FDcEYsSUFBTUcsRUFBZ0JOLEVBQWFHLENBQVUsRUFFdkNJLEVBQU8sTUFBTUMsRUFBcUIsRUFDckMsS0FBSyxHQUFHRixDQUFhLGlCQUFpQixFQUN0QyxLQUFLRyxHQUFPQSxFQUFJLGVBQWUsQ0FBQyxFQUU3Qk8sRUFBZ0IsTUFBTUwsRUFBaUIsRUFDMUMsS0FBSyxHQUFHTCxDQUFhLEdBQUdDLEVBQUssSUFBSSxFQUFFLEVBQ25DLEtBQUtFLEdBQU9BLEVBQUksUUFBUSxDQUFDLEVBRXRCQyxFQUFRLE1BQU1DLEVBQWlCLEVBQ2xDLEtBQUssR0FBR0wsQ0FBYSxHQUFHQyxFQUFLLElBQUksRUFBRSxFQUNuQyxLQUFLRSxHQUFPQSxFQUFJLE1BQU0sQ0FBQyxFQUdwQlEsRUFBcUIsR0FEWFgsRUFBYyxVQUFVLEVBQUdBLEVBQWMsWUFBWSxHQUFHLENBQUMsQ0FDcEMsSUFBSUMsRUFBSyxLQUFLLFVBQVUsRUFBR0EsRUFBSyxLQUFLLFlBQVksR0FBRyxDQUFDLENBQUMsR0FDckZXLEVBQWUsR0FBR0QsQ0FBa0IsSUFBSVAsRUFBTSxDQUFDLEVBQUUsS0FBSyxVQUFVLEVBQUdBLEVBQU0sQ0FBQyxFQUFFLEtBQUssWUFBWSxHQUFHLENBQUMsQ0FBQyxHQUV4RyxNQUFPLENBQ0wsY0FBZU0sRUFDZixhQUFBRSxFQUNBLG1CQUFBRCxFQUNBLE1BQUFQLEVBQ0EsZUFBZ0JILEVBQUssVUFDdkIsQ0FDRixFQUdhWSxFQUFlLE1BQU9QLEVBQWlCUCxFQUF3QixLQUNuRVMsRUFBaUIsRUFDckIsS0FBS0YsRUFBU1AsQ0FBcUIsRUFDbkMsS0FBS0ksR0FDSkEsRUFDRyxLQUFLRyxFQUFRLFVBQVUsRUFBR0EsRUFBUSxZQUFZLEdBQUcsQ0FBQyxDQUFDLEVBQ25ELGlCQUFpQixFQUNqQixRQUFRLEVBQUUsaUJBQ2YiLAogICJuYW1lcyI6IFsibm9ybWFsaXplVXJpIiwgInVyaSIsICJnZXRJdGVtQnlJbmRleCIsICJwYWNrYWdlVXJpIiwgImluZGV4IiwgImNhbmNlbFByZXZpb3VzUmVxdWVzdCIsICJub3JtYWxpemVkVXJpIiwgInRlc3QiLCAicXRpVHJhbnNmb3JtTWFuaWZlc3QiLCAiYXBpIiwgIml0ZW1zIiwgInF0aVRyYW5zZm9ybVRlc3QiLCAiaXRlbVVyaSIsICJpdGVtRG9jIiwgInF0aVRyYW5zZm9ybUl0ZW0iLCAiZ2V0QXNzZXNzbWVudERhdGEiLCAiYXNzZXNzbWVudERvYyIsICJhc3Nlc3NtZW50TG9jYXRpb24iLCAiaXRlbUxvY2F0aW9uIiwgImdldEl0ZW1CeVVyaSJdCn0K
@@ -1153,4 +1153,4 @@ declare global {
1153
1153
  }
1154
1154
  }
1155
1155
 
1156
- export { QtiEndAttemptInteraction as $, ActiveElementMixin as A, type BaseType as B, type Calculate as C, QtiFeedbackInline as D, QtiModalFeedback as E, QtiExtendedTextInteraction as F, QtiTextEntryInteraction as G, QtiHottextInteraction as H, type ItemContext as I, QtiInlineChoiceInteraction as J, QtiChoiceInteraction as K, QtiOutcomeProcessing as L, type Multiple as M, QtiOutcomeProcessingProcessor as N, type OutcomeChangedDetails as O, QtiResponseProcessing as P, QtiRule as Q, type ResponseVariable as R, QtiLookupOutcomeValue as S, QtiAnd as T, type MockQtiExpression as U, type VariableDeclaration as V, qtiAndMixin as W, QtiMapping as X, QtiPortableCustomInteraction as Y, QtiAssociateInteraction as Z, QtiCustomInteraction as _, type QtiRuleBase as a, QtiGapMatchInteraction as a0, QtiGraphicAssociateInteraction as a1, QtiGraphicGapMatchInteraction as a2, QtiGraphicOrderInteraction as a3, QtiHotspotInteraction as a4, QtiMatchInteraction as a5, QtiMediaInteraction as a6, QtiOrderInteraction as a7, QtiPositionObjectStage as a8, QtiSelectPointInteraction as a9, QtiSliderInteraction as aa, itemContextVariables as ab, itemContext as ac, QtiCustomOperator as ad, Interaction as ae, QtiAssociableHotspot as af, QtiGap as ag, QtiGapImg as ah, QtiGapText as ai, QtiHotspotChoice as aj, QtiHottext as ak, QtiInlineChoice as al, QtiSimpleAssociableChoice as am, QtiSimpleChoice as an, type QtiExpressionBase as b, QtiExpression as c, QtiConditionExpression as d, type InteractionChangedDetails as e, type QtiInteractionChanged as f, type QtiOutcomeChanged as g, type directedPair as h, type ResponseInteraction as i, type float as j, type integer as k, type Ordered as l, type Cardinality as m, type VariableValue as n, type OutcomeVariable as o, QtiAssessmentItem as p, QtiAssessmentStimulusRef as q, type ChoiceInterface as r, QtiPrompt as s, QtiStylesheet as t, QtiOutcomeDeclaration as u, QtiResponseDeclaration as v, QtiCompanionMaterialsInfo as w, QtiContentBody as x, QtiRubricBlock as y, QtiFeedbackBlock as z };
1156
+ export { QtiEndAttemptInteraction as $, ActiveElementMixin as A, type BaseType as B, type Calculate as C, QtiFeedbackInline as D, QtiModalFeedback as E, QtiExtendedTextInteraction as F, QtiTextEntryInteraction as G, QtiHottextInteraction as H, type ItemContext as I, QtiInlineChoiceInteraction as J, QtiChoiceInteraction as K, QtiOutcomeProcessing as L, type Multiple as M, QtiOutcomeProcessingProcessor as N, type OutcomeChangedDetails as O, QtiResponseProcessing as P, QtiAssessmentItem as Q, type ResponseVariable as R, QtiLookupOutcomeValue as S, QtiAnd as T, type MockQtiExpression as U, type VariableDeclaration as V, qtiAndMixin as W, QtiMapping as X, QtiPortableCustomInteraction as Y, QtiAssociateInteraction as Z, QtiCustomInteraction as _, QtiRule as a, QtiGapMatchInteraction as a0, QtiGraphicAssociateInteraction as a1, QtiGraphicGapMatchInteraction as a2, QtiGraphicOrderInteraction as a3, QtiHotspotInteraction as a4, QtiMatchInteraction as a5, QtiMediaInteraction as a6, QtiOrderInteraction as a7, QtiPositionObjectStage as a8, QtiSelectPointInteraction as a9, QtiSliderInteraction as aa, itemContextVariables as ab, itemContext as ac, QtiCustomOperator as ad, Interaction as ae, QtiAssociableHotspot as af, QtiGap as ag, QtiGapImg as ah, QtiGapText as ai, QtiHotspotChoice as aj, QtiHottext as ak, QtiInlineChoice as al, QtiSimpleAssociableChoice as am, QtiSimpleChoice as an, type QtiRuleBase as b, type QtiExpressionBase as c, QtiExpression as d, QtiConditionExpression as e, type InteractionChangedDetails as f, type QtiInteractionChanged as g, type QtiOutcomeChanged as h, type directedPair as i, type ResponseInteraction as j, type float as k, type integer as l, type Ordered as m, type Cardinality as n, type VariableValue as o, type OutcomeVariable as p, QtiAssessmentStimulusRef as q, type ChoiceInterface as r, QtiPrompt as s, QtiStylesheet as t, QtiOutcomeDeclaration as u, QtiResponseDeclaration as v, QtiCompanionMaterialsInfo as w, QtiContentBody as x, QtiRubricBlock as y, QtiFeedbackBlock as z };
@@ -15,7 +15,6 @@
15
15
  */
16
16
  type transformItemApi = {
17
17
  load: (uri: string, cancelPreviousRequest?: boolean) => Promise<transformItemApi>;
18
- set(xmlDocument: XMLDocument): transformItemApi;
19
18
  parse: (xmlString: string) => transformItemApi;
20
19
  path: (location: string) => transformItemApi;
21
20
  fn: (fn: (xmlFragment: XMLDocument) => void) => transformItemApi;
@@ -55,12 +54,11 @@ declare const qtiTransformManifest: () => {
55
54
  * const html = qtiTransformer.html();
56
55
  * const xml = qtiTransformer.xml();
57
56
  */
58
- declare const qtiTransformTest: () => {
59
- load: (uri: string) => Promise<any>;
60
- set: (xmlDocument: XMLDocument) => any;
61
- parse: (xmlString: string) => any;
62
- extendElementName: (elementName: string, extend: string) => transformItemApi;
63
- fn: (fn: (xmlFragment: XMLDocument) => void) => any;
57
+ type transformTestApi = {
58
+ load: (uri: string) => Promise<transformTestApi>;
59
+ parse: (xmlString: string) => transformTestApi;
60
+ extendElementName: (tagName: string, extend: string) => transformTestApi;
61
+ fn: (fn: (xmlFragment: XMLDocument) => void) => transformTestApi;
64
62
  items: () => {
65
63
  identifier: string;
66
64
  href: string;
@@ -71,5 +69,6 @@ declare const qtiTransformTest: () => {
71
69
  htmldoc: () => DocumentFragment;
72
70
  xmldoc: () => XMLDocument;
73
71
  };
72
+ declare const qtiTransformTest: () => transformTestApi;
74
73
 
75
- export { qtiTransformItem, qtiTransformManifest, qtiTransformTest, type transformItemApi };
74
+ export { qtiTransformItem, qtiTransformManifest, qtiTransformTest, type transformItemApi, type transformTestApi };
@@ -1,2 +1,2 @@
1
- import{a,b,c}from"../chunk-PQ5G7ZQ7.js";import"../chunk-NYAUPIAG.js";export{a as qtiTransformItem,b as qtiTransformManifest,c as qtiTransformTest};
1
+ import{a,b,c}from"../chunk-JOALQWA3.js";import"../chunk-NYAUPIAG.js";export{a as qtiTransformItem,b as qtiTransformManifest,c as qtiTransformTest};
2
2
  //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFtdLAogICJzb3VyY2VzQ29udGVudCI6IFtdLAogICJtYXBwaW5ncyI6ICIiLAogICJuYW1lcyI6IFtdCn0K
package/package.json CHANGED
@@ -21,7 +21,7 @@
21
21
  "engines": {
22
22
  "node": ">=20.0.0"
23
23
  },
24
- "version": "6.9.1-beta.42",
24
+ "version": "6.9.1-beta.43",
25
25
  "type": "module",
26
26
  "exports": {
27
27
  "./qti-components": "./dist/qti-components/index.js",
@@ -1,24 +0,0 @@
1
- var h=String.raw,D=()=>{let e,r={async load(t,n=!1){return new Promise((s,i)=>{u(t,n).then(o=>(e=o,s(r)))})},set(t){return e=t,r},parse(t){return e=p(t),r},path:t=>(A(e,t),r),fn(t){return t(e),r},pciHooks(t){let n=["hook","module"],s=t.substring(0,t.lastIndexOf("/"));for(let i of n)e.querySelectorAll("["+i+"]").forEach(a=>{let m=a.getAttribute(i);!m.startsWith("data:")&&!m.startsWith("http")&&(a.setAttribute("base-url",t),a.setAttribute("module",s+"/"+encodeURI(m+(m.endsWith(".js")?"":".js"))))});return r},extendElementName:(t,n)=>(f(e,t,n),r),extendElementsWithClass:(t="extend")=>(d(e,t),r),customInteraction(t,n){let s=e.querySelector("qti-custom-interaction"),i=s.querySelector("object");return s.setAttribute("data-base-ref",t),s.setAttribute("data-base-item",t+n),s.setAttribute("data",i.getAttribute("data")),s.setAttribute("width",i.getAttribute("width")),s.setAttribute("height",i.getAttribute("height")),s.removeChild(i),r},convertCDATAtoComment(){return b(e),r},stripStyleSheets(){return L(e),r},html(){return new XMLSerializer().serializeToString(c(e))},xml(){return new XMLSerializer().serializeToString(e)},htmldoc(){return c(e)},xmldoc(){return e}};return r},M=()=>{let e,r={async load(t){return new Promise((n,s)=>{u(t).then(i=>(e=i,n(r)))})},parse(t){e=p(t)},assessmentTest(){let t=e.querySelector('resource[type="imsqti_test_xmlv3p0"]');return{href:t.getAttribute("href"),identifier:t.getAttribute("identifier")}}};return r},T=()=>{let e,r={async load(t){return new Promise((n,s)=>{u(t).then(i=>(e=i,n(r)))})},set(t){return e=t,r},parse(t){return e=p(t),r},extendElementName:(t,n)=>(f(e,t,n),r),fn(t){return t(e),r},items(){return y(e)},html(){return new XMLSerializer().serializeToString(c(e))},xml(){return new XMLSerializer().serializeToString(e)},htmldoc(){return c(e)},xmldoc(){return e}};return r},x=h`<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
2
- <xsl:output method="html" version="5.0" encoding="UTF-8" indent="yes" />
3
- <xsl:template match="@*|node()">
4
- <xsl:copy>
5
- <xsl:apply-templates select="@*|node()"/>
6
- </xsl:copy>
7
- </xsl:template>
8
-
9
- <!-- remove existing namespaces -->
10
- <xsl:template match="*">
11
- <!-- remove element prefix -->
12
- <xsl:element name="{local-name()}">
13
- <!-- process attributes -->
14
- <xsl:for-each select="@*">
15
- <!-- remove attribute prefix -->
16
- <xsl:attribute name="{local-name()}">
17
- <xsl:value-of select="."/>
18
- </xsl:attribute>
19
- </xsl:for-each>
20
- <xsl:apply-templates/>
21
- </xsl:element>
22
- </xsl:template>
23
- </xsl:stylesheet>`;function f(e,r,t){e.querySelectorAll(r).forEach(n=>{let s=`${r}-${t}`,i=g(n,s);n.replaceWith(i)})}function d(e,r){e.querySelectorAll("*").forEach(t=>{let n=t.classList;n&&n.forEach(s=>{if(s.startsWith(`${r}:`)){let i=s.slice(`${r}:`.length),o=`${t.nodeName}-${i}`,a=g(t,o);t.replaceWith(a)}})})}function g(e,r){let t=document.createElement(r);for(let n of e.attributes)t.setAttribute(n.name,n.value);for(;e.firstChild;)t.appendChild(e.firstChild);return t}function y(e){let r=[];return e.querySelectorAll("qti-assessment-item-ref").forEach(t=>{let n=t.getAttribute("identifier"),s=t.getAttribute("href"),i=t.getAttribute("category");r.push({identifier:n,href:s,category:i})}),r}var l=null;function u(e,r=!0){return r&&l!==null&&l.abort(),new Promise((t,n)=>{let s=new XMLHttpRequest;l=s,s.open("GET",e,!0),s.responseType="document",s.onload=()=>{s.status>=200&&s.status<300?t(s.responseXML):n(s.statusText)},s.onerror=()=>{n(s.statusText)},s.send()})}function p(e){return new DOMParser().parseFromString(e,"text/xml")}function c(e){let r=new XSLTProcessor,t=new DOMParser().parseFromString(x,"text/xml");return r.importStylesheet(t),r.transformToFragment(e,document)}function A(e,r){r.endsWith("/")||(r+="/"),e.querySelectorAll("[src],[href],[primary-path]").forEach(t=>{var i;let n="";t.getAttribute("src")&&(n="src"),t.getAttribute("href")&&(n="href"),t.getAttribute("primary-path")&&(n="primary-path");let s=(i=t.getAttribute(n))==null?void 0:i.trim();if(!s.startsWith("data:")&&!s.startsWith("http")){let o=r+encodeURI(s);t.setAttribute(n,o)}})}function b(e){e.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value').forEach(t=>{let n=document.createComment(t.textContent);t.replaceChild(n,t.firstChild)})}function L(e){e.querySelectorAll("qti-stylesheet").forEach(r=>r.remove())}export{D as a,M as b,T as c};
24
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2xpYi9xdGktdHJhbnNmb3JtZXJzL3F0aS10cmFuc2Zvcm1lcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IHhtbCA9IFN0cmluZy5yYXc7XG5cbi8qKlxuICogQnJvd3NlciBiYXNlZCBRVEktWE1MIHRvIEhUTUwgdHJhbnNmb3JtZXIuXG4gKiBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIG1ldGhvZHMgdG8gbG9hZCwgcGFyc2UsIHRyYW5zZm9ybSBhbmQgc2VyaWFsaXplIFFUSSBYTUwgaXRlbXMuXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCBtZXRob2RzIHRvIGxvYWQsIHBhcnNlLCB0cmFuc2Zvcm0gYW5kIHNlcmlhbGl6ZSBRVEkgWE1MIGl0ZW1zLlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHF0aVRyYW5zZm9ybWVyID0gcXRpVHJhbnNmb3JtSXRlbSgpO1xuICogYXdhaXQgcXRpVHJhbnNmb3JtZXIubG9hZCgncGF0aC90by94bWwvZmlsZS54bWwnKTtcbiAqIHF0aVRyYW5zZm9ybWVyLnBhdGgoJy9hc3Nlc3NtZW50SXRlbS9pdGVtQm9keScpO1xuICogY29uc3QgaHRtbCA9IHF0aVRyYW5zZm9ybWVyLmh0bWwoKTtcbiAqIGNvbnN0IHhtbCA9IHF0aVRyYW5zZm9ybWVyLnhtbCgpO1xuICogY29uc3QgaHRtbGRvYyA9IHF0aVRyYW5zZm9ybWVyLmh0bWxkb2MoKTtcbiAqIGNvbnN0IHhtbGRvYyA9IHF0aVRyYW5zZm9ybWVyLnhtbGRvYygpO1xuICpcbiAqIHF0aVRyYW5zZm9ybUl0ZW0oKS5wYXJzZShzdG9yeVhNTCkuaHRtbCgpXG4gKi9cblxuZXhwb3J0IHR5cGUgdHJhbnNmb3JtSXRlbUFwaSA9IHtcbiAgbG9hZDogKHVyaTogc3RyaW5nLCBjYW5jZWxQcmV2aW91c1JlcXVlc3Q/OiBib29sZWFuKSA9PiBQcm9taXNlPHRyYW5zZm9ybUl0ZW1BcGk+O1xuICBzZXQoeG1sRG9jdW1lbnQ6IFhNTERvY3VtZW50KTogdHJhbnNmb3JtSXRlbUFwaTtcbiAgcGFyc2U6ICh4bWxTdHJpbmc6IHN0cmluZykgPT4gdHJhbnNmb3JtSXRlbUFwaTtcbiAgcGF0aDogKGxvY2F0aW9uOiBzdHJpbmcpID0+IHRyYW5zZm9ybUl0ZW1BcGk7XG4gIGZuOiAoZm46ICh4bWxGcmFnbWVudDogWE1MRG9jdW1lbnQpID0+IHZvaWQpID0+IHRyYW5zZm9ybUl0ZW1BcGk7XG4gIHBjaUhvb2tzOiAodXJpOiBzdHJpbmcpID0+IHRyYW5zZm9ybUl0ZW1BcGk7XG4gIGV4dGVuZEVsZW1lbnROYW1lOiAoZWxlbWVudE5hbWU6IHN0cmluZywgZXh0ZW5kOiBzdHJpbmcpID0+IHRyYW5zZm9ybUl0ZW1BcGk7XG4gIGV4dGVuZEVsZW1lbnRzV2l0aENsYXNzOiAocGFyYW0/OiBzdHJpbmcpID0+IHRyYW5zZm9ybUl0ZW1BcGk7XG4gIGN1c3RvbUludGVyYWN0aW9uOiAoYmFzZVJlZjogc3RyaW5nLCBiYXNlSXRlbTogc3RyaW5nKSA9PiB0cmFuc2Zvcm1JdGVtQXBpO1xuICBjb252ZXJ0Q0RBVEF0b0NvbW1lbnQ6ICgpID0+IHRyYW5zZm9ybUl0ZW1BcGk7XG4gIHN0cmlwU3R5bGVTaGVldHM6ICgpID0+IHRyYW5zZm9ybUl0ZW1BcGk7XG4gIGh0bWw6ICgpID0+IHN0cmluZztcbiAgeG1sOiAoKSA9PiBzdHJpbmc7XG4gIGh0bWxkb2M6ICgpID0+IERvY3VtZW50RnJhZ21lbnQ7XG4gIHhtbGRvYzogKCkgPT4gWE1MRG9jdW1lbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgcXRpVHJhbnNmb3JtSXRlbSA9ICgpID0+IHtcbiAgbGV0IHhtbEZyYWdtZW50OiBYTUxEb2N1bWVudDtcblxuICBjb25zdCBhcGk6IHRyYW5zZm9ybUl0ZW1BcGkgPSB7XG4gICAgYXN5bmMgbG9hZCh1cmk6IHN0cmluZywgY2FuY2VsUHJldmlvdXNSZXF1ZXN0ID0gZmFsc2UpOiBQcm9taXNlPHR5cGVvZiBhcGk+IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx0eXBlb2YgYXBpPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxvYWRYTUwodXJpLCBjYW5jZWxQcmV2aW91c1JlcXVlc3QpLnRoZW4oeG1sID0+IHtcbiAgICAgICAgICB4bWxGcmFnbWVudCA9IHhtbDtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShhcGkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgc2V0KHhtbERvY3VtZW50OiBYTUxEb2N1bWVudCk6IHR5cGVvZiBhcGkge1xuICAgICAgeG1sRnJhZ21lbnQgPSB4bWxEb2N1bWVudDtcbiAgICAgIHJldHVybiBhcGk7XG4gICAgfSxcbiAgICBwYXJzZSh4bWxTdHJpbmc6IHN0cmluZyk6IHR5cGVvZiBhcGkge1xuICAgICAgeG1sRnJhZ21lbnQgPSBwYXJzZVhNTCh4bWxTdHJpbmcpO1xuICAgICAgcmV0dXJuIGFwaTtcbiAgICB9LFxuICAgIHBhdGg6IChsb2NhdGlvbjogc3RyaW5nKTogdHlwZW9mIGFwaSA9PiB7XG4gICAgICBzZXRMb2NhdGlvbih4bWxGcmFnbWVudCwgbG9jYXRpb24pO1xuICAgICAgcmV0dXJuIGFwaTtcbiAgICB9LFxuICAgIGZuKGZuOiAoeG1sRnJhZ21lbnQ6IFhNTERvY3VtZW50KSA9PiB2b2lkKTogdHlwZW9mIGFwaSB7XG4gICAgICBmbih4bWxGcmFnbWVudCk7XG4gICAgICByZXR1cm4gYXBpO1xuICAgIH0sXG4gICAgcGNpSG9va3ModXJpOiBzdHJpbmcpOiB0eXBlb2YgYXBpIHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbJ2hvb2snLCAnbW9kdWxlJ107XG4gICAgICBjb25zdCBkb2N1bWVudFBhdGggPSB1cmkuc3Vic3RyaW5nKDAsIHVyaS5sYXN0SW5kZXhPZignLycpKTtcbiAgICAgIGZvciAoY29uc3QgYXR0cmlidXRlIG9mIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgY29uc3Qgc3JjQXR0cmlidXRlcyA9IHhtbEZyYWdtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1snICsgYXR0cmlidXRlICsgJ10nKTtcbiAgICAgICAgc3JjQXR0cmlidXRlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICAgIGNvbnN0IHNyY1ZhbHVlID0gbm9kZS5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKSE7XG4gICAgICAgICAgaWYgKCFzcmNWYWx1ZS5zdGFydHNXaXRoKCdkYXRhOicpICYmICFzcmNWYWx1ZS5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgICAgIC8vIEp1c3QgcGFzdGUgdGhlIHJlbGF0aXZlIHBhdGggb2YgdGhlIHNyYyBsb2NhdGlvbiBhZnRlciB0aGUgZG9jdW1lbnRyb290UGF0aFxuICAgICAgICAgICAgLy8gb2xkIHBjaXMgY2FuIGhhdmUgYSAuanMsIG5ldyBwY2kncyBkb24ndFxuICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2Jhc2UtdXJsJywgdXJpKTtcbiAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFxuICAgICAgICAgICAgICAnbW9kdWxlJyxcbiAgICAgICAgICAgICAgZG9jdW1lbnRQYXRoICsgJy8nICsgZW5jb2RlVVJJKHNyY1ZhbHVlICsgKHNyY1ZhbHVlLmVuZHNXaXRoKCcuanMnKSA/ICcnIDogJy5qcycpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFwaTtcbiAgICB9LFxuICAgIGV4dGVuZEVsZW1lbnROYW1lOiAodGFnTmFtZTogc3RyaW5nLCBleHRlbnNpb246IHN0cmluZyk6IHR5cGVvZiBhcGkgPT4ge1xuICAgICAgZXh0ZW5kRWxlbWVudE5hbWUoeG1sRnJhZ21lbnQsIHRhZ05hbWUsIGV4dGVuc2lvbik7XG4gICAgICByZXR1cm4gYXBpO1xuICAgIH0sXG4gICAgZXh0ZW5kRWxlbWVudHNXaXRoQ2xhc3M6IChwYXJhbTogc3RyaW5nID0gJ2V4dGVuZCcpOiB0eXBlb2YgYXBpID0+IHtcbiAgICAgIGV4dGVuZEVsZW1lbnRzV2l0aENsYXNzKHhtbEZyYWdtZW50LCBwYXJhbSk7XG4gICAgICByZXR1cm4gYXBpO1xuICAgIH0sXG4gICAgY3VzdG9tSW50ZXJhY3Rpb24oYmFzZVJlZjogc3RyaW5nLCBiYXNlSXRlbTogc3RyaW5nKTogdHlwZW9mIGFwaSB7XG4gICAgICBjb25zdCBxdGlDdXN0b21JbnRlcmFjdGlvbiA9IHhtbEZyYWdtZW50LnF1ZXJ5U2VsZWN0b3IoJ3F0aS1jdXN0b20taW50ZXJhY3Rpb24nKTtcbiAgICAgIGNvbnN0IHF0aUN1c3RvbUludGVyYWN0aW9uT2JqZWN0ID0gcXRpQ3VzdG9tSW50ZXJhY3Rpb24ucXVlcnlTZWxlY3Rvcignb2JqZWN0Jyk7XG5cbiAgICAgIHF0aUN1c3RvbUludGVyYWN0aW9uLnNldEF0dHJpYnV0ZSgnZGF0YS1iYXNlLXJlZicsIGJhc2VSZWYpO1xuICAgICAgcXRpQ3VzdG9tSW50ZXJhY3Rpb24uc2V0QXR0cmlidXRlKCdkYXRhLWJhc2UtaXRlbScsIGJhc2VSZWYgKyBiYXNlSXRlbSk7XG4gICAgICBxdGlDdXN0b21JbnRlcmFjdGlvbi5zZXRBdHRyaWJ1dGUoJ2RhdGEnLCBxdGlDdXN0b21JbnRlcmFjdGlvbk9iamVjdC5nZXRBdHRyaWJ1dGUoJ2RhdGEnKSk7XG4gICAgICBxdGlDdXN0b21JbnRlcmFjdGlvbi5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgcXRpQ3VzdG9tSW50ZXJhY3Rpb25PYmplY3QuZ2V0QXR0cmlidXRlKCd3aWR0aCcpKTtcbiAgICAgIHF0aUN1c3RvbUludGVyYWN0aW9uLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgcXRpQ3VzdG9tSW50ZXJhY3Rpb25PYmplY3QuZ2V0QXR0cmlidXRlKCdoZWlnaHQnKSk7XG5cbiAgICAgIHF0aUN1c3RvbUludGVyYWN0aW9uLnJlbW92ZUNoaWxkKHF0aUN1c3RvbUludGVyYWN0aW9uT2JqZWN0KTtcbiAgICAgIHJldHVybiBhcGk7XG4gICAgfSxcbiAgICBjb252ZXJ0Q0RBVEF0b0NvbW1lbnQoKTogdHlwZW9mIGFwaSB7XG4gICAgICBjb252ZXJ0Q0RBVEF0b0NvbW1lbnQoeG1sRnJhZ21lbnQpO1xuICAgICAgcmV0dXJuIGFwaTtcbiAgICB9LFxuICAgIHN0cmlwU3R5bGVTaGVldHMoKTogdHlwZW9mIGFwaSB7XG4gICAgICBzdHJpcFN0eWxlU2hlZXRzKHhtbEZyYWdtZW50KTtcbiAgICAgIHJldHVybiBhcGk7XG4gICAgfSxcbiAgICBodG1sKCkge1xuICAgICAgcmV0dXJuIG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcodG9IVE1MKHhtbEZyYWdtZW50KSk7XG4gICAgfSxcbiAgICB4bWwoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKHhtbEZyYWdtZW50KTtcbiAgICB9LFxuICAgIGh0bWxkb2MoKSB7XG4gICAgICByZXR1cm4gdG9IVE1MKHhtbEZyYWdtZW50KTtcbiAgICB9LFxuICAgIHhtbGRvYygpOiBYTUxEb2N1bWVudCB7XG4gICAgICByZXR1cm4geG1sRnJhZ21lbnQ7IC8vIG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcoeG1sRnJhZ21lbnQpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFwaTtcbn07XG5cbmV4cG9ydCBjb25zdCBxdGlUcmFuc2Zvcm1NYW5pZmVzdCA9ICgpOiB7XG4gIGxvYWQ6ICh1cmk6IHN0cmluZykgPT4gUHJvbWlzZTx0eXBlb2YgYXBpPjtcbiAgYXNzZXNzbWVudFRlc3Q6ICgpID0+IHsgaHJlZjogc3RyaW5nOyBpZGVudGlmaWVyOiBzdHJpbmcgfTtcbn0gPT4ge1xuICBsZXQgeG1sRnJhZ21lbnQ6IFhNTERvY3VtZW50O1xuXG4gIGNvbnN0IGFwaSA9IHtcbiAgICBhc3luYyBsb2FkKHVyaSkge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHR5cGVvZiBhcGk+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbG9hZFhNTCh1cmkpLnRoZW4oeG1sID0+IHtcbiAgICAgICAgICB4bWxGcmFnbWVudCA9IHhtbDtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShhcGkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcGFyc2UoeG1sU3RyaW5nOiBzdHJpbmcpIHtcbiAgICAgIHhtbEZyYWdtZW50ID0gcGFyc2VYTUwoeG1sU3RyaW5nKTtcbiAgICB9LFxuICAgIGFzc2Vzc21lbnRUZXN0KCkge1xuICAgICAgY29uc3QgZWwgPSB4bWxGcmFnbWVudC5xdWVyeVNlbGVjdG9yKCdyZXNvdXJjZVt0eXBlPVwiaW1zcXRpX3Rlc3RfeG1sdjNwMFwiXScpO1xuICAgICAgcmV0dXJuIHsgaHJlZjogZWwuZ2V0QXR0cmlidXRlKCdocmVmJyksIGlkZW50aWZpZXI6IGVsLmdldEF0dHJpYnV0ZSgnaWRlbnRpZmllcicpIH07XG4gICAgfVxuICB9O1xuICByZXR1cm4gYXBpO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIG1ldGhvZHMgdG8gbG9hZCwgcGFyc2UgYW5kIHRyYW5zZm9ybSBRVEkgdGVzdHMuXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCBtZXRob2RzIHRvIGxvYWQsIHBhcnNlIGFuZCB0cmFuc2Zvcm0gUVRJIHRlc3RzLlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHF0aVRyYW5zZm9ybWVyID0gcXRpVHJhbnNmb3JtVGVzdCgpO1xuICogYXdhaXQgcXRpVHJhbnNmb3JtZXIubG9hZCgnaHR0cHM6Ly9leGFtcGxlLmNvbS90ZXN0LnhtbCcpO1xuICogY29uc3QgaXRlbXMgPSBxdGlUcmFuc2Zvcm1lci5pdGVtcygpO1xuICogY29uc3QgaHRtbCA9IHF0aVRyYW5zZm9ybWVyLmh0bWwoKTtcbiAqIGNvbnN0IHhtbCA9IHF0aVRyYW5zZm9ybWVyLnhtbCgpO1xuICovXG5leHBvcnQgY29uc3QgcXRpVHJhbnNmb3JtVGVzdCA9ICgpOiB7XG4gIGxvYWQ6ICh1cmk6IHN0cmluZykgPT4gUHJvbWlzZTx0eXBlb2YgYXBpPjtcbiAgc2V0OiAoeG1sRG9jdW1lbnQ6IFhNTERvY3VtZW50KSA9PiB0eXBlb2YgYXBpO1xuICBwYXJzZTogKHhtbFN0cmluZzogc3RyaW5nKSA9PiB0eXBlb2YgYXBpO1xuICBleHRlbmRFbGVtZW50TmFtZTogKGVsZW1lbnROYW1lOiBzdHJpbmcsIGV4dGVuZDogc3RyaW5nKSA9PiB0cmFuc2Zvcm1JdGVtQXBpO1xuICBmbjogKGZuOiAoeG1sRnJhZ21lbnQ6IFhNTERvY3VtZW50KSA9PiB2b2lkKSA9PiB0eXBlb2YgYXBpO1xuICBpdGVtczogKCkgPT4geyBpZGVudGlmaWVyOiBzdHJpbmc7IGhyZWY6IHN0cmluZzsgY2F0ZWdvcnk6IHN0cmluZyB9W107XG4gIGh0bWw6ICgpID0+IHN0cmluZztcbiAgeG1sOiAoKSA9PiBzdHJpbmc7XG4gIGh0bWxkb2M6ICgpID0+IERvY3VtZW50RnJhZ21lbnQ7XG4gIHhtbGRvYzogKCkgPT4gWE1MRG9jdW1lbnQ7XG59ID0+IHtcbiAgbGV0IHhtbEZyYWdtZW50OiBYTUxEb2N1bWVudDtcblxuICBjb25zdCBhcGkgPSB7XG4gICAgYXN5bmMgbG9hZCh1cmkpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx0eXBlb2YgYXBpPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxvYWRYTUwodXJpKS50aGVuKHhtbCA9PiB7XG4gICAgICAgICAgeG1sRnJhZ21lbnQgPSB4bWw7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoYXBpKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHNldCh4bWxEb2N1bWVudDogWE1MRG9jdW1lbnQpOiB0eXBlb2YgYXBpIHtcbiAgICAgIHhtbEZyYWdtZW50ID0geG1sRG9jdW1lbnQ7XG4gICAgICByZXR1cm4gYXBpO1xuICAgIH0sXG4gICAgcGFyc2UoeG1sU3RyaW5nOiBzdHJpbmcpIHtcbiAgICAgIHhtbEZyYWdtZW50ID0gcGFyc2VYTUwoeG1sU3RyaW5nKTtcbiAgICAgIHJldHVybiBhcGk7XG4gICAgfSxcbiAgICBleHRlbmRFbGVtZW50TmFtZTogKHRhZ05hbWU6IHN0cmluZywgZXh0ZW5zaW9uOiBzdHJpbmcpOiB0eXBlb2YgYXBpID0+IHtcbiAgICAgIGV4dGVuZEVsZW1lbnROYW1lKHhtbEZyYWdtZW50LCB0YWdOYW1lLCBleHRlbnNpb24pO1xuICAgICAgcmV0dXJuIGFwaTtcbiAgICB9LFxuICAgIGZuKGZuOiAoeG1sRnJhZ21lbnQ6IFhNTERvY3VtZW50KSA9PiB2b2lkKSB7XG4gICAgICBmbih4bWxGcmFnbWVudCk7XG4gICAgICByZXR1cm4gYXBpO1xuICAgIH0sXG4gICAgaXRlbXMoKSB7XG4gICAgICByZXR1cm4gaXRlbXNGcm9tVGVzdCh4bWxGcmFnbWVudCk7XG4gICAgfSxcbiAgICBodG1sKCkge1xuICAgICAgcmV0dXJuIG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcodG9IVE1MKHhtbEZyYWdtZW50KSk7XG4gICAgfSxcbiAgICB4bWwoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKHhtbEZyYWdtZW50KTtcbiAgICB9LFxuICAgIGh0bWxkb2MoKSB7XG4gICAgICByZXR1cm4gdG9IVE1MKHhtbEZyYWdtZW50KTtcbiAgICB9LFxuICAgIHhtbGRvYygpOiBYTUxEb2N1bWVudCB7XG4gICAgICByZXR1cm4geG1sRnJhZ21lbnQ7XG4gICAgfVxuICB9O1xuICByZXR1cm4gYXBpO1xufTtcblxuLyogICA8IS0tIGNvbnZlcnQgQ0RBVEEgdG8gY29tbWVudHMgLS0+XG4gIDx4c2w6dGVtcGxhdGUgbWF0Y2g9XCJ0ZXh0KClbY29udGFpbnMoLiwgJ0NEQVRBJyldXCI+XG4gIDx4c2w6Y29tbWVudD5cbiAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD1cIi5cIi8+XG4gIDwveHNsOmNvbW1lbnQ+XG48L3hzbDp0ZW1wbGF0ZT5cbiovXG5cbi8qXG4gIDwhLS0gcmVtb3ZlIHhtbCBjb21tZW50cyAtLT5cbiAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD1cImNvbW1lbnQoKVwiIC8+XG4gICovXG5cbmNvbnN0IHhtbFRvSFRNTCA9IHhtbGA8eHNsOnN0eWxlc2hlZXQgdmVyc2lvbj1cIjEuMFwiIHhtbG5zOnhzbD1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybVwiPlxuPHhzbDpvdXRwdXQgbWV0aG9kPVwiaHRtbFwiIHZlcnNpb249XCI1LjBcIiBlbmNvZGluZz1cIlVURi04XCIgaW5kZW50PVwieWVzXCIgLz5cbiAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD1cIkAqfG5vZGUoKVwiPlxuICAgIDx4c2w6Y29weT5cbiAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD1cIkAqfG5vZGUoKVwiLz5cbiAgICA8L3hzbDpjb3B5PlxuICA8L3hzbDp0ZW1wbGF0ZT5cblxuICA8IS0tIHJlbW92ZSBleGlzdGluZyBuYW1lc3BhY2VzIC0tPlxuICA8eHNsOnRlbXBsYXRlIG1hdGNoPVwiKlwiPlxuICAgIDwhLS0gcmVtb3ZlIGVsZW1lbnQgcHJlZml4IC0tPlxuICAgIDx4c2w6ZWxlbWVudCBuYW1lPVwie2xvY2FsLW5hbWUoKX1cIj5cbiAgICAgIDwhLS0gcHJvY2VzcyBhdHRyaWJ1dGVzIC0tPlxuICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9XCJAKlwiPlxuICAgICAgICA8IS0tIHJlbW92ZSBhdHRyaWJ1dGUgcHJlZml4IC0tPlxuICAgICAgICA8eHNsOmF0dHJpYnV0ZSBuYW1lPVwie2xvY2FsLW5hbWUoKX1cIj5cbiAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD1cIi5cIi8+XG4gICAgICAgIDwveHNsOmF0dHJpYnV0ZT5cbiAgICAgIDwveHNsOmZvci1lYWNoPlxuICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzLz5cbiAgPC94c2w6ZWxlbWVudD5cbjwveHNsOnRlbXBsYXRlPlxuPC94c2w6c3R5bGVzaGVldD5gO1xuXG4vLyBGdW5jdGlvbiB0byBleHRlbmQgZWxlbWVudHMgd2l0aCBhIHNwZWNpZmljIHRhZyBuYW1lIGJ5IGFkZGluZyBhbiBleHRlbnNpb24gc3VmZml4XG5mdW5jdGlvbiBleHRlbmRFbGVtZW50TmFtZSh4bWxGcmFnbWVudDogWE1MRG9jdW1lbnQsIHRhZ05hbWU6IHN0cmluZywgZXh0ZW5zaW9uOiBzdHJpbmcpIHtcbiAgeG1sRnJhZ21lbnQucXVlcnlTZWxlY3RvckFsbCh0YWdOYW1lKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IG5ld1RhZ05hbWUgPSBgJHt0YWdOYW1lfS0ke2V4dGVuc2lvbn1gO1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBjcmVhdGVFbGVtZW50V2l0aE5ld1RhZ05hbWUoZWxlbWVudCwgbmV3VGFnTmFtZSk7XG4gICAgZWxlbWVudC5yZXBsYWNlV2l0aChuZXdFbGVtZW50KTtcbiAgfSk7XG59XG5cbi8vIEZ1bmN0aW9uIHRvIGV4dGVuZCBhbnkgZWxlbWVudCB3aXRoIGEgc3BlY2lmaWMgY2xhc3MgcGF0dGVybiAoZS5nLiwgXCJleHRlbmQ6c3VmZml4XCIpXG5mdW5jdGlvbiBleHRlbmRFbGVtZW50c1dpdGhDbGFzcyh4bWxGcmFnbWVudDogWE1MRG9jdW1lbnQsIGNsYXNzTmFtZVBhdHRlcm46IHN0cmluZykge1xuICB4bWxGcmFnbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcqJykuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICBjb25zdCBjbGFzc0xpc3QgPSBlbGVtZW50LmNsYXNzTGlzdDtcbiAgICBpZiAoY2xhc3NMaXN0KSB7XG4gICAgICBjbGFzc0xpc3QuZm9yRWFjaChjbGFzc05hbWUgPT4ge1xuICAgICAgICBpZiAoY2xhc3NOYW1lLnN0YXJ0c1dpdGgoYCR7Y2xhc3NOYW1lUGF0dGVybn06YCkpIHtcbiAgICAgICAgICBjb25zdCBzdWZmaXggPSBjbGFzc05hbWUuc2xpY2UoYCR7Y2xhc3NOYW1lUGF0dGVybn06YC5sZW5ndGgpO1xuICAgICAgICAgIGNvbnN0IG5ld1RhZ05hbWUgPSBgJHtlbGVtZW50Lm5vZGVOYW1lfS0ke3N1ZmZpeH1gO1xuICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBjcmVhdGVFbGVtZW50V2l0aE5ld1RhZ05hbWUoZWxlbWVudCwgbmV3VGFnTmFtZSk7XG4gICAgICAgICAgZWxlbWVudC5yZXBsYWNlV2l0aChuZXdFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn1cblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBlbGVtZW50IHdpdGggYSBuZXcgdGFnIG5hbWUgYW5kIGNvcHkgYXR0cmlidXRlcyBhbmQgY2hpbGRyZW5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRXaXRoTmV3VGFnTmFtZShlbGVtZW50LCBuZXdUYWdOYW1lKSB7XG4gIGNvbnN0IG5ld0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KG5ld1RhZ05hbWUpO1xuICAvLyBDb3B5IGF0dHJpYnV0ZXNcbiAgZm9yIChjb25zdCBhdHRyIG9mIGVsZW1lbnQuYXR0cmlidXRlcykge1xuICAgIG5ld0VsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHIubmFtZSwgYXR0ci52YWx1ZSk7XG4gIH1cbiAgLy8gQ29weSBjaGlsZCBub2Rlc1xuICB3aGlsZSAoZWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgbmV3RWxlbWVudC5hcHBlbmRDaGlsZChlbGVtZW50LmZpcnN0Q2hpbGQpO1xuICB9XG4gIHJldHVybiBuZXdFbGVtZW50O1xufVxuXG5mdW5jdGlvbiBpdGVtc0Zyb21UZXN0KHhtbEZyYWdtZW50OiBEb2N1bWVudEZyYWdtZW50KSB7XG4gIGNvbnN0IGl0ZW1zOiB7IGlkZW50aWZpZXI6IHN0cmluZzsgaHJlZjogc3RyaW5nOyBjYXRlZ29yeTogc3RyaW5nIH1bXSA9IFtdO1xuICB4bWxGcmFnbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdxdGktYXNzZXNzbWVudC1pdGVtLXJlZicpLmZvckVhY2goZWwgPT4ge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSBlbC5nZXRBdHRyaWJ1dGUoJ2lkZW50aWZpZXInKTtcbiAgICBjb25zdCBocmVmID0gZWwuZ2V0QXR0cmlidXRlKCdocmVmJyk7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBlbC5nZXRBdHRyaWJ1dGUoJ2NhdGVnb3J5Jyk7XG4gICAgaXRlbXMucHVzaCh7IGlkZW50aWZpZXIsIGhyZWYsIGNhdGVnb3J5IH0pO1xuICB9KTtcbiAgcmV0dXJuIGl0ZW1zO1xufVxuXG5sZXQgY3VycmVudFJlcXVlc3Q6IFhNTEh0dHBSZXF1ZXN0IHwgbnVsbCA9IG51bGw7XG5cbmZ1bmN0aW9uIGxvYWRYTUwodXJsLCBjYW5jZWxQcmV2aW91c1JlcXVlc3QgPSB0cnVlKSB7XG4gIGlmIChjYW5jZWxQcmV2aW91c1JlcXVlc3QgJiYgY3VycmVudFJlcXVlc3QgIT09IG51bGwpIHtcbiAgICBjdXJyZW50UmVxdWVzdC5hYm9ydCgpOyAvLyBBYm9ydCB0aGUgb25nb2luZyByZXF1ZXN0IGlmIHRoZXJlIGlzIG9uZVxuICB9XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlPFhNTERvY3VtZW50IHwgbnVsbD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIGN1cnJlbnRSZXF1ZXN0ID0geGhyOyAvLyBTdG9yZSB0aGUgY3VycmVudCByZXF1ZXN0XG5cbiAgICB4aHIub3BlbignR0VUJywgdXJsLCB0cnVlKTtcbiAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2RvY3VtZW50JztcblxuICAgIHhoci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICBpZiAoeGhyLnN0YXR1cyA+PSAyMDAgJiYgeGhyLnN0YXR1cyA8IDMwMCkge1xuICAgICAgICByZXNvbHZlKHhoci5yZXNwb25zZVhNTCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB4aHIub25lcnJvciA9ICgpID0+IHtcbiAgICAgIHJlamVjdCh4aHIuc3RhdHVzVGV4dCk7XG4gICAgfTtcblxuICAgIHhoci5zZW5kKCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwYXJzZVhNTCh4bWxEb2N1bWVudDogc3RyaW5nKSB7XG4gIGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcbiAgY29uc3QgeG1sRnJhZ21lbnQgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKHhtbERvY3VtZW50LCAndGV4dC94bWwnKTtcbiAgcmV0dXJuIHhtbEZyYWdtZW50O1xufVxuXG5mdW5jdGlvbiB0b0hUTUwoeG1sRnJhZ21lbnQ6IERvY3VtZW50KTogRG9jdW1lbnRGcmFnbWVudCB7XG4gIGNvbnN0IHByb2Nlc3NvciA9IG5ldyBYU0xUUHJvY2Vzc29yKCk7XG4gIGNvbnN0IHhzbHREb2N1bWVudCA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoeG1sVG9IVE1MLCAndGV4dC94bWwnKTtcbiAgcHJvY2Vzc29yLmltcG9ydFN0eWxlc2hlZXQoeHNsdERvY3VtZW50KTtcbiAgY29uc3QgaXRlbUhUTUxGcmFnbWVudCA9IHByb2Nlc3Nvci50cmFuc2Zvcm1Ub0ZyYWdtZW50KHhtbEZyYWdtZW50LCBkb2N1bWVudCk7XG4gIHJldHVybiBpdGVtSFRNTEZyYWdtZW50O1xufVxuXG5mdW5jdGlvbiBzZXRMb2NhdGlvbih4bWxGcmFnbWVudDogRG9jdW1lbnRGcmFnbWVudCwgbG9jYXRpb246IHN0cmluZykge1xuICBpZiAoIWxvY2F0aW9uLmVuZHNXaXRoKCcvJykpIHtcbiAgICBsb2NhdGlvbiArPSAnLyc7XG4gIH1cblxuICB4bWxGcmFnbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbc3JjXSxbaHJlZl0sW3ByaW1hcnktcGF0aF0nKS5mb3JFYWNoKGVsV2l0aFNyYyA9PiB7XG4gICAgbGV0IGF0dHI6ICdzcmMnIHwgJ2hyZWYnIHwgJ3ByaW1hcnktcGF0aCcgfCAnJyA9ICcnO1xuXG4gICAgaWYgKGVsV2l0aFNyYy5nZXRBdHRyaWJ1dGUoJ3NyYycpKSB7XG4gICAgICBhdHRyID0gJ3NyYyc7XG4gICAgfVxuICAgIGlmIChlbFdpdGhTcmMuZ2V0QXR0cmlidXRlKCdocmVmJykpIHtcbiAgICAgIGF0dHIgPSAnaHJlZic7XG4gICAgfVxuICAgIGlmIChlbFdpdGhTcmMuZ2V0QXR0cmlidXRlKCdwcmltYXJ5LXBhdGgnKSkge1xuICAgICAgYXR0ciA9ICdwcmltYXJ5LXBhdGgnO1xuICAgIH1cbiAgICBjb25zdCBhdHRyVmFsdWUgPSBlbFdpdGhTcmMuZ2V0QXR0cmlidXRlKGF0dHIpPy50cmltKCk7XG5cbiAgICBpZiAoIWF0dHJWYWx1ZS5zdGFydHNXaXRoKCdkYXRhOicpICYmICFhdHRyVmFsdWUuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgICBjb25zdCBuZXdTcmNWYWx1ZSA9IGxvY2F0aW9uICsgZW5jb2RlVVJJKGF0dHJWYWx1ZSk7XG4gICAgICBlbFdpdGhTcmMuc2V0QXR0cmlidXRlKGF0dHIsIG5ld1NyY1ZhbHVlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0Q0RBVEF0b0NvbW1lbnQoeG1sRnJhZ21lbnQ6IERvY3VtZW50RnJhZ21lbnQpIHtcbiAgY29uc3QgY2RhdGFFbGVtZW50cyA9IHhtbEZyYWdtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3F0aS1jdXN0b20tb3BlcmF0b3JbY2xhc3M9XCJqcy5vcmdcIl0gPiBxdGktYmFzZS12YWx1ZScpO1xuICBjZGF0YUVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgY29uc3QgY29tbWVudFRleHQgPSBkb2N1bWVudC5jcmVhdGVDb21tZW50KGVsZW1lbnQudGV4dENvbnRlbnQpO1xuICAgIGVsZW1lbnQucmVwbGFjZUNoaWxkKGNvbW1lbnRUZXh0LCBlbGVtZW50LmZpcnN0Q2hpbGQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc3RyaXBTdHlsZVNoZWV0cyh4bWxGcmFnbWVudDogRG9jdW1lbnRGcmFnbWVudCkge1xuICAvLyByZW1vdmUgcXRpLXN0eWxlc2hlZXQgdGFnXG4gIHhtbEZyYWdtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3F0aS1zdHlsZXNoZWV0JykuZm9yRWFjaChzdHlsZXNoZWV0ID0+IHN0eWxlc2hlZXQucmVtb3ZlKCkpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUEsSUFBTUEsRUFBTSxPQUFPLElBb0NOQyxFQUFtQixJQUFNLENBQ3BDLElBQUlDLEVBRUVDLEVBQXdCLENBQzVCLE1BQU0sS0FBS0MsRUFBYUMsRUFBd0IsR0FBNEIsQ0FDMUUsT0FBTyxJQUFJLFFBQW9CLENBQUNDLEVBQVNDLElBQVcsQ0FDbERDLEVBQVFKLEVBQUtDLENBQXFCLEVBQUUsS0FBS0wsSUFDdkNFLEVBQWNGLEVBQ1BNLEVBQVFILENBQUcsRUFDbkIsQ0FDSCxDQUFDLENBQ0gsRUFDQSxJQUFJTSxFQUFzQyxDQUN4QyxPQUFBUCxFQUFjTyxFQUNQTixDQUNULEVBQ0EsTUFBTU8sRUFBK0IsQ0FDbkMsT0FBQVIsRUFBY1MsRUFBU0QsQ0FBUyxFQUN6QlAsQ0FDVCxFQUNBLEtBQU9TLElBQ0xDLEVBQVlYLEVBQWFVLENBQVEsRUFDMUJULEdBRVQsR0FBR1csRUFBb0QsQ0FDckQsT0FBQUEsRUFBR1osQ0FBVyxFQUNQQyxDQUNULEVBQ0EsU0FBU0MsRUFBeUIsQ0FDaEMsSUFBTVcsRUFBYSxDQUFDLE9BQVEsUUFBUSxFQUM5QkMsRUFBZVosRUFBSSxVQUFVLEVBQUdBLEVBQUksWUFBWSxHQUFHLENBQUMsRUFDMUQsUUFBV2EsS0FBYUYsRUFDQWIsRUFBWSxpQkFBaUIsSUFBTWUsRUFBWSxHQUFHLEVBQzFELFFBQVFDLEdBQVEsQ0FDNUIsSUFBTUMsRUFBV0QsRUFBSyxhQUFhRCxDQUFTLEVBQ3hDLENBQUNFLEVBQVMsV0FBVyxPQUFPLEdBQUssQ0FBQ0EsRUFBUyxXQUFXLE1BQU0sSUFHOURELEVBQUssYUFBYSxXQUFZZCxDQUFHLEVBQ2pDYyxFQUFLLGFBQ0gsU0FDQUYsRUFBZSxJQUFNLFVBQVVHLEdBQVlBLEVBQVMsU0FBUyxLQUFLLEVBQUksR0FBSyxNQUFNLENBQ25GLEVBRUosQ0FBQyxFQUVILE9BQU9oQixDQUNULEVBQ0Esa0JBQW1CLENBQUNpQixFQUFpQkMsS0FDbkNDLEVBQWtCcEIsRUFBYWtCLEVBQVNDLENBQVMsRUFDMUNsQixHQUVULHdCQUF5QixDQUFDb0IsRUFBZ0IsWUFDeENDLEVBQXdCdEIsRUFBYXFCLENBQUssRUFDbkNwQixHQUVULGtCQUFrQnNCLEVBQWlCQyxFQUE4QixDQUMvRCxJQUFNQyxFQUF1QnpCLEVBQVksY0FBYyx3QkFBd0IsRUFDekUwQixFQUE2QkQsRUFBcUIsY0FBYyxRQUFRLEVBRTlFLE9BQUFBLEVBQXFCLGFBQWEsZ0JBQWlCRixDQUFPLEVBQzFERSxFQUFxQixhQUFhLGlCQUFrQkYsRUFBVUMsQ0FBUSxFQUN0RUMsRUFBcUIsYUFBYSxPQUFRQyxFQUEyQixhQUFhLE1BQU0sQ0FBQyxFQUN6RkQsRUFBcUIsYUFBYSxRQUFTQyxFQUEyQixhQUFhLE9BQU8sQ0FBQyxFQUMzRkQsRUFBcUIsYUFBYSxTQUFVQyxFQUEyQixhQUFhLFFBQVEsQ0FBQyxFQUU3RkQsRUFBcUIsWUFBWUMsQ0FBMEIsRUFDcER6QixDQUNULEVBQ0EsdUJBQW9DLENBQ2xDLE9BQUEwQixFQUFzQjNCLENBQVcsRUFDMUJDLENBQ1QsRUFDQSxrQkFBK0IsQ0FDN0IsT0FBQTJCLEVBQWlCNUIsQ0FBVyxFQUNyQkMsQ0FDVCxFQUNBLE1BQU8sQ0FDTCxPQUFPLElBQUksY0FBYyxFQUFFLGtCQUFrQjRCLEVBQU83QixDQUFXLENBQUMsQ0FDbEUsRUFDQSxLQUFjLENBQ1osT0FBTyxJQUFJLGNBQWMsRUFBRSxrQkFBa0JBLENBQVcsQ0FDMUQsRUFDQSxTQUFVLENBQ1IsT0FBTzZCLEVBQU83QixDQUFXLENBQzNCLEVBQ0EsUUFBc0IsQ0FDcEIsT0FBT0EsQ0FDVCxDQUNGLEVBQ0EsT0FBT0MsQ0FDVCxFQUVhNkIsRUFBdUIsSUFHL0IsQ0FDSCxJQUFJOUIsRUFFRUMsRUFBTSxDQUNWLE1BQU0sS0FBS0MsRUFBSyxDQUNkLE9BQU8sSUFBSSxRQUFvQixDQUFDRSxFQUFTQyxJQUFXLENBQ2xEQyxFQUFRSixDQUFHLEVBQUUsS0FBS0osSUFDaEJFLEVBQWNGLEVBQ1BNLEVBQVFILENBQUcsRUFDbkIsQ0FDSCxDQUFDLENBQ0gsRUFDQSxNQUFNTyxFQUFtQixDQUN2QlIsRUFBY1MsRUFBU0QsQ0FBUyxDQUNsQyxFQUNBLGdCQUFpQixDQUNmLElBQU11QixFQUFLL0IsRUFBWSxjQUFjLHNDQUFzQyxFQUMzRSxNQUFPLENBQUUsS0FBTStCLEVBQUcsYUFBYSxNQUFNLEVBQUcsV0FBWUEsRUFBRyxhQUFhLFlBQVksQ0FBRSxDQUNwRixDQUNGLEVBQ0EsT0FBTzlCLENBQ1QsRUFZYStCLEVBQW1CLElBVzNCLENBQ0gsSUFBSWhDLEVBRUVDLEVBQU0sQ0FDVixNQUFNLEtBQUtDLEVBQUssQ0FDZCxPQUFPLElBQUksUUFBb0IsQ0FBQ0UsRUFBU0MsSUFBVyxDQUNsREMsRUFBUUosQ0FBRyxFQUFFLEtBQUtKLElBQ2hCRSxFQUFjRixFQUNQTSxFQUFRSCxDQUFHLEVBQ25CLENBQ0gsQ0FBQyxDQUNILEVBQ0EsSUFBSU0sRUFBc0MsQ0FDeEMsT0FBQVAsRUFBY08sRUFDUE4sQ0FDVCxFQUNBLE1BQU1PLEVBQW1CLENBQ3ZCLE9BQUFSLEVBQWNTLEVBQVNELENBQVMsRUFDekJQLENBQ1QsRUFDQSxrQkFBbUIsQ0FBQ2lCLEVBQWlCQyxLQUNuQ0MsRUFBa0JwQixFQUFha0IsRUFBU0MsQ0FBUyxFQUMxQ2xCLEdBRVQsR0FBR1csRUFBd0MsQ0FDekMsT0FBQUEsRUFBR1osQ0FBVyxFQUNQQyxDQUNULEVBQ0EsT0FBUSxDQUNOLE9BQU9nQyxFQUFjakMsQ0FBVyxDQUNsQyxFQUNBLE1BQU8sQ0FDTCxPQUFPLElBQUksY0FBYyxFQUFFLGtCQUFrQjZCLEVBQU83QixDQUFXLENBQUMsQ0FDbEUsRUFDQSxLQUFjLENBQ1osT0FBTyxJQUFJLGNBQWMsRUFBRSxrQkFBa0JBLENBQVcsQ0FDMUQsRUFDQSxTQUFVLENBQ1IsT0FBTzZCLEVBQU83QixDQUFXLENBQzNCLEVBQ0EsUUFBc0IsQ0FDcEIsT0FBT0EsQ0FDVCxDQUNGLEVBQ0EsT0FBT0MsQ0FDVCxFQWVNaUMsRUFBWXBDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBeUJsQixTQUFTc0IsRUFBa0JwQixFQUEwQmtCLEVBQWlCQyxFQUFtQixDQUN2Rm5CLEVBQVksaUJBQWlCa0IsQ0FBTyxFQUFFLFFBQVFpQixHQUFXLENBQ3ZELElBQU1DLEVBQWEsR0FBR2xCLENBQU8sSUFBSUMsQ0FBUyxHQUNwQ2tCLEVBQWFDLEVBQTRCSCxFQUFTQyxDQUFVLEVBQ2xFRCxFQUFRLFlBQVlFLENBQVUsQ0FDaEMsQ0FBQyxDQUNILENBR0EsU0FBU2YsRUFBd0J0QixFQUEwQnVDLEVBQTBCLENBQ25GdkMsRUFBWSxpQkFBaUIsR0FBRyxFQUFFLFFBQVFtQyxHQUFXLENBQ25ELElBQU1LLEVBQVlMLEVBQVEsVUFDdEJLLEdBQ0ZBLEVBQVUsUUFBUUMsR0FBYSxDQUM3QixHQUFJQSxFQUFVLFdBQVcsR0FBR0YsQ0FBZ0IsR0FBRyxFQUFHLENBQ2hELElBQU1HLEVBQVNELEVBQVUsTUFBTSxHQUFHRixDQUFnQixJQUFJLE1BQU0sRUFDdERILEVBQWEsR0FBR0QsRUFBUSxRQUFRLElBQUlPLENBQU0sR0FDMUNMLEVBQWFDLEVBQTRCSCxFQUFTQyxDQUFVLEVBQ2xFRCxFQUFRLFlBQVlFLENBQVUsQ0FDaEMsQ0FDRixDQUFDLENBRUwsQ0FBQyxDQUNILENBR0EsU0FBU0MsRUFBNEJILEVBQVNDLEVBQVksQ0FDeEQsSUFBTUMsRUFBYSxTQUFTLGNBQWNELENBQVUsRUFFcEQsUUFBV08sS0FBUVIsRUFBUSxXQUN6QkUsRUFBVyxhQUFhTSxFQUFLLEtBQU1BLEVBQUssS0FBSyxFQUcvQyxLQUFPUixFQUFRLFlBQ2JFLEVBQVcsWUFBWUYsRUFBUSxVQUFVLEVBRTNDLE9BQU9FLENBQ1QsQ0FFQSxTQUFTSixFQUFjakMsRUFBK0IsQ0FDcEQsSUFBTTRDLEVBQWtFLENBQUMsRUFDekUsT0FBQTVDLEVBQVksaUJBQWlCLHlCQUF5QixFQUFFLFFBQVErQixHQUFNLENBQ3BFLElBQU1jLEVBQWFkLEVBQUcsYUFBYSxZQUFZLEVBQ3pDZSxFQUFPZixFQUFHLGFBQWEsTUFBTSxFQUM3QmdCLEVBQVdoQixFQUFHLGFBQWEsVUFBVSxFQUMzQ2EsRUFBTSxLQUFLLENBQUUsV0FBQUMsRUFBWSxLQUFBQyxFQUFNLFNBQUFDLENBQVMsQ0FBQyxDQUMzQyxDQUFDLEVBQ01ILENBQ1QsQ0FFQSxJQUFJSSxFQUF3QyxLQUU1QyxTQUFTMUMsRUFBUTJDLEVBQUs5QyxFQUF3QixHQUFNLENBQ2xELE9BQUlBLEdBQXlCNkMsSUFBbUIsTUFDOUNBLEVBQWUsTUFBTSxFQUdoQixJQUFJLFFBQTRCLENBQUM1QyxFQUFTQyxJQUFXLENBQzFELElBQU02QyxFQUFNLElBQUksZUFDaEJGLEVBQWlCRSxFQUVqQkEsRUFBSSxLQUFLLE1BQU9ELEVBQUssRUFBSSxFQUN6QkMsRUFBSSxhQUFlLFdBRW5CQSxFQUFJLE9BQVMsSUFBTSxDQUNiQSxFQUFJLFFBQVUsS0FBT0EsRUFBSSxPQUFTLElBQ3BDOUMsRUFBUThDLEVBQUksV0FBVyxFQUV2QjdDLEVBQU82QyxFQUFJLFVBQVUsQ0FFekIsRUFFQUEsRUFBSSxRQUFVLElBQU0sQ0FDbEI3QyxFQUFPNkMsRUFBSSxVQUFVLENBQ3ZCLEVBRUFBLEVBQUksS0FBSyxDQUNYLENBQUMsQ0FDSCxDQUVBLFNBQVN6QyxFQUFTRixFQUFxQixDQUdyQyxPQUZlLElBQUksVUFBVSxFQUNGLGdCQUFnQkEsRUFBYSxVQUFVLENBRXBFLENBRUEsU0FBU3NCLEVBQU83QixFQUF5QyxDQUN2RCxJQUFNbUQsRUFBWSxJQUFJLGNBQ2hCQyxFQUFlLElBQUksVUFBVSxFQUFFLGdCQUFnQmxCLEVBQVcsVUFBVSxFQUMxRSxPQUFBaUIsRUFBVSxpQkFBaUJDLENBQVksRUFDZEQsRUFBVSxvQkFBb0JuRCxFQUFhLFFBQVEsQ0FFOUUsQ0FFQSxTQUFTVyxFQUFZWCxFQUErQlUsRUFBa0IsQ0FDL0RBLEVBQVMsU0FBUyxHQUFHLElBQ3hCQSxHQUFZLEtBR2RWLEVBQVksaUJBQWlCLDZCQUE2QixFQUFFLFFBQVFxRCxHQUFhLENBeFduRixJQUFBQyxFQXlXSSxJQUFJWCxFQUE2QyxHQUU3Q1UsRUFBVSxhQUFhLEtBQUssSUFDOUJWLEVBQU8sT0FFTFUsRUFBVSxhQUFhLE1BQU0sSUFDL0JWLEVBQU8sUUFFTFUsRUFBVSxhQUFhLGNBQWMsSUFDdkNWLEVBQU8sZ0JBRVQsSUFBTVksR0FBWUQsRUFBQUQsRUFBVSxhQUFhVixDQUFJLElBQTNCLFlBQUFXLEVBQThCLE9BRWhELEdBQUksQ0FBQ0MsRUFBVSxXQUFXLE9BQU8sR0FBSyxDQUFDQSxFQUFVLFdBQVcsTUFBTSxFQUFHLENBQ25FLElBQU1DLEVBQWM5QyxFQUFXLFVBQVU2QyxDQUFTLEVBQ2xERixFQUFVLGFBQWFWLEVBQU1hLENBQVcsQ0FDMUMsQ0FDRixDQUFDLENBQ0gsQ0FFQSxTQUFTN0IsRUFBc0IzQixFQUErQixDQUN0Q0EsRUFBWSxpQkFBaUIsc0RBQXNELEVBQzNGLFFBQVFtQyxHQUFXLENBQy9CLElBQU1zQixFQUFjLFNBQVMsY0FBY3RCLEVBQVEsV0FBVyxFQUM5REEsRUFBUSxhQUFhc0IsRUFBYXRCLEVBQVEsVUFBVSxDQUN0RCxDQUFDLENBQ0gsQ0FFQSxTQUFTUCxFQUFpQjVCLEVBQStCLENBRXZEQSxFQUFZLGlCQUFpQixnQkFBZ0IsRUFBRSxRQUFRMEQsR0FBY0EsRUFBVyxPQUFPLENBQUMsQ0FDMUYiLAogICJuYW1lcyI6IFsieG1sIiwgInF0aVRyYW5zZm9ybUl0ZW0iLCAieG1sRnJhZ21lbnQiLCAiYXBpIiwgInVyaSIsICJjYW5jZWxQcmV2aW91c1JlcXVlc3QiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAibG9hZFhNTCIsICJ4bWxEb2N1bWVudCIsICJ4bWxTdHJpbmciLCAicGFyc2VYTUwiLCAibG9jYXRpb24iLCAic2V0TG9jYXRpb24iLCAiZm4iLCAiYXR0cmlidXRlcyIsICJkb2N1bWVudFBhdGgiLCAiYXR0cmlidXRlIiwgIm5vZGUiLCAic3JjVmFsdWUiLCAidGFnTmFtZSIsICJleHRlbnNpb24iLCAiZXh0ZW5kRWxlbWVudE5hbWUiLCAicGFyYW0iLCAiZXh0ZW5kRWxlbWVudHNXaXRoQ2xhc3MiLCAiYmFzZVJlZiIsICJiYXNlSXRlbSIsICJxdGlDdXN0b21JbnRlcmFjdGlvbiIsICJxdGlDdXN0b21JbnRlcmFjdGlvbk9iamVjdCIsICJjb252ZXJ0Q0RBVEF0b0NvbW1lbnQiLCAic3RyaXBTdHlsZVNoZWV0cyIsICJ0b0hUTUwiLCAicXRpVHJhbnNmb3JtTWFuaWZlc3QiLCAiZWwiLCAicXRpVHJhbnNmb3JtVGVzdCIsICJpdGVtc0Zyb21UZXN0IiwgInhtbFRvSFRNTCIsICJlbGVtZW50IiwgIm5ld1RhZ05hbWUiLCAibmV3RWxlbWVudCIsICJjcmVhdGVFbGVtZW50V2l0aE5ld1RhZ05hbWUiLCAiY2xhc3NOYW1lUGF0dGVybiIsICJjbGFzc0xpc3QiLCAiY2xhc3NOYW1lIiwgInN1ZmZpeCIsICJhdHRyIiwgIml0ZW1zIiwgImlkZW50aWZpZXIiLCAiaHJlZiIsICJjYXRlZ29yeSIsICJjdXJyZW50UmVxdWVzdCIsICJ1cmwiLCAieGhyIiwgInByb2Nlc3NvciIsICJ4c2x0RG9jdW1lbnQiLCAiZWxXaXRoU3JjIiwgIl9hIiwgImF0dHJWYWx1ZSIsICJuZXdTcmNWYWx1ZSIsICJjb21tZW50VGV4dCIsICJzdHlsZXNoZWV0Il0KfQo=