diff --git a/docs/MB-920/power_platform_clickthrough/ar/Mouse.mp3 b/docs/MB-920/power_platform_clickthrough/ar/Mouse.mp3 deleted file mode 100644 index 1468125..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/ar/Mouse.mp3 and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/TOC_icons/collapseIcon.png b/docs/MB-920/power_platform_clickthrough/assets/TOC_icons/collapseIcon.png deleted file mode 100644 index a08c1d8..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/TOC_icons/collapseIcon.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/TOC_icons/expandIcon.png b/docs/MB-920/power_platform_clickthrough/assets/TOC_icons/expandIcon.png deleted file mode 100644 index 1955797..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/TOC_icons/expandIcon.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/TOC_icons/photo.png b/docs/MB-920/power_platform_clickthrough/assets/TOC_icons/photo.png deleted file mode 100644 index 2ed4c0f..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/TOC_icons/photo.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/CPLibraryAll.css b/docs/MB-920/power_platform_clickthrough/assets/css/CPLibraryAll.css deleted file mode 100644 index 7574e14..0000000 --- a/docs/MB-920/power_platform_clickthrough/assets/css/CPLibraryAll.css +++ /dev/null @@ -1,62 +0,0 @@ -.shadow{overflow:hidden}.cpMainContainer{background-color:#2f2f2f;height:100%;width:100%;padding:0;position:absolute}.blocker{position:fixed;left:0;top:0;display:none}#slide_transition_canvas{display:none;left:0;top:0;position:absolute;width:100%;height:100%}.loadingBackground{background-color:#777;opacity:.5}.loadingString{color:#fff;font-family:"Lucida Sans Unicode","Lucida Grande",sans-serif;font-size:12px}.cp-movie{display:none;overflow:hidden;position:absolute}.cp-rewrap{display:block;position:absolute;-webkit-transform:translate3d(0px,0px,0px)}.cp-frameset{display:none;overflow:visible;position:absolute;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-webkit-transform:translate3d(0px,0px,0px)}.cp-input{display:block;position:absolute;left:0;top:0;width:0;height:0}.cp-audio{display:none;position:fixed;left:0;top:0;width:0;height:0}.cp-video,.cp-shape,.cp-mc,.cp-gf{display:block;position:absolute;left:0;top:0;width:0;height:0}body{background-color:#fff}.autoPlayButton,.autoPlayButton:hover{background:url('../htmlimages/Play_icon.png') no-repeat;width:116px;height:116px;float:left;position:absolute;left:50px}.cp-vtxt{display:block;position:absolute}.cp-actualText::first-line{line-height:100%}.gestureIcon{top:10px;right:0;width:32px;height:32px;position:absolute;display:block;background:url('../htmlimages/gesturemobileicon.png') no-repeat}.gestureHintDiv{left:0;top:0;right:0;bottom:0;margin:auto;width:100%;height:100%;z-index:10;display:none;position:fixed;background-color:rgba(0,0,0,0.5)}@media all and (max-width:335px){.gesturesHint{left:0;top:0;right:0;bottom:0;margin:auto;width:186px;height:469px;display:block;position:fixed;background:url('../htmlimages/gesturemobileimage2.png') no-repeat}}@media all and (max-width:531px) and (min-width:335px){.gesturesHint{left:0;top:0;right:0;bottom:0;margin:auto;width:335px;height:281px;display:block;position:fixed;background:url('../htmlimages/gesturemobilelandscape.png') no-repeat}}@media all and (min-width:531px){.gesturesHint{left:0;top:0;right:0;bottom:0;margin:auto;width:531px;height:277px;display:block;position:fixed;background:url('../htmlimages/gesturetabletimage.png') no-repeat}}.gestureAnimation{left:0;top:0;right:0;bottom:0;margin:auto;display:block;position:absolute}.playAnimation{width:104px;height:104px;background:url('../htmlimages/Play2x.gif') no-repeat}.pauseAnimation{width:104px;height:104px;background:url('../htmlimages/Pause2x.gif') no-repeat}.cp-liFirstLine{display:table-cell;padding-left:.5em}ul{list-style:none;margin:0;padding-left:0}li>ul,li>ol{list-style:none;padding-left:1em}ol{list-style:none;margin:0;padding-left:0}.cp-reviewUL{list-style:initial;margin:1em;text-indent:0}.cp-reviewULIE{list-style:circle;margin:1em;text-indent:0}.cp-numbering{display:table-cell;text-decoration:none;width:1em;text-align:right}.cp-accessibility{opacity:0;width:0;height:0;left:-1999px;position:fixed}.main_content{width:100%;height:80%;display:block;position:absolute;left:0%;top:0%;overflow:auto}.debugWinHolder{width:100%;height:30%;display:block;position:absolute;background-color:#e6e1e1;left:0%;bottom:0%}.reportWinHolder{width:0%;height:0%;display:block;position:absolute;right:0%;bottom:0%}.debugWin,.reportWin{width:100%;height:100%}.curtain{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:gray;z-index:100000;text-align:center}.curtainMsg{display:table-cell;vertical-align:middle}@-webkit-keyframes fadeinfadeout{0%{opacity:0}50%{opacity:1}to{opacity:0}}#cpFakeGeo{position:fixed;top:30px;left:20px;background-color:gray}#cpFakeGeoTitle{background-color:black;color:white;padding:10px;margin:5px}#cpFakeGeoList{width:95%;padding:2px;margin:4px}input[type="button"]{white-space:normal}.cpTextElement{min-width:100px;min-height:100px;color:white;font-size:25px;max-width:400px;text-align:center;vertical-align:middle;border:1px solid rgba(255,255,255,0.5);border-radius:4px;background-color:rgba(0,0,0,0.85);position:absolute;word-wrap:break-word;padding-bottom:2px;padding-left:2px;padding-right:2px;padding-top:2px;z-index:-1;left:0;top:0;-webkit-user-select:none;-moz-user-select:-moz-none;-ms-user-select:none}.cpAlertElement{min-width:100px;color:white;height:auto;min-height:30px;font-size:12px;text-align:center;vertical-align:middle;border-radius:5px;background-color:rgba(0,0,0,0.55);position:absolute;word-wrap:break-word;padding-bottom:2px;padding-left:2px;padding-right:2px;padding-top:2px;z-index:-1;left:0;top:0;-webkit-user-select:none;-moz-user-select:-moz-none;-ms-user-select:none;font-family:Arial,Helvetica,sans-serif}input[type=checkbox]:checked,input[type=checkbox]:disabled,input[type=checkbox],input[type=checkbox]:disabled:checked,input[type=radio]:checked,input[type=radio],input[type=radio]:disabled,input[type=radio]:disabled:checked{background:none;-webkit-appearance:none;border:none;-webkit-background-size:22px 22px}.spanRadioInput,.spanCheckBoxInput{position:fixed;display:block;width:22px;height:22px}.spanComboBox{background-color:#edeeef;border:1px;border-radius:5px;position:absolute;display:block}.spanArrow{background:url(../htmlimages/dd_arrow.png) no-repeat 0 0;float:right;display:inline-block;width:12px;height:12px;cursor:pointer}.dropIndicator{background:url(../htmlimages/arrow_right.gif) no-repeat 0 0;width:16px;height:16px;display:block;position:fixed}.sequenceReviewImage{background:url(../htmlimages/sequenceReview.png) no-repeat 0 0;width:17px;height:13px;display:block;position:fixed;cursor:pointer;border:0}.sequenceReviewArea{background-color:#fff098;display:block;position:fixed;border:solid 2px;font-size:10px;border-radius:5px;border-color:black}select option{background:#fff}select{border:1px;border-radius:5px;background:url(../htmlimages/dd_arrow.png) no-repeat 100% 4px #edeeef;outline:none;display:inline-block;-webkit-appearance:none;-moz-appearance:none;cursor:pointer}.questionOverlay{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;z-index:3;display:block;position:absolute;background-color:rgba(0,0,0,0.8);height:382px;width:719px;border-color:rgba(0,0,0,0.9);border-width:4px;border-radius:10px;box-shadow:rgba(255,255,255,0.5) 0 0 0 1px;border-style:solid;top:0;left:0}.questionSlide{height:382px;width:719px}.questionTextWrapper,.reviewModeQuestionTextWrapper{left:0;top:0;margin:12px 12px 16px;white-space:pre-line;font-size:19px;font-family:SourceSansProRegular;color:#fff;position:absolute;height:80px;overflow:hidden;width:478px;outline:currentcolor none medium;box-shadow:#fff 0 0 0}.answerArea{left:12px;width:480px;height:196px;top:80px;max-height:200px;overflow-x:hidden;overflow-y:hidden;position:absolute}.mcqanswercontainer{left:1px;width:478px;height:30px;margin-bottom:8px;border-radius:3px;border-width:1px;border-style:solid;outline:currentcolor none medium;border-color:rgba(0,0,0,0);background-color:transparent}.reviewModeMCQAnswerContainer{left:1px;width:478px;height:24px;margin-bottom:8px;border-radius:3px;border-width:1px;border-style:solid;outline:currentcolor none medium;border-color:rgba(0,0,0,0);background-color:transparent}.mcqicon{width:18px;height:18px;margin:4px 10px;background-size:cover;position:absolute;left:20px;pointer-events:all}.answerText{color:white;font-size:13px;font-family:SourceSansProRegular}.answeritem{width:440px;overflow:hidden;line-height:24px;height:24px;font-size:13px;font-family:SourceSansProRegular;color:#fff;float:right;position:absolute;left:55px}.resultSlide{height:382px;width:719px}.resultslidetable{margin-left:10%;margin-top:5%;background-color:transparent;border-color:transparent}.quizresulttablecell{background-color:transparent;border-color:transparent}.quizresulttitletext{margin-left:10%}.questionButton{color:white;background-color:#006eba;border-color:#006eba;overflow:hidden;float:left;height:26px;top:1px;margin-left:5px;width:110px;font-size:13px;font-family:SourceSansProBold;border-radius:13.85px;border-width:1px;border-style:solid;outline:currentcolor none medium;pointer-events:all}.buttonPanel{height:28px;padding:16px 12px 12px;width:80%;bottom:0;position:absolute;z-index:1000}.questionFeedback{position:static;display:block;margin-top:10px;width:97%;height:90%;background-color:transparent;border-radius:3px;text-align:center;resize:none;overflow:hidden}.feedbackPanel{height:296px;width:183px;background-color:transparent;border-color:rgba(0,0,0,0.2);border-width:1px;border-radius:3px;border-style:solid;font-size:13px;font-family:SourceSansProRegular;color:#fff;padding:8px;overflow:auto;top:12px;left:508px;position:absolute;box-shadow:#fff 0 0 0}.reviewIcon{width:20px;height:20px;float:left}.PostResultDialogNameIdHolder{display:flex;position:relative;top:15%}.PostResultDialogButtonsHolder{display:flex;position:relative;top:50%}.PostMessageDialogBgPanel{height:35%!important}.RuntimeDialogButtonsHolder{display:flex;flex-direction:row;top:42%;position:relative;padding:5px;justify-content:center}.cpRTMBSecondBtn,.cpRTMBFirstBtn{width:40%!important;margin:5px;position:unset!important;align-self:center}.RuntimeDialogCheckBoxAndTextHolder{display:flex;position:relative;top:26%}.PostResulDialogStudentNameIdInput{padding-right:10px}.RuntimeDialogfgPanelDiv{max-width:600px!important}@media screen and (orientation:landscape){.PostResultDialogNameIdHolder,.PostResultDialogButtonsHolder{flex-direction:row}.PostResulDialogStudentNameIdInput{width:40%!important}}@media screen and (orientation:portrait){.PostResultDialogNameIdHolder{flex-direction:column}.PostResultDialogButtonsHolder{flex-direction:column;top:40%}.PostResulDialogStudentNameIdInput{width:90%!important}.PostMessageDialogBgPanel{height:48%!important}.RuntimeDialogButtonsHolder{display:flex;flex-direction:column;top:30%;position:relative;padding:5px}.cpRTMBSecondBtn,.cpRTMBFirstBtn{width:87%!important;margin:5px}.RuntimeDialogfgPanelDiv{height:50%!important}}@media (min-height:250px) and (max-height:480px){.PostMessageDialogBgPanel{height:80%!important}.RuntimeDialogfgPanelDiv{height:70%!important}.RuntimeDialogButtonsHolder{top:35%}}.playButton -{ - background:url('../Playbar_icons/Play_icon.png') no-repeat; - width:58px; - height:59px; - float:left; - position:absolute; - left:50px; -} -.playButton:hover -{ - background:url('../Playbar_icons/Play_icon.png') no-repeat; - width:58px; - height:59px; - float:left; - position:absolute; - left:50px; -} -.playbarBackGround -{ - height:30px; -} -.playbarSmallButton -{ - width:22px; - height:22px; - float:left; - display:inline; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} -.playbarSmallButton:hover {cursor:pointer;} -.playbarBigButton -{ - width:44px; - height:22px; - float:left; - display:inline; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} -.playbarBigButton:hover {cursor:pointer;} -.playbarSlider -{ - width:58px; - float:left; - display:inline; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} -.playbarSliderThumb -{ - position : absolute; - top : 6px; -} -.playbarSliderThumb:hover {cursor:pointer;} \ No newline at end of file diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/animated-overlay.gif b/docs/MB-920/power_platform_clickthrough/assets/css/start/images/animated-overlay.gif deleted file mode 100644 index d441f75..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/animated-overlay.gif and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_flat_55_999999_40x100.png b/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_flat_55_999999_40x100.png deleted file mode 100644 index 25f02d0..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_flat_55_999999_40x100.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_flat_75_aaaaaa_40x100.png b/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_flat_75_aaaaaa_40x100.png deleted file mode 100644 index 1bc950a..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_flat_75_aaaaaa_40x100.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_glass_45_0078ae_1x400.png b/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_glass_45_0078ae_1x400.png deleted file mode 100644 index 34d70cc..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_glass_45_0078ae_1x400.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_glass_55_f8da4e_1x400.png b/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_glass_55_f8da4e_1x400.png deleted file mode 100644 index bbb4e1a..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_glass_55_f8da4e_1x400.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_glass_75_79c9ec_1x400.png b/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_glass_75_79c9ec_1x400.png deleted file mode 100644 index 4277b5f..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_glass_75_79c9ec_1x400.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_gloss-wave_45_e14f1c_500x100.png b/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_gloss-wave_45_e14f1c_500x100.png deleted file mode 100644 index bbf74aa..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_gloss-wave_45_e14f1c_500x100.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_gloss-wave_50_6eac2c_500x100.png b/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_gloss-wave_50_6eac2c_500x100.png deleted file mode 100644 index 4724b68..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_gloss-wave_50_6eac2c_500x100.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_gloss-wave_75_2191c0_500x100.png b/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_gloss-wave_75_2191c0_500x100.png deleted file mode 100644 index 7665847..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_gloss-wave_75_2191c0_500x100.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_inset-hard_100_fcfdfd_1x100.png b/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_inset-hard_100_fcfdfd_1x100.png deleted file mode 100644 index 07f7018..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-bg_inset-hard_100_fcfdfd_1x100.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_0078ae_256x240.png b/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_0078ae_256x240.png deleted file mode 100644 index b9faa3d..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_0078ae_256x240.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_056b93_256x240.png b/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_056b93_256x240.png deleted file mode 100644 index 67924b7..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_056b93_256x240.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_d8e7f3_256x240.png b/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_d8e7f3_256x240.png deleted file mode 100644 index 9b46228..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_d8e7f3_256x240.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_e0fdff_256x240.png b/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_e0fdff_256x240.png deleted file mode 100644 index c6a8533..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_e0fdff_256x240.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_f5e175_256x240.png b/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_f5e175_256x240.png deleted file mode 100644 index 0365f59..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_f5e175_256x240.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_f7a50d_256x240.png b/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_f7a50d_256x240.png deleted file mode 100644 index e084802..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_f7a50d_256x240.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_fcd113_256x240.png b/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_fcd113_256x240.png deleted file mode 100644 index dd51951..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/css/start/images/ui-icons_fcd113_256x240.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/jquery-ui-1.11.4.custom.css b/docs/MB-920/power_platform_clickthrough/assets/css/start/jquery-ui-1.11.4.custom.css deleted file mode 100644 index 2e1412e..0000000 --- a/docs/MB-920/power_platform_clickthrough/assets/css/start/jquery-ui-1.11.4.custom.css +++ /dev/null @@ -1,654 +0,0 @@ -/*! jQuery UI - v1.11.4 - 2015-09-21 -* http://jqueryui.com -* Includes: core.css, button.css, slider.css, theme.css -* To view and modify this theme, visit http://jqueryui.com/themeroller/ -* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */ - -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { - display: none; -} -.ui-helper-hidden-accessible { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; -} -.ui-helper-reset { - margin: 0; - padding: 0; - border: 0; - outline: 0; - line-height: 1.3; - text-decoration: none; - font-size: 100%; - list-style: none; -} -.ui-helper-clearfix:before, -.ui-helper-clearfix:after { - content: ""; - display: table; - border-collapse: collapse; -} -.ui-helper-clearfix:after { - clear: both; -} -.ui-helper-clearfix { - min-height: 0; /* support: IE7 */ -} -.ui-helper-zfix { - width: 100%; - height: 100%; - top: 0; - left: 0; - position: absolute; - opacity: 0; - filter:Alpha(Opacity=0); /* support: IE8 */ -} - -.ui-front { - z-index: 100; -} - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { - cursor: default !important; -} - - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { - display: block; - text-indent: -99999px; - overflow: hidden; - background-repeat: no-repeat; -} - - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; -} -.ui-button { - display: inline-block; - position: relative; - padding: 0; - line-height: normal; - margin-right: .1em; - cursor: pointer; - vertical-align: middle; - text-align: center; - overflow: visible; /* removes extra width in IE */ -} -.ui-button, -.ui-button:link, -.ui-button:visited, -.ui-button:hover, -.ui-button:active { - text-decoration: none; -} -/* to make room for the icon, a width needs to be set here */ -.ui-button-icon-only { - width: 2.2em; -} -/* button elements seem to need a little more width */ -button.ui-button-icon-only { - width: 2.4em; -} -.ui-button-icons-only { - width: 3.4em; -} -button.ui-button-icons-only { - width: 3.7em; -} - -/* button text element */ -.ui-button .ui-button-text { - display: block; - line-height: normal; -} -.ui-button-text-only .ui-button-text { - padding: .4em 1em; -} -.ui-button-icon-only .ui-button-text, -.ui-button-icons-only .ui-button-text { - padding: .4em; - text-indent: -9999999px; -} -.ui-button-text-icon-primary .ui-button-text, -.ui-button-text-icons .ui-button-text { - padding: .4em 1em .4em 2.1em; -} -.ui-button-text-icon-secondary .ui-button-text, -.ui-button-text-icons .ui-button-text { - padding: .4em 2.1em .4em 1em; -} -.ui-button-text-icons .ui-button-text { - padding-left: 2.1em; - padding-right: 2.1em; -} -/* no icon support for input elements, provide padding by default */ -input.ui-button { - padding: .4em 1em; -} - -/* button icon element(s) */ -.ui-button-icon-only .ui-icon, -.ui-button-text-icon-primary .ui-icon, -.ui-button-text-icon-secondary .ui-icon, -.ui-button-text-icons .ui-icon, -.ui-button-icons-only .ui-icon { - position: absolute; - top: 50%; - margin-top: -8px; -} -.ui-button-icon-only .ui-icon { - left: 50%; - margin-left: -8px; -} -.ui-button-text-icon-primary .ui-button-icon-primary, -.ui-button-text-icons .ui-button-icon-primary, -.ui-button-icons-only .ui-button-icon-primary { - left: .5em; -} -.ui-button-text-icon-secondary .ui-button-icon-secondary, -.ui-button-text-icons .ui-button-icon-secondary, -.ui-button-icons-only .ui-button-icon-secondary { - right: .5em; -} - -/* button sets */ -.ui-buttonset { - margin-right: 7px; -} -.ui-buttonset .ui-button { - margin-left: 0; - margin-right: -.3em; -} - -/* workarounds */ -/* reset extra padding in Firefox, see h5bp.com/l */ -input.ui-button::-moz-focus-inner, -button.ui-button::-moz-focus-inner { - border: 0; - padding: 0; -} -.ui-slider { - position: relative; - text-align: left; -} -.ui-slider .ui-slider-handle { - position: absolute; - z-index: 2; - width: 1.2em; - height: 1.2em; - cursor: default; - -ms-touch-action: none; - touch-action: none; -} -.ui-slider .ui-slider-range { - position: absolute; - z-index: 1; - font-size: .7em; - display: block; - border: 0; - background-position: 0 0; -} - -/* support: IE8 - See #6727 */ -.ui-slider.ui-state-disabled .ui-slider-handle, -.ui-slider.ui-state-disabled .ui-slider-range { - filter: inherit; -} - -.ui-slider-horizontal { - height: .8em; -} -.ui-slider-horizontal .ui-slider-handle { - top: -.3em; - margin-left: -.6em; -} -.ui-slider-horizontal .ui-slider-range { - top: 0; - height: 100%; -} -.ui-slider-horizontal .ui-slider-range-min { - left: 0; -} -.ui-slider-horizontal .ui-slider-range-max { - right: 0; -} - -.ui-slider-vertical { - width: .8em; - height: 100px; -} -.ui-slider-vertical .ui-slider-handle { - left: -.3em; - margin-left: 0; - margin-bottom: -.6em; -} -.ui-slider-vertical .ui-slider-range { - left: 0; - width: 100%; -} -.ui-slider-vertical .ui-slider-range-min { - bottom: 0; -} -.ui-slider-vertical .ui-slider-range-max { - top: 0; -} - -/* Component containers -----------------------------------*/ -.ui-widget { - font-family: Verdana,Arial,sans-serif; - font-size: 1.1em; -} -.ui-widget .ui-widget { - font-size: 1em; -} -.ui-widget input, -.ui-widget select, -.ui-widget textarea, -.ui-widget button { - font-family: Verdana,Arial,sans-serif; - font-size: 1em; -} -.ui-widget-content { - border: 1px solid #a6c9e2; - background: #fcfdfd url(images/ui-bg_inset-hard_100_fcfdfd_1x100.png) 50% bottom repeat-x; - color: #222222; -} -.ui-widget-content a { - color: #222222; -} -.ui-widget-header { - border: 1px solid #4297d7; - background: #2191c0 url(images/ui-bg_gloss-wave_75_2191c0_500x100.png) 50% 50% repeat-x; - color: #eaf5f7; - font-weight: bold; -} -.ui-widget-header a { - color: #eaf5f7; -} - -/* Interaction states -----------------------------------*/ -.ui-state-default, -.ui-widget-content .ui-state-default, -.ui-widget-header .ui-state-default { - border: 1px solid #77d5f7; - background: #0078ae url(images/ui-bg_glass_45_0078ae_1x400.png) 50% 50% repeat-x; - font-weight: normal; - color: #ffffff; -} -.ui-state-default a, -.ui-state-default a:link, -.ui-state-default a:visited { - color: #ffffff; - text-decoration: none; -} -.ui-state-hover, -.ui-widget-content .ui-state-hover, -.ui-widget-header .ui-state-hover, -.ui-state-focus, -.ui-widget-content .ui-state-focus, -.ui-widget-header .ui-state-focus { - border: 1px solid #448dae; - background: #79c9ec url(images/ui-bg_glass_75_79c9ec_1x400.png) 50% 50% repeat-x; - font-weight: normal; - color: #026890; -} -.ui-state-hover a, -.ui-state-hover a:hover, -.ui-state-hover a:link, -.ui-state-hover a:visited, -.ui-state-focus a, -.ui-state-focus a:hover, -.ui-state-focus a:link, -.ui-state-focus a:visited { - color: #026890; - text-decoration: none; -} -.ui-state-active, -.ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active { - border: 1px solid #acdd4a; - background: #6eac2c url(images/ui-bg_gloss-wave_50_6eac2c_500x100.png) 50% 50% repeat-x; - font-weight: normal; - color: #ffffff; -} -.ui-state-active a, -.ui-state-active a:link, -.ui-state-active a:visited { - color: #ffffff; - text-decoration: none; -} - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, -.ui-widget-content .ui-state-highlight, -.ui-widget-header .ui-state-highlight { - border: 1px solid #fcd113; - background: #f8da4e url(images/ui-bg_glass_55_f8da4e_1x400.png) 50% 50% repeat-x; - color: #915608; -} -.ui-state-highlight a, -.ui-widget-content .ui-state-highlight a, -.ui-widget-header .ui-state-highlight a { - color: #915608; -} -.ui-state-error, -.ui-widget-content .ui-state-error, -.ui-widget-header .ui-state-error { - border: 1px solid #cd0a0a; - background: #e14f1c url(images/ui-bg_gloss-wave_45_e14f1c_500x100.png) 50% top repeat-x; - color: #ffffff; -} -.ui-state-error a, -.ui-widget-content .ui-state-error a, -.ui-widget-header .ui-state-error a { - color: #ffffff; -} -.ui-state-error-text, -.ui-widget-content .ui-state-error-text, -.ui-widget-header .ui-state-error-text { - color: #ffffff; -} -.ui-priority-primary, -.ui-widget-content .ui-priority-primary, -.ui-widget-header .ui-priority-primary { - font-weight: bold; -} -.ui-priority-secondary, -.ui-widget-content .ui-priority-secondary, -.ui-widget-header .ui-priority-secondary { - opacity: .7; - filter:Alpha(Opacity=70); /* support: IE8 */ - font-weight: normal; -} -.ui-state-disabled, -.ui-widget-content .ui-state-disabled, -.ui-widget-header .ui-state-disabled { - opacity: .35; - filter:Alpha(Opacity=35); /* support: IE8 */ - background-image: none; -} -.ui-state-disabled .ui-icon { - filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ -} - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { - width: 16px; - height: 16px; -} -.ui-icon, -.ui-widget-content .ui-icon { - background-image: url(images/ui-icons_0078ae_256x240.png); -} -.ui-widget-header .ui-icon { - background-image: url(images/ui-icons_d8e7f3_256x240.png); -} -.ui-state-default .ui-icon { - background-image: url(images/ui-icons_e0fdff_256x240.png); -} -.ui-state-hover .ui-icon, -.ui-state-focus .ui-icon { - background-image: url(images/ui-icons_056b93_256x240.png); -} -.ui-state-active .ui-icon { - background-image: url(images/ui-icons_f5e175_256x240.png); -} -.ui-state-highlight .ui-icon { - background-image: url(images/ui-icons_f7a50d_256x240.png); -} -.ui-state-error .ui-icon, -.ui-state-error-text .ui-icon { - background-image: url(images/ui-icons_fcd113_256x240.png); -} - -/* positioning */ -.ui-icon-blank { background-position: 16px 16px; } -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-on { background-position: -96px -144px; } -.ui-icon-radio-off { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-all, -.ui-corner-top, -.ui-corner-left, -.ui-corner-tl { - border-top-left-radius: 5px; -} -.ui-corner-all, -.ui-corner-top, -.ui-corner-right, -.ui-corner-tr { - border-top-right-radius: 5px; -} -.ui-corner-all, -.ui-corner-bottom, -.ui-corner-left, -.ui-corner-bl { - border-bottom-left-radius: 5px; -} -.ui-corner-all, -.ui-corner-bottom, -.ui-corner-right, -.ui-corner-br { - border-bottom-right-radius: 5px; -} - -/* Overlays */ -.ui-widget-overlay { - background: #aaaaaa url(images/ui-bg_flat_75_aaaaaa_40x100.png) 50% 50% repeat-x; - opacity: .3; - filter: Alpha(Opacity=30); /* support: IE8 */ -} -.ui-widget-shadow { - margin: 5px 0 0 5px; - padding: 0px; - background: #999999 url(images/ui-bg_flat_55_999999_40x100.png) 50% 50% repeat-x; - opacity: .45; - filter: Alpha(Opacity=45); - border-radius: 5px; -} diff --git a/docs/MB-920/power_platform_clickthrough/assets/css/start/jquery-ui-1.11.4.custom.min.css b/docs/MB-920/power_platform_clickthrough/assets/css/start/jquery-ui-1.11.4.custom.min.css deleted file mode 100644 index 686315f..0000000 --- a/docs/MB-920/power_platform_clickthrough/assets/css/start/jquery-ui-1.11.4.custom.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! jQuery UI - v1.11.4 - 2015-09-21 -* http://jqueryui.com -* Includes: core.css, button.css, slider.css, theme.css -* To view and modify this theme, visit http://jqueryui.com/themeroller/ -* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */ - -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #a6c9e2;background:#fcfdfd url(images/ui-bg_inset-hard_100_fcfdfd_1x100.png) 50% bottom repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #4297d7;background:#2191c0 url(images/ui-bg_gloss-wave_75_2191c0_500x100.png) 50% 50% repeat-x;color:#eaf5f7;font-weight:700}.ui-widget-header a{color:#eaf5f7}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #77d5f7;background:#0078ae url(images/ui-bg_glass_45_0078ae_1x400.png) 50% 50% repeat-x;font-weight:400;color:#fff}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#fff;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #448dae;background:#79c9ec url(images/ui-bg_glass_75_79c9ec_1x400.png) 50% 50% repeat-x;font-weight:400;color:#026890}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#026890;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #acdd4a;background:#6eac2c url(images/ui-bg_gloss-wave_50_6eac2c_500x100.png) 50% 50% repeat-x;font-weight:400;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcd113;background:#f8da4e url(images/ui-bg_glass_55_f8da4e_1x400.png) 50% 50% repeat-x;color:#915608}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#915608}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#e14f1c url(images/ui-bg_gloss-wave_45_e14f1c_500x100.png) 50% top repeat-x;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_0078ae_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_d8e7f3_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_e0fdff_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_056b93_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_f5e175_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_f7a50d_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_fcd113_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:5px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:5px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:5px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:5px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_75_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:5px 0 0 5px;padding:0px;background:#999 url(images/ui-bg_flat_55_999999_40x100.png) 50% 50% repeat-x;opacity:.45;filter:Alpha(Opacity=45);border-radius:5px} \ No newline at end of file diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/360_slide_OFF_Click.svg b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/360_slide_OFF_Click.svg deleted file mode 100644 index 6b223ea..0000000 --- a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/360_slide_OFF_Click.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/360_slide_OFF_Hover.svg b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/360_slide_OFF_Hover.svg deleted file mode 100644 index 359ff88..0000000 --- a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/360_slide_OFF_Hover.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/360_slide_OFF_Normal.svg b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/360_slide_OFF_Normal.svg deleted file mode 100644 index f5099f8..0000000 --- a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/360_slide_OFF_Normal.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/360_slide_ON_Click.svg b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/360_slide_ON_Click.svg deleted file mode 100644 index d8b5a2f..0000000 --- a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/360_slide_ON_Click.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/360_slide_ON_Hover.svg b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/360_slide_ON_Hover.svg deleted file mode 100644 index c1876ed..0000000 --- a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/360_slide_ON_Hover.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/360_slide_ON_normal.svg b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/360_slide_ON_normal.svg deleted file mode 100644 index 7100f9c..0000000 --- a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/360_slide_ON_normal.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_checkbox_correct.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_checkbox_correct.png deleted file mode 100644 index 94e323f..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_checkbox_correct.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_checkbox_hover.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_checkbox_hover.png deleted file mode 100644 index d9a6cf6..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_checkbox_hover.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_checkbox_incorrect.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_checkbox_incorrect.png deleted file mode 100644 index f15304b..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_checkbox_incorrect.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_checkbox_normal.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_checkbox_normal.png deleted file mode 100644 index d92bbaa..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_checkbox_normal.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_checkbox_select.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_checkbox_select.png deleted file mode 100644 index f2b4075..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_checkbox_select.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_radio_correct.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_radio_correct.png deleted file mode 100644 index cf3ce9b..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_radio_correct.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_radio_hover.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_radio_hover.png deleted file mode 100644 index 6348b6f..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_radio_hover.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_radio_incorrect.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_radio_incorrect.png deleted file mode 100644 index 55f68ec..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_radio_incorrect.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_radio_normal.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_radio_normal.png deleted file mode 100644 index 8d44bf8..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_radio_normal.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_radio_select.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_radio_select.png deleted file mode 100644 index 1025d2a..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Answer_radio_select.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Graph.jpg b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Graph.jpg deleted file mode 100644 index ef7840a..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Graph.jpg and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/HotspotDisplayImage.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/HotspotDisplayImage.png deleted file mode 100644 index d8de070..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/HotspotDisplayImage.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/HotspotDisplayText.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/HotspotDisplayText.png deleted file mode 100644 index cd926e8..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/HotspotDisplayText.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/HotspotNavigation.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/HotspotNavigation.png deleted file mode 100644 index 974db1f..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/HotspotNavigation.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/HotspotPlayAudio.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/HotspotPlayAudio.png deleted file mode 100644 index 1c2ecfe..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/HotspotPlayAudio.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/HotspotQuestionOverlays.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/HotspotQuestionOverlays.png deleted file mode 100644 index 07b925d..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/HotspotQuestionOverlays.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/HotspotStaticActions.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/HotspotStaticActions.png deleted file mode 100644 index 3dbe00b..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/HotspotStaticActions.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Pause.gif b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Pause.gif deleted file mode 100644 index e2d916e..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Pause.gif and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Pause2x.gif b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Pause2x.gif deleted file mode 100644 index d973489..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Pause2x.gif and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Play.gif b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Play.gif deleted file mode 100644 index 7947699..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Play.gif and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Play2x.gif b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Play2x.gif deleted file mode 100644 index 3430628..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Play2x.gif and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Play_icon.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Play_icon.png deleted file mode 100644 index 2b7f320..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/Play_icon.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/ThreeD_Close.svg b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/ThreeD_Close.svg deleted file mode 100644 index d2f42a7..0000000 --- a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/ThreeD_Close.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/ThreeD_HotspotDefaultGlow.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/ThreeD_HotspotDefaultGlow.png deleted file mode 100644 index edeed74..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/ThreeD_HotspotDefaultGlow.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/ThreeD_HotspotGlow.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/ThreeD_HotspotGlow.png deleted file mode 100644 index ba5bfb4..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/ThreeD_HotspotGlow.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/ThreeD_Pause.svg b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/ThreeD_Pause.svg deleted file mode 100644 index adbd2c5..0000000 --- a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/ThreeD_Pause.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/ThreeD_Play.svg b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/ThreeD_Play.svg deleted file mode 100644 index 128e040..0000000 --- a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/ThreeD_Play.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_close_default@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_close_default@2x.png deleted file mode 100644 index eeffcf2..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_close_default@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_close_hover@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_close_hover@2x.png deleted file mode 100644 index 261c26e..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_close_hover@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_close_select@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_close_select@2x.png deleted file mode 100644 index a04bd07..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_close_select@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_default@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_default@2x.png deleted file mode 100644 index d3a5618..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_default@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_hover@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_hover@2x.png deleted file mode 100644 index 686edbc..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_hover@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_mute_default@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_mute_default@2x.png deleted file mode 100644 index bbee505..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_mute_default@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_mute_hover@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_mute_hover@2x.png deleted file mode 100644 index d6c478c..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_mute_hover@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_mute_select@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_mute_select@2x.png deleted file mode 100644 index 4b406f2..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_mute_select@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_next_default@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_next_default@2x.png deleted file mode 100644 index 642aa82..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_next_default@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_next_hover@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_next_hover@2x.png deleted file mode 100644 index 03afc67..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_next_hover@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_next_select@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_next_select@2x.png deleted file mode 100644 index f90ede2..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_next_select@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_pause_default@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_pause_default@2x.png deleted file mode 100644 index 9ba7952..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_pause_default@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_pause_hover@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_pause_hover@2x.png deleted file mode 100644 index 0c4efdf..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_pause_hover@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_pause_select@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_pause_select@2x.png deleted file mode 100644 index 00865a3..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_pause_select@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_play_default@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_play_default@2x.png deleted file mode 100644 index 111215f..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_play_default@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_play_hover@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_play_hover@2x.png deleted file mode 100644 index 48c0447..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_play_hover@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_play_select@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_play_select@2x.png deleted file mode 100644 index e9f0cef..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_play_select@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_previous_default@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_previous_default@2x.png deleted file mode 100644 index ef791d7..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_previous_default@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_previous_hover@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_previous_hover@2x.png deleted file mode 100644 index 823edd6..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_previous_hover@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_previous_select@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_previous_select@2x.png deleted file mode 100644 index fd1cec0..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_previous_select@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_select@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_select@2x.png deleted file mode 100644 index a1be788..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_menu_select@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_move_left.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_move_left.png deleted file mode 100644 index aeb0b0b..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_move_left.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_move_right.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_move_right.png deleted file mode 100644 index 9c75f17..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/VR_move_right.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/arrow_right.gif b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/arrow_right.gif deleted file mode 100644 index 2cdf601..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/arrow_right.gif and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/assessmenthotspotvisited.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/assessmenthotspotvisited.png deleted file mode 100644 index 6f79611..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/assessmenthotspotvisited.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/assessmenthotspotvisited.svg b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/assessmenthotspotvisited.svg deleted file mode 100644 index 7e2fa02..0000000 --- a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/assessmenthotspotvisited.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/assessmenthotspotvisited@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/assessmenthotspotvisited@2x.png deleted file mode 100644 index 1555060..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/assessmenthotspotvisited@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/ccClose.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/ccClose.png deleted file mode 100644 index abda77d..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/ccClose.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/checkBox_disabled.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/checkBox_disabled.png deleted file mode 100644 index fa7a828..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/checkBox_disabled.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/checkBox_normal.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/checkBox_normal.png deleted file mode 100644 index 5ceca8f..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/checkBox_normal.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/checkBox_selected.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/checkBox_selected.png deleted file mode 100644 index cf5d42b..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/checkBox_selected.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/checkBox_selectedDisabled.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/checkBox_selectedDisabled.png deleted file mode 100644 index 7d9152f..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/checkBox_selectedDisabled.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/checkboxchecked.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/checkboxchecked.png deleted file mode 100644 index eac893b..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/checkboxchecked.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/checkboxunchecked.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/checkboxunchecked.png deleted file mode 100644 index b146838..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/checkboxunchecked.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/closeReviewButton.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/closeReviewButton.png deleted file mode 100644 index d358ffc..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/closeReviewButton.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/correct_answer_normal.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/correct_answer_normal.png deleted file mode 100644 index 7f4ddcd..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/correct_answer_normal.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/correct_answer_small.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/correct_answer_small.png deleted file mode 100644 index 66039af..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/correct_answer_small.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/correct_question_normal.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/correct_question_normal.png deleted file mode 100644 index 3a8e340..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/correct_question_normal.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/correct_question_small.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/correct_question_small.png deleted file mode 100644 index 7543afd..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/correct_question_small.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/cp-logo.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/cp-logo.png deleted file mode 100644 index 2050265..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/cp-logo.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/dd_arrow.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/dd_arrow.png deleted file mode 100644 index 712140c..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/dd_arrow.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/expand_icon.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/expand_icon.png deleted file mode 100644 index 6700684..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/expand_icon.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/expand_icon@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/expand_icon@2x.png deleted file mode 100644 index 93f63f7..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/expand_icon@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/gesturemobileicon.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/gesturemobileicon.png deleted file mode 100644 index 65c3a1f..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/gesturemobileicon.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/gesturemobileicon@2x.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/gesturemobileicon@2x.png deleted file mode 100644 index d60344f..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/gesturemobileicon@2x.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/gesturemobileimage2.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/gesturemobileimage2.png deleted file mode 100644 index f09bf78..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/gesturemobileimage2.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/gesturemobilelandscape.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/gesturemobilelandscape.png deleted file mode 100644 index 8cd6855..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/gesturemobilelandscape.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/gesturetabletimage.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/gesturetabletimage.png deleted file mode 100644 index 779db45..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/gesturetabletimage.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/hotspot.gif b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/hotspot.gif deleted file mode 100644 index b4c1122..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/hotspot.gif and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/hotspot_correct_answer_normal.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/hotspot_correct_answer_normal.png deleted file mode 100644 index 40a238b..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/hotspot_correct_answer_normal.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/hotspot_incorrect_answer_normal.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/hotspot_incorrect_answer_normal.png deleted file mode 100644 index 9d7fc96..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/hotspot_incorrect_answer_normal.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/img_trans.gif b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/img_trans.gif deleted file mode 100644 index 35d42e8..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/img_trans.gif and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/incorrect_answer_normal.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/incorrect_answer_normal.png deleted file mode 100644 index 9fc9738..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/incorrect_answer_normal.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/incorrect_answer_small.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/incorrect_answer_small.png deleted file mode 100644 index ea3a080..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/incorrect_answer_small.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/incorrect_question_normal.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/incorrect_question_normal.png deleted file mode 100644 index f330f26..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/incorrect_question_normal.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/incorrect_question_small.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/incorrect_question_small.png deleted file mode 100644 index 87881d3..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/incorrect_question_small.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/loader.gif b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/loader.gif deleted file mode 100644 index 3ef2392..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/loader.gif and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/loader_transparent.gif b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/loader_transparent.gif deleted file mode 100644 index 2047226..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/loader_transparent.gif and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/movieexpire.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/movieexpire.png deleted file mode 100644 index 098c349..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/movieexpire.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/partial_correct_question_normal.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/partial_correct_question_normal.png deleted file mode 100644 index 1b6f5e7..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/partial_correct_question_normal.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/partial_correct_question_small.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/partial_correct_question_small.png deleted file mode 100644 index 8ef78a9..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/partial_correct_question_small.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/placeholder.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/placeholder.png deleted file mode 100644 index cf05182..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/placeholder.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/radioButton_disabled.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/radioButton_disabled.png deleted file mode 100644 index 0ef7dcd..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/radioButton_disabled.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/radioButton_normal.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/radioButton_normal.png deleted file mode 100644 index b4f23ba..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/radioButton_normal.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/radioButton_selected.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/radioButton_selected.png deleted file mode 100644 index ae7cc4c..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/radioButton_selected.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/radioButton_selectedDisabled.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/radioButton_selectedDisabled.png deleted file mode 100644 index 21452cb..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/radioButton_selectedDisabled.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/radiochecked.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/radiochecked.png deleted file mode 100644 index cc6b65b..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/radiochecked.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/radiounchecked.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/radiounchecked.png deleted file mode 100644 index 690b7d9..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/radiounchecked.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/sequenceReview.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/sequenceReview.png deleted file mode 100644 index 259d3cb..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/sequenceReview.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/skip_answer_normal.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/skip_answer_normal.png deleted file mode 100644 index 532dab9..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/skip_answer_normal.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/skip_answer_small.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/skip_answer_small.png deleted file mode 100644 index 47145c1..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/skip_answer_small.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/skip_question_normal.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/skip_question_normal.png deleted file mode 100644 index 9ac178e..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/skip_question_normal.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/skip_question_small.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/skip_question_small.png deleted file mode 100644 index 1bdd3e0..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/skip_question_small.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/toc.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/toc.png deleted file mode 100644 index 07d815e..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/toc.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidbg.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidbg.png deleted file mode 100644 index cce259f..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidbg.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidfullscreen.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidfullscreen.png deleted file mode 100644 index 4ca3406..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidfullscreen.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidpause.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidpause.png deleted file mode 100644 index 8081727..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidpause.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidplay.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidplay.png deleted file mode 100644 index a87d71d..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidplay.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidrewind.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidrewind.png deleted file mode 100644 index 3dc1eb9..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidrewind.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidslider.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidslider.png deleted file mode 100644 index d0f3ff2..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidslider.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidstop.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidstop.png deleted file mode 100644 index a168a7a..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidstop.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidvolume.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidvolume.png deleted file mode 100644 index aa2fbdd..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidvolume.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidvolume2.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidvolume2.png deleted file mode 100644 index e433fe4..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidvolume2.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidvolumemute.png b/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidvolumemute.png deleted file mode 100644 index 63d9b1e..0000000 Binary files a/docs/MB-920/power_platform_clickthrough/assets/htmlimages/vidvolumemute.png and /dev/null differ diff --git a/docs/MB-920/power_platform_clickthrough/assets/js/CPM.js b/docs/MB-920/power_platform_clickthrough/assets/js/CPM.js deleted file mode 100644 index 32b1ca1..0000000 --- a/docs/MB-920/power_platform_clickthrough/assets/js/CPM.js +++ /dev/null @@ -1,14258 +0,0 @@ -if(!window.cp)window.cp = function(str){return document.getElementById(str)};cp.CPProjInit = function(){if(cp && cp.model && cp.model.data) return; cp.model = {}; cp.poolResources = {}; cp.D = cp.model.data = {pref:{acc:1,rkt:0,hsr:1},Click_Box_1:{type:13,from:1,to:3,rp:0,rpa:0,mdi:'Click_Box_1c',retainState:false,immo:false,apsn:'Slide7854',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:2,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_1ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_1c:{b:[0,0,1280,720],uid:8318,sr:cp.fd,dn:'Click_Box_1',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_1ClkAd:{src:'ar/Mouse.mp3',du:182},Slide7854:{lb:' ',id:7854,from:1,to:3,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide7854c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:' ',si:[{n:'Click_Box_1',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_1ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide7854c:{b:[0,0,1280,720],sr:cp.fd,uid:7854,ip:'dr/7712.png',dn:'Slide7854',visible:'1'},Click_Box_2:{type:13,from:4,to:6,rp:0,rpa:0,mdi:'Click_Box_2c',retainState:false,immo:false,apsn:'Slide7870',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:5,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_2ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_2c:{b:[0,0,1280,720],uid:8325,sr:cp.fd,dn:'Click_Box_2',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_2ClkAd:{src:'ar/Mouse.mp3',du:182},Slide7870:{lb:'Slide 2',id:7870,from:4,to:6,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide7870c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Slide 2 ',si:[{n:'Click_Box_2',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_2ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide7870c:{b:[0,0,1280,720],sr:cp.fd,uid:7870,ip:'dr/7717.png',dn:'Slide7870',visible:'1'},Click_Box_3:{type:13,from:7,to:9,rp:0,rpa:0,mdi:'Click_Box_3c',retainState:false,immo:false,apsn:'Slide7886',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:8,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_3ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_3c:{b:[0,0,1280,720],uid:8332,sr:cp.fd,dn:'Click_Box_3',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_3ClkAd:{src:'ar/Mouse.mp3',du:182},Slide7886:{lb:'Create a canvas app ',id:7886,from:7,to:9,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide7886c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Create a canvas app ',si:[{n:'Click_Box_3',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_3ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide7886c:{b:[0,0,1280,720],sr:cp.fd,uid:7886,ip:'dr/7722.png',dn:'Slide7886',visible:'1'},Click_Box_4:{type:13,from:10,to:12,rp:0,rpa:0,mdi:'Click_Box_4c',retainState:false,immo:false,apsn:'Slide7902',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:11,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_4ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_4c:{b:[0,0,1280,720],uid:8339,sr:cp.fd,dn:'Click_Box_4',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_4ClkAd:{src:'ar/Mouse.mp3',du:182},Slide7902:{lb:'Select More data sources ',id:7902,from:10,to:12,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide7902c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Select More data sources ',si:[{n:'Click_Box_4',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_4ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide7902c:{b:[0,0,1280,720],sr:cp.fd,uid:7902,ip:'dr/7727.png',dn:'Slide7902',visible:'1'},Click_Box_5:{type:13,from:13,to:15,rp:0,rpa:0,mdi:'Click_Box_5c',retainState:false,immo:false,apsn:'Slide7918',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:14,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_5ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_5c:{b:[0,0,1280,720],uid:8346,sr:cp.fd,dn:'Click_Box_5',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_5ClkAd:{src:'ar/Mouse.mp3',du:182},Slide7918:{lb:'Create new connection ',id:7918,from:13,to:15,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide7918c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Create new connection ',si:[{n:'Click_Box_5',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_5ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide7918c:{b:[0,0,1280,720],sr:cp.fd,uid:7918,ip:'dr/7732.png',dn:'Slide7918',visible:'1'},Click_Box_6:{type:13,from:16,to:18,rp:0,rpa:0,mdi:'Click_Box_6c',retainState:false,immo:false,apsn:'Slide7934',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:17,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_6ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_6c:{b:[0,0,1280,720],uid:8353,sr:cp.fd,dn:'Click_Box_6',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_6ClkAd:{src:'ar/Mouse.mp3',du:182},Slide7934:{lb:'Select Fin & Ops Apps connector ',id:7934,from:16,to:18,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide7934c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Select Fin & Ops Apps connector ',si:[{n:'Click_Box_6',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_6ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide7934c:{b:[0,0,1280,720],sr:cp.fd,uid:7934,ip:'dr/7737.png',dn:'Slide7934',visible:'1'},Click_Box_7:{type:13,from:19,to:21,rp:0,rpa:0,mdi:'Click_Box_7c',retainState:false,immo:false,apsn:'Slide7950',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:20,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_7ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_7c:{b:[0,0,1280,720],uid:8360,sr:cp.fd,dn:'Click_Box_7',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_7ClkAd:{src:'ar/Mouse.mp3',du:182},Slide7950:{lb:'Create Fin & Ops Apps connector ',id:7950,from:19,to:21,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide7950c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Create Fin & Ops Apps connector ',si:[{n:'Click_Box_7',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_7ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide7950c:{b:[0,0,1280,720],sr:cp.fd,uid:7950,ip:'dr/7742.png',dn:'Slide7950',visible:'1'},Click_Box_8:{type:13,from:22,to:24,rp:0,rpa:0,mdi:'Click_Box_8c',retainState:false,immo:false,apsn:'Slide7966',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:23,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_8ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_8c:{b:[0,0,1280,720],uid:8367,sr:cp.fd,dn:'Click_Box_8',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_8ClkAd:{src:'ar/Mouse.mp3',du:182},Slide7966:{lb:'Enter Fin & Ops Apps credentials ',id:7966,from:22,to:24,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide7966c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Enter Fin & Ops Apps credentials ',si:[{n:'Click_Box_8',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_8ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide7966c:{b:[0,0,1280,720],sr:cp.fd,uid:7966,ip:'dr/7747.png',dn:'Slide7966',visible:'1'},Click_Box_9:{type:13,from:25,to:27,rp:0,rpa:0,mdi:'Click_Box_9c',retainState:false,immo:false,apsn:'Slide7982',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:26,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_9ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_9c:{b:[0,0,1280,720],uid:8374,sr:cp.fd,dn:'Click_Box_9',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_9ClkAd:{src:'ar/Mouse.mp3',du:182},Slide7982:{lb:'Select Allow access ',id:7982,from:25,to:27,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide7982c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Select Allow access ',si:[{n:'Click_Box_9',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_9ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide7982c:{b:[0,0,1280,720],sr:cp.fd,uid:7982,ip:'dr/7752.png',dn:'Slide7982',visible:'1'},Click_Box_10:{type:13,from:28,to:30,rp:0,rpa:0,mdi:'Click_Box_10c',retainState:false,immo:false,apsn:'Slide7998',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:29,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_10ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_10c:{b:[0,0,1280,720],uid:8381,sr:cp.fd,dn:'Click_Box_10',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_10ClkAd:{src:'ar/Mouse.mp3',du:182},Slide7998:{lb:'Select Fin & Ops Apps URL ',id:7998,from:28,to:30,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide7998c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Select Fin & Ops Apps URL ',si:[{n:'Click_Box_10',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_10ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide7998c:{b:[0,0,1280,720],sr:cp.fd,uid:7998,ip:'dr/7757.png',dn:'Slide7998',visible:'1'},Click_Box_11:{type:13,from:31,to:33,rp:0,rpa:0,mdi:'Click_Box_11c',retainState:false,immo:false,apsn:'Slide8014',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:32,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_11ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_11c:{b:[0,0,1280,720],uid:8388,sr:cp.fd,dn:'Click_Box_11',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_11ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8014:{lb:'List of entities ',id:8014,from:31,to:33,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8014c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'List of entities ',si:[{n:'Click_Box_11',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_11ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8014c:{b:[0,0,1280,720],sr:cp.fd,uid:8014,ip:'dr/7762.png',dn:'Slide8014',visible:'1'},Click_Box_12:{type:13,from:34,to:36,rp:0,rpa:0,mdi:'Click_Box_12c',retainState:false,immo:false,apsn:'Slide8030',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:35,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_12ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_12c:{b:[0,0,1280,720],uid:8395,sr:cp.fd,dn:'Click_Box_12',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_12ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8030:{lb:'Select CustomerGroups entity ',id:8030,from:34,to:36,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8030c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Select CustomerGroups entity ',si:[{n:'Click_Box_12',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_12ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8030c:{b:[0,0,1280,720],sr:cp.fd,uid:8030,ip:'dr/7767.png',dn:'Slide8030',visible:'1'},Click_Box_13:{type:13,from:37,to:39,rp:0,rpa:0,mdi:'Click_Box_13c',retainState:false,immo:false,apsn:'Slide8046',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:38,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_13ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_13c:{b:[0,0,1280,720],uid:8402,sr:cp.fd,dn:'Click_Box_13',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_13ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8046:{lb:'Canvas App is created ',id:8046,from:37,to:39,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8046c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Canvas App is created ',si:[{n:'Click_Box_13',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_13ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8046c:{b:[0,0,1280,720],sr:cp.fd,uid:8046,ip:'dr/7772.png',dn:'Slide8046',visible:'1'},Click_Box_14:{type:13,from:40,to:42,rp:0,rpa:0,mdi:'Click_Box_14c',retainState:false,immo:false,apsn:'Slide8062',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:41,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_14ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_14c:{b:[0,0,1280,720],uid:8409,sr:cp.fd,dn:'Click_Box_14',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_14ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8062:{lb:'Select browser gallery ',id:8062,from:40,to:42,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8062c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Select browser gallery ',si:[{n:'Click_Box_14',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_14ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8062c:{b:[0,0,1280,720],sr:cp.fd,uid:8062,ip:'dr/7777.png',dn:'Slide8062',visible:'1'},Click_Box_15:{type:13,from:43,to:45,rp:0,rpa:0,mdi:'Click_Box_15c',retainState:false,immo:false,apsn:'Slide8078',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:44,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_15ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_15c:{b:[0,0,1280,720],uid:8416,sr:cp.fd,dn:'Click_Box_15',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_15ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8078:{lb:'Select fields in gallery ',id:8078,from:43,to:45,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8078c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Select fields in gallery ',si:[{n:'Click_Box_15',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_15ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8078c:{b:[0,0,1280,720],sr:cp.fd,uid:8078,ip:'dr/7782.png',dn:'Slide8078',visible:'1'},Click_Box_16:{type:13,from:46,to:48,rp:0,rpa:0,mdi:'Click_Box_16c',retainState:false,immo:false,apsn:'Slide8094',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:47,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_16ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_16c:{b:[0,0,1280,720],uid:8423,sr:cp.fd,dn:'Click_Box_16',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_16ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8094:{lb:'Select DetailCustGroup screen ',id:8094,from:46,to:48,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8094c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Select DetailCustGroup screen ',si:[{n:'Click_Box_16',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_16ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8094c:{b:[0,0,1280,720],sr:cp.fd,uid:8094,ip:'dr/7787.png',dn:'Slide8094',visible:'1'},Click_Box_17:{type:13,from:49,to:51,rp:0,rpa:0,mdi:'Click_Box_17c',retainState:false,immo:false,apsn:'Slide8110',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:50,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_17ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_17c:{b:[0,0,1280,720],uid:8430,sr:cp.fd,dn:'Click_Box_17',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_17ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8110:{lb:'Select DetailForm1 ',id:8110,from:49,to:51,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8110c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Select DetailForm1 ',si:[{n:'Click_Box_17',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_17ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8110c:{b:[0,0,1280,720],sr:cp.fd,uid:8110,ip:'dr/7792.png',dn:'Slide8110',visible:'1'},Click_Box_18:{type:13,from:52,to:54,rp:0,rpa:0,mdi:'Click_Box_18c',retainState:false,immo:false,apsn:'Slide8126',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:53,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_18ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_18c:{b:[0,0,1280,720],uid:8437,sr:cp.fd,dn:'Click_Box_18',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_18ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8126:{lb:'Select fields in the DetailCustGroup screen ',id:8126,from:52,to:54,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8126c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Select fields in the DetailCustGroup screen ',si:[{n:'Click_Box_18',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_18ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8126c:{b:[0,0,1280,720],sr:cp.fd,uid:8126,ip:'dr/7797.png',dn:'Slide8126',visible:'1'},Click_Box_19:{type:13,from:55,to:57,rp:0,rpa:0,mdi:'Click_Box_19c',retainState:false,immo:false,apsn:'Slide8142',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:56,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_19ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_19c:{b:[0,0,1280,720],uid:8444,sr:cp.fd,dn:'Click_Box_19',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_19ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8142:{lb:'Select EditForm1 an add the relevant columns ',id:8142,from:55,to:57,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8142c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Select EditForm1 an add the relevant columns ',si:[{n:'Click_Box_19',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_19ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8142c:{b:[0,0,1280,720],sr:cp.fd,uid:8142,ip:'dr/7802.png',dn:'Slide8142',visible:'1'},Click_Box_20:{type:13,from:58,to:60,rp:0,rpa:0,mdi:'Click_Box_20c',retainState:false,immo:false,apsn:'Slide8158',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:59,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_20ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_20c:{b:[0,0,1280,720],uid:8451,sr:cp.fd,dn:'Click_Box_20',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_20ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8158:{lb:'Save the Canvas App ',id:8158,from:58,to:60,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8158c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Save the Canvas App ',si:[{n:'Click_Box_20',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_20ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8158c:{b:[0,0,1280,720],sr:cp.fd,uid:8158,ip:'dr/7807.png',dn:'Slide8158',visible:'1'},Click_Box_21:{type:13,from:61,to:63,rp:0,rpa:0,mdi:'Click_Box_21c',retainState:false,immo:false,apsn:'Slide8174',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:62,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_21ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_21c:{b:[0,0,1280,720],uid:8458,sr:cp.fd,dn:'Click_Box_21',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_21ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8174:{lb:'Name the Canvas App ',id:8174,from:61,to:63,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8174c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Name the Canvas App ',si:[{n:'Click_Box_21',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_21ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8174c:{b:[0,0,1280,720],sr:cp.fd,uid:8174,ip:'dr/7812.png',dn:'Slide8174',visible:'1'},Click_Box_22:{type:13,from:64,to:66,rp:0,rpa:0,mdi:'Click_Box_22c',retainState:false,immo:false,apsn:'Slide8190',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:65,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_22ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_22c:{b:[0,0,1280,720],uid:8465,sr:cp.fd,dn:'Click_Box_22',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_22ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8190:{lb:'Select preview button ',id:8190,from:64,to:66,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8190c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Select preview button ',si:[{n:'Click_Box_22',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_22ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8190c:{b:[0,0,1280,720],sr:cp.fd,uid:8190,ip:'dr/7817.png',dn:'Slide8190',visible:'1'},Click_Box_23:{type:13,from:67,to:69,rp:0,rpa:0,mdi:'Click_Box_23c',retainState:false,immo:false,apsn:'Slide8206',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:68,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_23ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_23c:{b:[0,0,1280,720],uid:8472,sr:cp.fd,dn:'Click_Box_23',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_23ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8206:{lb:'Select Create new item ',id:8206,from:67,to:69,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8206c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Select Create new item ',si:[{n:'Click_Box_23',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_23ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8206c:{b:[0,0,1280,720],sr:cp.fd,uid:8206,ip:'dr/7822.png',dn:'Slide8206',visible:'1'},Click_Box_24:{type:13,from:70,to:72,rp:0,rpa:0,mdi:'Click_Box_24c',retainState:false,immo:false,apsn:'Slide8222',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:71,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_24ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_24c:{b:[0,0,1280,720],uid:8479,sr:cp.fd,dn:'Click_Box_24',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_24ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8222:{lb:'Enter values ',id:8222,from:70,to:72,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8222c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Enter values ',si:[{n:'Click_Box_24',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_24ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8222c:{b:[0,0,1280,720],sr:cp.fd,uid:8222,ip:'dr/7827.png',dn:'Slide8222',visible:'1'},Click_Box_25:{type:13,from:73,to:75,rp:0,rpa:0,mdi:'Click_Box_25c',retainState:false,immo:false,apsn:'Slide8238',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:74,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_25ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_25c:{b:[0,0,1280,720],uid:8486,sr:cp.fd,dn:'Click_Box_25',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_25ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8238:{lb:'New record in the gallery ',id:8238,from:73,to:75,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8238c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'New record in the gallery ',si:[{n:'Click_Box_25',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_25ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8238c:{b:[0,0,1280,720],sr:cp.fd,uid:8238,ip:'dr/7832.png',dn:'Slide8238',visible:'1'},Click_Box_26:{type:13,from:76,to:78,rp:0,rpa:0,mdi:'Click_Box_26c',retainState:false,immo:false,apsn:'Slide8254',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:77,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_26ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_26c:{b:[0,0,1280,720],uid:8493,sr:cp.fd,dn:'Click_Box_26',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_26ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8254:{lb:'Select Customer groups ',id:8254,from:76,to:78,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8254c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Select Customer groups ',si:[{n:'Click_Box_26',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_26ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8254c:{b:[0,0,1280,720],sr:cp.fd,uid:8254,ip:'dr/7837.png',dn:'Slide8254',visible:'1'},Click_Box_27:{type:13,from:79,to:81,rp:0,rpa:0,mdi:'Click_Box_27c',retainState:false,immo:false,apsn:'Slide8270',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:80,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_27ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_27c:{b:[0,0,1280,720],uid:8500,sr:cp.fd,dn:'Click_Box_27',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_27ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8270:{lb:'Newly created record ',id:8270,from:79,to:81,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8270c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Newly created record ',si:[{n:'Click_Box_27',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_27ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8270c:{b:[0,0,1280,720],sr:cp.fd,uid:8270,ip:'dr/7842.png',dn:'Slide8270',visible:'1'},Click_Box_28:{type:13,from:82,to:84,rp:0,rpa:0,mdi:'Click_Box_28c',retainState:false,immo:false,apsn:'Slide8286',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:83,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_28ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_28c:{b:[0,0,1280,720],uid:8507,sr:cp.fd,dn:'Click_Box_28',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_28ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8286:{lb:'Slide 28',id:8286,from:82,to:84,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8286c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Slide 28 ',si:[{n:'Click_Box_28',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_28ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8286c:{b:[0,0,1280,720],sr:cp.fd,uid:8286,ip:'dr/7847.png',dn:'Slide8286',visible:'1'},Click_Box_29:{type:13,from:85,to:87,rp:0,rpa:0,mdi:'Click_Box_29c',retainState:false,immo:false,apsn:'Slide8302',JSONTT_4:[],cpa:true,oca:'cp.jumpToNextSlide();',JSONTT_5:[],ofa:'cpCmndResume = 1;',iflbx:false,ipflbx:true,chfn:cp.ch,osc:'',osct:0,ofc:'',ofct:0,pa:86,enabled:1,ma:-1,pfc:1,dclk:false,rclk:false,amc:true,ca:'Click_Box_29ClkAd',kh:cp.cbKH,sc:{k:13,s:0,c:0,a:0},eh:cp.cbKH,siq:false,sat:true,trin:0,trout:0,isDD:false},Click_Box_29c:{b:[0,0,1280,720],uid:8514,sr:cp.fd,dn:'Click_Box_29',visible:1,effectiveVi:1,JSONEffectData:false,accstr:'Click Box ',traccstr:'',ti:-1,acclng:'',vbwr:[0,0,1280,720],vb:[0,0,1280,720]},Click_Box_29ClkAd:{src:'ar/Mouse.mp3',du:182},Slide8302:{lb:'Closing slide ',id:8302,from:85,to:87,iols:0,i360qs:false,propTxtScaling:false,minFontSizeScaling:14,useng:true,transition:{type:0},mmot:false,mdi:'Slide8302c',st:'PPTX Slide',ccProperties:{1280:{pos:7,x:35,y:88}},audCC:[],vidCC:[],accstr:'Closing slide ',si:[{n:'Click_Box_29',t:13,d:{cur:1}}],iph:[],ea:'Click_Box_29ClkAd',v:false,bc:'#ffffff',JSONTT_0:[],JSONTT_6:[],qs:''},Slide8302c:{b:[0,0,1280,720],sr:cp.fd,uid:8302,ip:'dr/7852.png',dn:'Slide8302',visible:'1'},quizzingData:{allowBackwardMovement:true,allowReviewMode:true,isInReviewMode:false,allowSkipAnyScoreSlide:true,allowSkipFailScoreSlide:true,allowSkipPassScoreSlide:true,anyGradeAction:'',anyGradeActionArg1:'',anyGradeActionArg2:'',defaultActionType:'continue',defaultActionArg1:'',defaultActionArg2:'',failedScoreFeedback:'Sorry, you failed!',failingGradeAction:'cpCmndResume = 1;',JSONTT_5:[],passedScoreFeedback:'Congratulations, you passed the quiz!',passingGradeAction:'cpCmndResume = 1;',JSONTT_4:[],pretestAction:'',it:false,anyScoreSlide:-1,firstSlideInQuiz:-1,lastSlideInQuiz:-1,quizScopeEndSlide:-1,maxScore:0,minScore:0,maxPretestScore:0,numQuestionsInQuiz:0,numQuizAttemptsAllowed:1,passingScore:0,quizInfoCurrentAttempt:0,quizInfoPercentScored:0,quizProgress:'',questionAdvance:'optional',quizAdvance:'optional',quizID:379,showFinishButton:true,showProgress:true,questionPoolsInitialized:true,quizInfoAnswerChoice:'',quizInfoAttempts:1,quizInfoLastSlidePointScored:0,quizInfoMaxAttemptsOnCurrentQuestion:1,quizInfoPassFail:0,quizInfoPointsPerQuestionSlide:0,quizInfoPointsScored:0,quizInfoQuestionSlideTiming:0,quizInfoQuestionSlideType:'',quizInfoQuizPassPercent:80,quizInfoQuizPassPoints:0,quizInfoTotalCorrectAnswers:0,quizInfoTotalProjectPoints:0,quizInfoTotalQuestionsPerProject:0,quizInfoTotalQuizPoints:0,quizInfoTotalUnansweredQuestions:0,reportingVariables:0,reportingEnabled:false,submitAll:false,hidePlaybarInQuiz:false,quizBranchAware:false,passFailPassingScoreTypeInPrecent:true,passFailPassingScoreValue:80,progressIndicatorType:0,rpViDv:'This slide was viewed in device with different width.',progressIndicatorString:'Question %d of %d '},rtDialog:{rtbgfc:'#49a9e6',rtbgsc:'#49a9e6',rtbtnfc:'#000b51',rtbtnsc:'#333333',rtsc:'#c2e2f7',rttc:'#ffffff',rttsc:'#49a9e6',rtfn:'Tahoma',rtt:'Submit All',rtsam:'You have answered all questions. What do you want to do next?',rtiqm:'One or more questions is incomplete. Answer all questions to continue.',rtsiqm:'You have not answered a few questions yet. Are you sure you want to proceed without answering those questions?',rtsanym:'You have reached the end of the quiz, but you have unanswered questions. What do you want to do?',rtmtqm:'You must answer at least one question to continue.',rtokb:'Ok',rtcb:'CANCEL',rtyb:'Yes',rtnb:'No',rtsab:'Submit All Answers',rtsanyb:'Submit Anyway',rtrtqb:'Return To Quiz',rtWarningTitle:'Adobe Captivate Classic',rtUnsupportedBowser:'This browser does not support some of the content in the file you are trying to view. Use one of the following browsers:',rtPopupBlkr:'Please goto your settings and disable popup blocker',mandatoryMsg1:'You did not answer some questions. Answer them first and then proceed.',mandatoryMsg2:'You have not viewed some hotspots. Please view them to proceed.',mandatoryTitle:'Information',hotspotsVisitedMsg:'You have explored all hotspots. Click to continue or use the navigation options to exit.'},sgMgr:{ri:0,sg:[[0,[[1,[23,2]]]],[1,[[2,[23,2]]]],[2,[[3,[23,2]]]],[3,[[4,[23,2]]]],[4,[[5,[23,2]]]],[5,[[6,[23,2]]]],[6,[[7,[23,2]]]],[7,[[8,[23,2]]]],[8,[[9,[23,2]]]],[9,[[10,[23,2]]]],[10,[[11,[2,23]]]],[11,[[12,[2,23]]]],[12,[[13,[2,23]]]],[13,[[14,[2,23]]]],[14,[[15,[2,23]]]],[15,[[16,[2,23]]]],[16,[[17,[2,23]]]],[17,[[18,[2,23]]]],[18,[[19,[2,23]]]],[19,[[20,[2,23]]]],[20,[[21,[2,23]]]],[21,[[22,[2,23]]]],[22,[[23,[2,23]]]],[23,[[24,[2,23]]]],[24,[[25,[2,23]]]],[25,[[26,[2,23]]]],[26,[[27,[2,23]]]],[27,[[28,[2,23]]]]]},project:{fps:30,hasTOC:0,w:1280,h:720,iw:1280,ih:720,prm:[1,1,0,0],stateNameToLocalizedStateNameMap:{kCPNormalState:'Normal',kCPDownState:'Down',kCPRolloverState:'RollOver',kCPVisitedState:'Visited',kCPDragoverState:'DragOver',kCPDragstartState:'DragStart',kCPDropCorrect:'DropCorrect',kCPDropIncorrect:'DropIncorrect',kCPDropAccept:'DropAccept',kCPDropReject:'DropReject'},prjBgColor:'#ffffff',pkt:0,htmlBgColor:'#ffffff',shc:true,pN:'Power platform clickthrough715 (1)'},project_main:{from:1,to:87,currentFrame:1,useResponsive:false,responsiveType:4,currentFrame:1,useWidgetVersion7:false,isPublishedFromLacuna:false,vestr:0,vim:0,slides:'Slide7854,Slide7870,Slide7886,Slide7902,Slide7918,Slide7934,Slide7950,Slide7966,Slide7982,Slide7998,Slide8014,Slide8030,Slide8046,Slide8062,Slide8078,Slide8094,Slide8110,Slide8126,Slide8142,Slide8158,Slide8174,Slide8190,Slide8206,Slide8222,Slide8238,Slide8254,Slide8270,Slide8286,Slide8302',questions:'',autoplay:false,preloader:true,preloaderFileName:'dr/loading.gif',preloaderPercentage:100,preloaderimagel:625,preloaderimaget:345,pprtd:false,peon:false,fadeInAtStart:0,fadeOutAtEnd:0,endAction:'cp.stopMovie();'},borderProperties:{hasBorder:true,l:0,t:0,r:0,b:30,w:1280,h:750,hasSqEd:false,bc:'#c0c0c0'},playBarProperties:{hasPlayBar:true,jsfile:'playbarScript.js',cssfile:'playbarStyle.css',position:3,layout:3,showOnHover:false,overlay:false,tworow:false,hasRewind:true,hasBackward:true,hasPlay:true,hasEnterVR:false,hasSlider:true,hasForward:true,hasCC:false,hasAudioOn:true,hasExit:true,hasFastForward:true,applyColors:true,BkColor:{bc:'#d6d6d6',alpha:100},FaceColor:{bc:'#7f7f7f',alpha:100},GlowColor:{bc:'#146192',alpha:100},IconColor:{bc:'#ffffff',alpha:100},alpha:100,noToolTips:false,locale:0},tocProperties:{},ccProperties:{1280:{w:30,h:12,x:-1,y:-1,txtl:0,pos:7,v:false,c:'#ffffff',o:49}},trecs:[{link:7854,text:[]},{link:7870,text:[]},{link:7886,text:[]},{link:7902,text:[]},{link:7918,text:[]},{link:7934,text:[]},{link:7950,text:[]},{link:7966,text:[]},{link:7982,text:[]},{link:7998,text:[]},{link:8014,text:[]},{link:8030,text:[]},{link:8046,text:[]},{link:8062,text:[]},{link:8078,text:[]},{link:8094,text:[]},{link:8110,text:[]},{link:8126,text:[]},{link:8142,text:[]},{link:8158,text:[]},{link:8174,text:[]},{link:8190,text:[]},{link:8206,text:[]},{link:8222,text:[]},{link:8238,text:[]},{link:8254,text:[]},{link:8270,text:[]},{link:8286,text:[]},{link:8302,text:[]}],typekit:{kit_id:''},};cp.model.projectImages=['assets/htmlimages/Pause2x.gif','assets/htmlimages/Play2x.gif','assets/htmlimages/expand_icon.png','assets/htmlimages/gesturemobileicon@2x.png','assets/htmlimages/gesturemobilelandscape.png','assets/htmlimages/gesturetabletimage.png','assets/htmlimages/img_trans.gif','assets/htmlimages/placeholder.png'];cp.model.images=['dr/7712.png','dr/7717.png','dr/7722.png','dr/7727.png','dr/7732.png','dr/7737.png','dr/7742.png','dr/7747.png','dr/7752.png','dr/7757.png','dr/7762.png','dr/7767.png','dr/7772.png','dr/7777.png','dr/7782.png','dr/7787.png','dr/7792.png','dr/7797.png','dr/7802.png','dr/7807.png','dr/7812.png','dr/7817.png','dr/7822.png','dr/7827.png','dr/7832.png','dr/7837.png','dr/7842.png','dr/7847.png','dr/7852.png'];cp.model.videos=[];cp.model.slideVideos=[];cp.model.tocVideos=[];cp.model.audios=['ar/Mouse.mp3'];cp.initVariables = function(){cp.cv('CaptivateVersion','11.8.0',1,1000,0);cp.cv('cpCmndCC',0,1,15,0);cp.cv('cpCmndExit',0,1,15,0);cp.cv('cpCmndMute',0,1,15,0);cp.cv('cpCmndPause',0,1,15,0);cp.cv('cpCmndPlaybarMoved',0,1,15,0);cp.cv('cpCmndPrevious',0,1,15,0);cp.cv('cpCmndResume',0,1,15,0);cp.cv('cpCmndShowPlaybar',1,1,15,0);cp.cv('cpCmndTOCVisible',0,1,15,0);cp.cv('cpCmndVolume',100,1,15,0);cp.cv('cpInQuizScope',0,1,15,0);cp.cv('cpInReviewMode',0,1,15,0);cp.cv('cpInfoAuthor','author',1,15,0);cp.cv('cpInfoCompany','company',1,15,0);cp.cv('cpInfoCopyright','copyright',1,15,0);cp.cv('cpInfoCourseID',-1,1,15,0);cp.cv('cpInfoCourseName','Course Name',1,15,0);cp.cv('cpInfoCurrentDate','dd',1,15,0);cp.cv('cpInfoCurrentDateString','mm/dd/yyyy',1,15,0);cp.cv('cpInfoCurrentDateStringDDMMYYYY','dd/mm/yyyy',1,15,0);cp.cv('cpInfoCurrentDay',1,1,15,0);cp.cv('cpInfoCurrentFrame',1,1,15,0);cp.cv('cpInfoCurrentHour','hh',1,15,0);cp.cv('cpInfoCurrentLocaleDateString','',1,15,0);cp.cv('cpInfoCurrentMinutes','mm',1,15,0);cp.cv('cpInfoCurrentMonth','mm',1,15,0);cp.cv('cpInfoCurrentSlide',1,1,15,0);cp.cv('cpInfoCurrentSlideLabel','slide',1,15,0);cp.cv('cpInfoCurrentSlideType','Normal',1,15,0);cp.cv('cpInfoCurrentTime','hh:mm:ss',1,15,0);cp.cv('cpInfoCurrentYear','yyyy',1,15,0);cp.cv('cpInfoDescription','project description',1,15,0);cp.cv('cpInfoElapsedTimeMS',0,1,15,0);cp.cv('cpInfoEmail','author@company.com',1,15,0);cp.cv('cpInfoEpochMS',0,1,15,0);cp.cv('cpInfoFPS',1,1,15,0);cp.cv('cpInfoFrameCount',1,1,15,0);cp.cv('cpInfoGeoLocation','',1,15,0);cp.cv('cpInfoHasPlaybar',1,1,1000,0);cp.cv('cpInfoIsStandalone',1,1,15,0);cp.cv('cpInfoLastVisitedSlide',1,1,15,0);cp.cv('cpInfoMobileOS',0,1,15,0);cp.cv('cpInfoPercentage',0,1,15,0);cp.cv('cpInfoPrevSlide',-1,1,15,0);cp.cv('cpInfoProjectName','Power platform clickthrough715 (1)',1,15,0);cp.cv('cpInfoSlideCount',1,1,15,0);cp.cv('cpInfoSlidesInProject',29,1,1000,0);cp.cv('cpInfoWebsite','www.company.com',1,15,0);cp.cv('cpLockTOC',0,1,1000,0);cp.cv('cpQuizInfoAnswerChoice','',1,15,0);cp.cv('cpQuizInfoAttempts',0,1,15,0);cp.cv('cpQuizInfoLastSlidePointScored',0,1,15,0);cp.cv('cpQuizInfoMaxAttemptsOnCurrentQuestion',0,1,15,0);cp.cv('cpQuizInfoNegativePointsOnCurrentQuestionSlide',0,1,15,0);cp.cv('cpQuizInfoPassFail',0,1,15,0);cp.cv('cpQuizInfoPointsPerQuestionSlide',0,1,15,0);cp.cv('cpQuizInfoPointsscored',0,1,15,0);cp.cv('cpQuizInfoPreTestMaxScore',0,1,15,0);cp.cv('cpQuizInfoPreTestTotalCorrectAnswers',0,1,15,0);cp.cv('cpQuizInfoPreTestTotalQuestions',0,1,1000,0);cp.cv('cpQuizInfoPretestPointsscored',0,1,15,0);cp.cv('cpQuizInfoPretestScorePercentage',0,1,15,0);cp.cv('cpQuizInfoQuestionPartialScoreOn',0,1,15,0);cp.cv('cpQuizInfoQuestionSlideTiming',0,1,15,0);cp.cv('cpQuizInfoQuestionSlideType','choice',1,15,0);cp.cv('cpQuizInfoQuizPassPercent',80,1,1000,0);cp.cv('cpQuizInfoQuizPassPoints',0,1,1000,0);cp.cv('cpQuizInfoTotalCorrectAnswers',0,1,15,0);cp.cv('cpQuizInfoTotalProjectPoints',0,1,15,0);cp.cv('cpQuizInfoTotalQuestionsPerProject',0,1,15,0);cp.cv('cpQuizInfoTotalQuizPoints',0,1,1000,0);cp.cv('cpQuizInfoTotalUnansweredQuestions',0,1,15,0);cp.cv('cpInfoPrevFrame',0,1,15,0);cp.cv('cpQuizInfoStudentID','',0,15,0);cp.cv('cpQuizInfoStudentName','',0,15,0);};cp.ReportingVariables="";};cp.sbw=0;cp.useg=1;cp.geo=0;cp.pg=0;cp.win8=0;cp.autoGrow=1;cp.fluidFont=1;;var RuntimeBrowserDetect={init:function(a,c,e){this.BrowserEnum||(this.BrowserEnum={},this.BrowserEnum.UNKNOWN=0,this.BrowserEnum.MSIE=1,this.BrowserEnum.FIREFOX=2,this.BrowserEnum.CHROME=3,this.BrowserEnum.SAFARI=4,this.BrowserEnum.NETSCAPE=5,this.BrowserEnum.OPERA=6,this.BrowserEnum.CAMINO=7,this.BrowserEnum.FIREBIRD=8,this.BrowserEnum.MSIE_MIN_SUPPORTED_VERSION=9,this.BrowserEnum.CHROME_MIN_SUPPORTED_VERSION=17,this.BrowserEnum.SAFARI_MIN_SUPPORTED_VERSION=5.1,this.BrowserEnum.FF_MIN_SUPPORTED_VERSION_WIN= -22,this.BrowserEnum.FF_MIN_SUPPORTED_VERSION_MAC=35,this.BrowserEnum.FF_MIN_SUPPORTED_VERSION_FFOS=15,this.BrowserEnum.FF_MIN_SUPPORTED_VERSION_ANDROID=20);this.DeviceEnum||(this.DeviceEnum={},this.DeviceEnum.DESKTOP=0,this.DeviceEnum.IDEVICE=1,this.DeviceEnum.ANDROID=2);this.browserVersion=this.browser=this.BrowserEnum.UNKNOWN;this.device=this.DeviceEnum.DESKTOP;navigator.userAgent.match(/(iPhone|iPad|iPod)/i)?this.device=this.DeviceEnum.IDEVICE:navigator.userAgent.match(/android/i)&&(this.device= -this.DeviceEnum.ANDROID);navigator.userAgent.match(/MSIE/i)?(this.browser=this.BrowserEnum.MSIE,this.browserVersion=this.getCurrentBrowserVersion(navigator.userAgent,"MSIE")||this.getCurrentBrowserVersion(navigator.appVersion,"MSIE")||this.BrowserEnum.UNKNOWN):navigator.userAgent.match(/Firefox/i)?(this.browser=this.BrowserEnum.FIREFOX,this.browserVersion=this.getCurrentBrowserVersion(navigator.userAgent,"Firefox")||this.getCurrentBrowserVersion(navigator.appVersion,"Firefox")||this.BrowserEnum.UNKNOWN): -navigator.userAgent.match(/Chrome/i)?(this.browser=this.BrowserEnum.CHROME,this.browserVersion=this.getCurrentBrowserVersion(navigator.userAgent,"Chrome")||this.getCurrentBrowserVersion(navigator.appVersion,"Chrome")||this.BrowserEnum.UNKNOWN):navigator.userAgent.match(/Safari/i)?(this.browser=this.BrowserEnum.SAFARI,this.browserVersion=this.getCurrentBrowserVersion(navigator.userAgent,"Version")||this.getCurrentBrowserVersion(navigator.appVersion,"Version")||this.BrowserEnum.UNKNOWN):navigator.userAgent.match(/Netscape/i)? -(this.browser=this.BrowserEnum.NETSCAPE,this.browserVersion=this.getCurrentBrowserVersion(navigator.userAgent,"Netscape")||this.getCurrentBrowserVersion(navigator.appVersion,"Netscape")||this.BrowserEnum.UNKNOWN):navigator.userAgent.match(/Opera/i)?(this.browser=this.BrowserEnum.OPERA,this.browserVersion=this.getCurrentBrowserVersion(navigator.userAgent,"Version")||this.getCurrentBrowserVersion(navigator.appVersion,"Version")||this.BrowserEnum.UNKNOWN):navigator.userAgent.match(/Camino/i)?(this.browser= -this.BrowserEnum.CAMINO,this.browserVersion=this.getCurrentBrowserVersion(navigator.userAgent,"Camino")||this.getCurrentBrowserVersion(navigator.appVersion,"Camino")||this.BrowserEnum.UNKNOWN):navigator.userAgent.match(/Firebird/i)?this.browser=this.BrowserEnum.FIREBIRD:navigator.userAgent.match(/Trident/i)&&"netscape"==navigator.appName.toLowerCase()&&(this.browser=this.BrowserEnum.MSIE,this.browserVersion=this.getCurrentBrowserVersion(navigator.userAgent,"rv")||this.BrowserEnum.UNKNOWN);this.getIsBrowserSupported()|| -this.showRuntimeWarning(a,c,e)},getCurrentBrowserVersion:function(a,c){var e=a.indexOf(c);return-1==e?this.BrowserEnum.UNKNOWN:parseFloat(a.substring(e+c.length+1))},getIsBrowserSupported:function(){var a=!1;if(this.browser==this.BrowserEnum.MSIE&&this.browserVersion>=this.BrowserEnum.MSIE_MIN_SUPPORTED_VERSION)a=!0;else if(this.browser==this.BrowserEnum.CHROME&&this.browserVersion>=this.BrowserEnum.CHROME_MIN_SUPPORTED_VERSION)a=!0;else if(this.browser==this.BrowserEnum.SAFARI&&this.browserVersion>= -this.BrowserEnum.SAFARI_MIN_SUPPORTED_VERSION)a=!0;else if(this.browser==this.BrowserEnum.FIREFOX&&(cp.OS==cp.MACOS&&this.browserVersion>=this.BrowserEnum.FF_MIN_SUPPORTED_VERSION_MAC||cp.OS==cp.WINDOWS&&this.browserVersion>=this.BrowserEnum.FF_MIN_SUPPORTED_VERSION_WIN))a=!0;return a},getPanelElement:function(a,c,e,d,f){var b=document.createElement("div");b.style.left=a;b.style.top=c;b.style.width=e;b.style.height=d;b.style.backgroundColor=f;b.style.border="1px solid #666666";b.style.borderRadius= -"14px";return b},getTextElement:function(a,c,e,d,f){var b=document.createElement("div");b.style.color=e;b.style.fontFamily=d;b.style.fontSize="14px";b.style.textAlign="left";b.style.left=a;b.style.top=c;b.style.position="relative";b.style.opacity=1;b.innerHTML=f;return b},showRuntimeWarning:function(a,c,e){if(document.body){var d=document.createElement("div");d.id="CPUnSupportedBrowserWarning_ID";var f=this.getPanelElement("0px","0px","455px","220px","#CCCCCC");f.style.margin="100px auto";"boxShadow"in -f.style&&(f.style.boxShadow="1px 1px 1px #000000");d.appendChild(f);var b=this.getPanelElement("2px","2px","450px","215px","#FEFEFE");b.style.position="relative";f.appendChild(b);c=this.getTextElement("10px","10px","#000000","Tahoma",c);b.appendChild(c);c=document.createElement("div");c.style.height="2px";c.style.backgroundColor="#000000";c.style.opacity=0.5;c.style.position="relative";c.style.marginLeft="10px";c.style.marginRight="10px";c.style.top="20px";b.appendChild(c);a=this.getTextElement("10px", -"30px","#000000","Tahoma",a);a.style.marginRight="10px";b.appendChild(a);a=this.getPanelElement("0px","auto","100px","33px","#CCCCCC");a.id="dismissWarningBox";a.style.bottom="10px";a.style.opacity=0.7;a.style.position="absolute";a.style.cursor="pointer";cp.registerGestureEvent(a,cp.GESTURE_EVENT_TYPES.TAP,function(){var a=document.getElementById("CPUnSupportedBrowserWarning_ID");a!=void 0&&document.body.removeChild(a)});"boxShadow"in a.style&&(a.style.boxShadow="1px 1px 1px #000000");e=this.getTextElement("0px", -"5px","#000000","Tahoma",e);e.style.textAlign="center";a.appendChild(e);b.appendChild(a);document.body.appendChild(d);d.style.visibility="visible";d.style.position="absolute";d.style.left="0px";d.style.top="0px";d.style.width="100%";d.style.height="100%";d.style.textAlign="center";d.style.zIndex="1000";d.style.backgroundColor="CCCCCC";a.style.left=(b.clientWidth-a.clientWidth)/2+"px"}}}; -(function(i,m){var b=function(a,c){return new b.Instance(a,c||{})};b.defaults={stop_browser_behavior:{userSelect:"none",touchAction:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};b.HAS_POINTEREVENTS=i.navigator.pointerEnabled||i.navigator.msPointerEnabled;b.HAS_TOUCHEVENTS="ontouchstart"in i;b.MOBILE_REGEX=/mobile|tablet|ip(ad|hone|od)|android|silk/i;b.NO_MOUSEEVENTS=b.HAS_TOUCHEVENTS&&i.navigator.userAgent.match(b.MOBILE_REGEX);b.EVENT_TYPES= -{};b.DIRECTION_DOWN="down";b.DIRECTION_LEFT="left";b.DIRECTION_UP="up";b.DIRECTION_RIGHT="right";b.POINTER_MOUSE="mouse";b.POINTER_TOUCH="touch";b.POINTER_PEN="pen";b.EVENT_START="start";b.EVENT_MOVE="move";b.EVENT_END="end";b.DOCUMENT=i.document;b.plugins=b.plugins||{};b.gestures=b.gestures||{};b.READY=!1;b.utils={extend:function(a,b,d){for(var e in b)a[e]!==m&&d||(a[e]=b[e]);return a},each:function(a,b,d){var e,f;if("forEach"in a)a.forEach(b,d);else if(a.length!==m){e=0;for(f=a.length;e=e?0b.index?1:0});return this.gestures}};b.gestures.Drag={name:"drag",index:50, -defaults:{drag_min_distance:10,correct_for_drag_min_distance:!0,drag_max_touches:1,drag_block_horizontal:!1,drag_block_vertical:!1,drag_lock_to_axis:!1,drag_lock_min_distance:25},triggered:!1,handler:function(a,c){if(b.detection.current.name!=this.name&&this.triggered)c.trigger(this.name+"end",a),this.triggered=!1;else if(!(0c.options.drag_max_touches))switch(a.eventType){case b.EVENT_START:this.triggered=!1;break;case b.EVENT_MOVE:if(a.distancea.deltaY?b.DIRECTION_UP:b.DIRECTION_DOWN:0>a.deltaX?b.DIRECTION_LEFT:b.DIRECTION_RIGHT);this.triggered||(c.trigger(this.name+"start",a),this.triggered=!0);c.trigger(this.name,a);c.trigger(this.name+a.direction,a);(c.options.drag_block_vertical&&b.utils.isVertical(a.direction)||c.options.drag_block_horizontal&&!b.utils.isVertical(a.direction))&&a.preventDefault();break;case b.EVENT_END:this.triggered&& -c.trigger(this.name+"end",a),this.triggered=!1}}};b.gestures.Hold={name:"hold",index:10,defaults:{hold_timeout:500,hold_threshold:1},timer:null,handler:function(a,c){switch(a.eventType){case b.EVENT_START:clearTimeout(this.timer);b.detection.current.name=this.name;this.timer=setTimeout(function(){"hold"==b.detection.current.name&&c.trigger("hold",a)},c.options.hold_timeout);break;case b.EVENT_MOVE:a.distance>c.options.hold_threshold&&clearTimeout(this.timer);break;case b.EVENT_END:clearTimeout(this.timer)}}}; -b.gestures.Release={name:"release",index:Infinity,handler:function(a,c){a.eventType==b.EVENT_END&&c.trigger(this.name,a)}};b.gestures.Swipe={name:"swipe",index:40,defaults:{swipe_min_touches:1,swipe_max_touches:1,swipe_velocity:1},handler:function(a,c){if(a.eventType==b.EVENT_END&&!(0c.options.swipe_max_touches)&&(a.velocityX>c.options.swipe_velocity||a.velocityY>c.options.swipe_velocity))c.trigger(this.name, -a),c.trigger(this.name+a.direction,a)}};b.gestures.Tap={name:"tap",evttouches:1,index:100,defaults:{tap_max_touchtime:250,tap_max_distance:10,tap_always:!0,doubletap_distance:20,doubletap_interval:300,evttouches:1,longtap_min_touchtime:500,longtap_max_touchtime:1E3,evtstarttime:0},handler:function(a,c){a.eventType==b.EVENT_START&&(c.options.evttouches=a.touches.length,c.options.evtstarttime=(new Date).getTime());a.eventType==b.EVENT_MOVE&&(c.options.evttouches=a.touches.length);if(a.eventType==b.EVENT_END&& -"touchcancel"!=a.srcEvent.type){var d=b.detection.previous,e=!1;if(d&&"tap"==d.name&&a.timeStamp-d.lastEvent.timeStampc.options.tap_max_touchtime||a.distance>c.options.tap_max_distance)return;c.trigger("doubletap",a);e=!0}if(!e||c.options.tap_always)(new Date).getTime()-c.options.evtstarttime>c.options.longtap_min_touchtime?a.distance>c.options.tap_max_distance||(b.detection.current.name="longtap",c.trigger(b.detection.current.name, -a)):a.deltaTime>c.options.tap_max_touchtime||a.distance>c.options.tap_max_distance||(b.detection.current.name="tap",c.trigger(b.detection.current.name,a))}}};b.gestures.Touch={name:"touch",index:-Infinity,defaults:{prevent_default:!1,prevent_mouseevents:!1},handler:function(a,c){c.options.prevent_mouseevents&&a.pointerType==b.POINTER_MOUSE?a.stopDetect():(c.options.prevent_default&&a.preventDefault(),a.eventType==b.EVENT_START&&c.trigger(this.name,a))}};b.gestures.Transform={name:"transform",index:45, -defaults:{transform_min_scale:0,transform_min_rotation:360,transform_always_block:!1},triggered:!1,handler:function(a,c){if(b.detection.current.name!=this.name&&this.triggered)c.trigger(this.name+"end",a),this.triggered=!1;else if(!(2>a.touches.length))switch(c.options.transform_always_block&&a.preventDefault(),a.eventType){case b.EVENT_START:this.triggered=!1;this.twofingertap=!0;break;case b.EVENT_MOVE:var d=Math.abs(1-a.scale),e=Math.abs(a.rotation);if(dc.options.transform_min_rotation&&c.trigger("rotate",a);d>c.options.transform_min_scale&&(c.trigger("pinch",a),c.trigger("pinch"+(1>a.scale?"in":"out"),a));break;case b.EVENT_END:this.triggered&&c.trigger(this.name+"end",a),this.twofingertap&&c.trigger("taptwo",a),this.triggered=!1}}};"function"==typeof define&&define.amd?define(function(){return b}): -"object"===typeof module&&module.exports?module.exports=b:i.Hammer=b})(window); -(function(l,r,t){function ca(e,d,a){var c=e.runtimeStyle&&e.runtimeStyle[d],b,f=e.style;if(!/^-?[0-9]+\.?[0-9]*(?:px)?$/i.test(a)&&/^-?\d/.test(a)&&(b=f.left,c&&(e.runtimeStyle.left=e.currentStyle.left),f.left="fontSize"===d?"1em":a||0,a=f.pixelLeft+"px",f.left=b,c))e.runtimeStyle.left=c;return!/^(thin|medium|thick)$/i.test(a)?Math.round(parseFloat(a))+"px":a}function qa(e){return parseInt(e,10)}function ea(e,d,a,c,b,f){var d=g.Util.getCSS(d,e,b),y;1===d.length&&(b=d[0],d=[],d[0]=b,d[1]=b);-1!==d[0].toString().indexOf("%")? -(y=parseFloat(d[0])/100,b=a.width*y,"backgroundSize"!==e&&(b-=(f||c).width*y)):b="backgroundSize"===e?"auto"===d[0]?c.width:/contain|cover/.test(d[0])?g.Util.resizeBounds(c.width,c.height,a.width,a.height,d[0]).width:parseInt(d[0],10):parseInt(d[0],10);"auto"===d[1]?a=b/c.width*c.height:-1!==d[1].toString().indexOf("%")?(y=parseFloat(d[1])/100,a=a.height*y,"backgroundSize"!==e&&(a-=(f||c).height*y)):a=parseInt(d[1],10);return[b,a]}var g={},da;g.Util={};g.Util.log=function(e){g.logging&&(l.console&& -l.console.log)&&l.console.log(e)};var oa=String.prototype.trim;g.Util.trimText=function(e){return oa?oa.apply(e):((e||"")+"").replace(/^\s+|\s+$/g,"")};g.Util.asFloat=function(e){return parseFloat(e)};var ra=/((rgba|rgb)\([^\)]+\)(\s-?\d+px){0,})/g,sa=/(-?\d+px)|(#.+)|(rgb\(.+\))|(rgba\(.+\))/g;g.Util.parseTextShadows=function(e){if(!e||"none"===e)return[];for(var e=e.match(ra),d=[],a=0;e&&a=e.length&&(e[1]=e[0]),e.map(qa)):c};g.Util.resizeBounds=function(e,d,a,c,b){e/=d;!b||"auto"===b?(b=a,a=c):a/c=e||4E3<=e)return e;for(b=0;b=a[b];)e-=a[b],c+=d[b];return c};g.Parse=function(e,d){function a(a,c){var b=parseInt(n(a,c),10);return isNaN(b)? -0:b}function c(a,c,b,e,d,f){"transparent"!==f&&(a.setVariable("fillStyle",f),a.fillRect(c,b,e,d))}function b(a,c,b){if(0I;e&&e.zIndex.children.push(v);!0===d.useOverflow&&(!0===/(hidden|scroll|auto)/.test(n(b,"overflow"))&&!1===/(BODY)/i.test(b.nodeName))&&(v.clip=v.clip? -U(v.clip,i):i);var j=v.borders,R=v.ctx,e=v.clip;p={left:i.left+j[3].width,top:i.top+j[0].width,width:i.width-(j[1].width+j[3].width),height:i.height-(j[0].width+j[2].width)};e&&(p=U(p,e));e=p;M=i.left;I=i.top;var N=i.width,S=i.height,W,B,A,G,H,O,o;o=["TopLeft","TopRight","BottomRight","BottomLeft"].map(function(a){return n(b,"border"+a+"Radius")});var T=i.left,F=i.top;r=i.width;Q=i.height;s=o[0][0];l=o[0][1];q=o[1][0];t=o[1][1];A=o[2][0];G=o[2][1];K=o[3][0];W=o[3][1];var E=r-q;H=Q-G;var ja=r-A;B= -Q-W;p=X(T,F,s,l).topLeft.subdivide(0.5);s=X(T+j[3].width,F+j[0].width,Math.max(0,s-j[3].width),Math.max(0,l-j[0].width)).topLeft.subdivide(0.5);l=X(T+E,F,q,t).topRight.subdivide(0.5);q=X(T+Math.min(E,r+j[3].width),F+j[0].width,E>r+j[3].width?0:q-j[3].width,t-j[0].width).topRight.subdivide(0.5);t=X(T+ja,F+H,A,G).bottomRight.subdivide(0.5);r=X(T+Math.min(ja,r+j[3].width),F+Math.min(H,Q+j[0].width),Math.max(0,A-j[1].width),Math.max(0,G-j[2].width)).bottomRight.subdivide(0.5);Q=X(T,F+B,K,W).bottomLeft.subdivide(0.5); -K=X(T+j[3].width,F+B,Math.max(0,K-j[3].width),Math.max(0,W-j[2].width)).bottomLeft.subdivide(0.5);F=[];switch(n(b,"backgroundClip")){case "content-box":case "padding-box":m(F,o[0],o[1],s,q,i.left+j[3].width,i.top+j[0].width);m(F,o[1],o[2],q,r,i.left+i.width-j[1].width,i.top+j[0].width);m(F,o[2],o[3],r,K,i.left+i.width-j[1].width,i.top+i.height-j[2].width);m(F,o[3],o[0],K,s,i.left+j[3].width,i.top+i.height-j[2].width);break;default:m(F,o[0],o[1],p,l,i.left,i.top),m(F,o[1],o[2],l,t,i.left+i.width,i.top), -m(F,o[2],o[3],t,Q,i.left+i.width,i.top+i.height),m(F,o[3],o[0],Q,p,i.left,i.top+i.height)}T=[];for(W=0;4>W;W++)if(0:"+b.getAttribute("src"));break;case "INPUT":/^(text|url|email|submit|button|reset)$/.test(b.type)&&0<(b.value||b.placeholder||"").length&&Y(b,i,v);break;case "TEXTAREA":0<(b.value||b.placeholder||"").length&&Y(b,i,v);break;case "SELECT":0< -(b.options||b.placeholder||"").length&&Y(b,i,v);break;case "LI":var P;D=v.ctx;f=n(b,"listStyleType");if(/^(decimal|decimal-leading-zero|upper-alpha|upper-latin|upper-roman|lower-alpha|lower-greek|lower-latin|lower-roman)$/i.test(f)){i=-1;k=1;j=b.parentNode.childNodes;if(b.parentNode){for(;j[++i]!==b;)1===j[i].nodeType&&k++;i=k}else i=-1;switch(f){case "decimal":P=i;break;case "decimal-leading-zero":P=1===i.toString().length?"0"+i.toString():i.toString();break;case "upper-roman":P=g.Generate.ListRoman(i); -break;case "lower-roman":P=g.Generate.ListRoman(i).toLowerCase();break;case "lower-alpha":P=g.Generate.ListAlpha(i).toLowerCase();break;case "upper-alpha":P=g.Generate.ListAlpha(i)}P+=". ";i=z.createElement("boundelement");i.style.display="inline";k=b.style.listStyleType;b.style.listStyleType="none";i.appendChild(z.createTextNode(P));b.insertBefore(i,b.firstChild);f=x.Bounds(i);b.removeChild(i);b.style.listStyleType=k;y(D,b,"none",n(b,"color"));"inside"===n(b,"listStylePosition")&&(D.setVariable("textAlign", -"left"),i=e.left,f=f.bottom,null!==P&&0= -h.numTotal&&(u.log("Finished loading images: # "+h.numTotal+" (failed: "+h.numFailed+")"),"function"===typeof e.complete&&e.complete(h))}function a(a,b,c){var f,g=e.proxy,m;J.href=a;a=J.href;f="html2canvas_"+D++;c.callbackname=f;g=-1a.node.zIndex.opacity? -g.push(a):a.node.zIndex.isFloated?e.push(a):d.push(a)});(function Y(a){a.forEach(function(a){k.push(a);a.children&&Y(a.children)})})(d.concat(e,g));k.forEach(function(a){a.context?b(a.context):f.push(a.node)})})},f=[],y=function(a,b,c){var d="auto"===b.zIndex.zindex?0:Number(b.zIndex.zindex),e=a,f=b.zIndex.isPositioned,g=b.zIndex.isFloated,k={node:b},l=c;if(b.zIndex.ownStacking)e=k.context={"!":[{node:b,children:[]}]},l=t;else if(f||g)l=k.children=[];0===d&&c?c.push(k):(a[d]||(a[d]=[]),a[d].push(k)); -b.zIndex.children.forEach(function(a){y(e,a,l)})},k={};y(k,e.stack);b(k);return a(e,d,c,f,g)};g.Util.Support=function(e,d){function a(){var a=new Image,b=d.createElement("canvas"),c=b.getContext===t?!1:b.getContext("2d");if(!1===c)return!1;b.width=b.height=10;a.src="data:image/svg+xml,
sup
";try{c.drawImage(a, -0,0),b.toDataURL()}catch(e){return!1}g.Util.log("html2canvas: Parse: SVG powered rendering available");return!0}var c,b,f=!1;d.createRange&&(c=d.createRange(),c.getBoundingClientRect&&(b=d.createElement("boundtest"),b.style.height="123px",b.style.display="block",d.body.appendChild(b),c.selectNode(b),c=c.getBoundingClientRect(),c=c.height,123===c&&(f=!0),d.body.removeChild(b)));return{rangeBounds:f,svgRendering:e.svgRendering&&a()}};l.html2canvas=function(e,d){var e=e.length?e:[e],a,c,b={logging:!1, -elements:e,background:"#fff",proxy:null,timeout:0,useCORS:!1,allowTaint:!1,svgRendering:!1,ignoreElements:"IFRAME|OBJECT|PARAM",useOverflow:!0,letterRendering:!1,chinese:!1,width:null,height:null,taintTest:!0,renderer:"Canvas"},b=g.Util.Extend(d,b);g.logging=b.logging;b.complete=function(d){if(!("function"===typeof b.onpreloaded&&!1===b.onpreloaded(d))&&(a=g.Parse(d,b),!("function"===typeof b.onparsed&&!1===b.onparsed(a))&&(c=g.Renderer(a,b),"function"===typeof b.onrendered)))b.onrendered(c)};l.setTimeout(function(){g.Preload(b)}, -0);return{render:function(a,c){return g.Renderer(a,g.Util.Extend(c,b))},parse:function(a,c){return g.Parse(a,g.Util.Extend(c,b))},preload:function(a){return g.Preload(g.Util.Extend(a,b))},log:g.Util.log}};l.html2canvas.log=g.Util.log;l.html2canvas.Renderer={Canvas:t};g.Renderer.Canvas=function(e){var e=e||{},d=r,a=[],c=r.createElement("canvas"),b=c.getContext("2d"),f=g.Util,l=e.canvas||d.createElement("canvas");return function(g,h,r,u,q){var m=l.getContext("2d"),D,E=g.stack;l.width=l.style.width= -h.width||E.ctx.width;l.height=l.style.height=h.height||E.ctx.height;D=m.fillStyle;m.fillStyle=f.isTransparent(E.backgroundColor)&&h.background!==t?h.background:g.backgroundColor;m.fillRect(0,0,l.width,l.height);m.fillStyle=D;u.forEach(function(g){m.textBaseline="bottom";m.save();g.transform.matrix&&(m.translate(g.transform.origin[0],g.transform.origin[1]),m.transform.apply(m,g.transform.matrix),m.translate(-g.transform.origin[0],-g.transform.origin[1]));g.clip&&(m.beginPath(),m.rect(g.clip.left,g.clip.top, -g.clip.width,g.clip.height),m.clip());g.ctx.storage&&g.ctx.storage.forEach(function(g){var h=m;switch(g.type){case "variable":h[g.name]=g.arguments;break;case "function":switch(g.name){case "createPattern":if(g.arguments[0].width>0&&g.arguments[0].height>0)try{h.fillStyle=h.createPattern(g.arguments[0],"repeat")}catch(l){f.log("html2canvas: Renderer: Error creating pattern",l.message)}break;case "drawShape":g=g.arguments;h.beginPath();g.forEach(function(a){h[a.name].apply(h,a.arguments)});h.closePath(); -break;case "drawImage":if(g.arguments[8]>0&&g.arguments[7]>0){var k;if(!(k=!e.taintTest))if(k=e.taintTest)a:{if(a.indexOf(g.arguments[0].src)===-1){b.drawImage(g.arguments[0],0,0);try{b.getImageData(0,0,1,1)}catch(q){c=d.createElement("canvas");b=c.getContext("2d");k=false;break a}a.push(g.arguments[0].src)}k=true}k&&h.drawImage.apply(h,g.arguments)}break;default:h[g.name].apply(h,g.arguments)}}});m.restore()});f.log("html2canvas: Renderer: Canvas renderer done - returning canvas obj");return 1=== -h.elements.length&&"object"===typeof h.elements[0]&&"BODY"!==h.elements[0].nodeName?(g=q.Util.Bounds(h.elements[0]),r=r.createElement("canvas"),r.width=Math.ceil(g.width),r.height=Math.ceil(g.height),m=r.getContext("2d"),m.drawImage(l,g.left,g.top,g.width,g.height,0,0,g.width,g.height),l=null,r):l}}})(window,document); -cp.rtInherits=function(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.baseConstructor=b;a.superClass=b.prototype};cp.HexToRGBA=function(a,b){if(void 0==a)return a;var c=a;"#"==c.charAt(0)&&(c=c.substring(1));if(6>c.length)return a;var d=parseInt(c.substring(0,2),16),e=parseInt(c.substring(2,4),16),c=parseInt(c.substring(4,6),16);return"rgba("+d+","+e+","+c+","+b+")"}; -cp.RuntimeDialogSeparator=function(a,b,c){this.m_parent=a;this.m_XPos=b;this.m_YPos=c;this.m_color="#000000";this.m_alpha=0.5;this.m_size=10;this.m_strokeWidth=2;this.m_shadowColor="#FFFFFF";this.m_shadowAlpha=0.65;this.m_shadowAngle=270;this.m_shadowBlur=2;this.m_shadowDistance=1}; -cp.RuntimeDialogSeparator.prototype={setColor:function(a){this.m_color=a},setAlpha:function(a){this.m_alpha=a},setSize:function(a){this.m_size=a},setShadowColor:function(a){this.m_shadowColor=a},getComponentDiv:function(){var a=document.createElement("div");a.style.height=this.m_strokeWidth+"px";a.style.backgroundColor=this.m_color;a.style.opacity=this.m_alpha;a.style.position="relative";a.style.marginLeft=this.m_XPos+"px";a.style.marginRight=this.m_XPos+"px";a.style.top=this.m_YPos+"px";"webkitBoxShadow"in -a.style?a.style.webkitBoxShadow=this.m_shadowDistance+"px "+this.m_shadowDistance+"px "+this.m_shadowBlur+"px "+this.m_shadowColor:"MozBoxShadow"in a.style?a.style.MozBoxShadow=this.m_shadowDistance+"px "+this.m_shadowDistance+"px "+this.m_shadowBlur+"px "+this.m_shadowColor:a.style.boxShadow=this.m_shadowDistance+"px "+this.m_shadowDistance+"px "+this.m_shadowBlur+"px "+this.m_shadowColor;return a}}; -cp.RuntimeDialogText=function(a,b,c){this.m_parent=a;this.m_fontName="Myriad Pro";this.m_XPos=b;this.m_YPos=c;this.m_fontSize=14;this.m_fontColor="#ff0000";this.m_text="Sample Text";this.m_multiline=!1;this.m_maxWidth="400px";this.m_maxHeight="80px";this.m_shadowColor="#FFFFFF";this.m_shadowAlpha=0.35;this.m_shadowAngle=270;this.m_shadowBlur=2;this.m_shadowDistance=1}; -cp.RuntimeDialogText.prototype={setFontName:function(a){this.m_fontName=a},setFontSize:function(a){this.m_fontSize=a},setFontColor:function(a){this.m_fontColor=a},setText:function(a){this.m_text=a},setMultiline:function(a){this.m_multiline=a},setMaxWidth:function(a){this.m_maxWidth=a},setShadowColor:function(a){this.m_shadowColor=a},getTruncatedText:function(a){if(void 0==a)return this.m_text;var b=this.getMaxPossibleWidth(this.m_text);if(b<=a)return this.m_text;for(var c=this.m_text,d=c+"...",b= -this.getMaxPossibleWidth(d);0a;)c=c.substring(0,c.length-1),d=c+"...",b=this.getMaxPossibleWidth(d);return d},getMaxPossibleWidth:function(a){var b=document.createElement("div");b.style.color=this.m_fontColor;b.style.fontFamily=this.m_fontName;b.style.fontSize=this.m_fontSize+"px";b.style.width="auto";b.style.height="auto";b.style.position="absolute";b.style.visibilty="hidden";b.innerHTML=a;document.body.appendChild(b);a=b.clientWidth+4;document.body.removeChild(b);return a},getComponentDiv:function(){var a= -document.createElement("div");a.style.color=this.m_fontColor;a.style.fontFamily=this.m_fontName;a.style.fontSize=this.m_fontSize+"px";a.style.textAlign="left";a.style.left=this.m_XPos;a.style.top=this.m_YPos;a.style.position="relative";a.style.opacity=1;var b=cp.HexToRGBA(this.m_shadowColor,this.m_shadowAlpha);a.style.textShadow=this.m_shadowDistance+"px "+this.m_shadowDistance+"px "+this.m_shadowBlur+"px "+b;a.innerHTML=this.m_text;return a}}; -cp.RuntimeDialogTextInput=function(a,b,c){this.m_parent=a;this.m_fontName="Myriad Pro";this.m_XPos=b;this.m_YPos=c;this.m_fontSize=14;this.m_fontColor="#ff0000";this.m_maxWidth=400;this.m_maxHeight=80;this.m_label="Text Input :";this.m_textInput=void 0}; -cp.RuntimeDialogTextInput.prototype={setFontName:function(a){this.m_fontName=a},setFontSize:function(a){this.m_fontSize=a},setFontColor:function(a){this.m_fontColor=a},setText:function(a){this.m_text=a},setLabel:function(a){this.m_label=a},setMaxWidth:function(a){this.m_maxWidth=a},getValue:function(){return this.m_textInput.value},getComponentDiv:function(){var a=document.createElement("div");a.style.left=this.m_XPos+"px";a.style.top=this.m_YPos+"px";a.style.width=this.m_maxWidth+"px";var b=document.createElement("table"); -b.style.width="100%";b.style.height="100%";a.appendChild(b);var c=document.createElement("tr");c.style.width="100%";c.style.height="50%";b.appendChild(c);var d=document.createElement("td");d.style.width="100%";d.style.height="100%";d.style.paddingBottom="0em";c.appendChild(d);c=new cp.RuntimeDialogText(d,this.MESSAGE_DEFAULT_LEFT_OFFSET+"px","0px");c.setText(this.m_label);c.setFontColor(this.m_fontColor);c.setFontName(this.m_fontName);c.setFontSize(14);c.setMultiline(!0);c=c.getComponentDiv();c.style.width= -"100%";d.appendChild(c);d=document.createElement("tr");d.style.width="100%";d.style.height="50%";b.appendChild(d);b=document.createElement("td");b.style.width="100%";b.style.height="100%";d.appendChild(b);d=document.createElement("input");d.type="text";d.value=this.m_text;d.style.color="#000000";d.style.fontFamily=this.m_fontName;d.style.fontSize=this.m_fontSize+"px";d.style.width="100%";d.style.opacity=1;this.m_textInput=d;b.appendChild(d);a.style.position="relative";return a}}; -cp.RuntimeDialogPanel=function(a,b,c,d,e){this.m_parent=a;this.m_fillColor="#CCCCCC";this.m_alpha=0.5;this.m_strokeColor="#666666";this.m_XPos=b;this.m_YPos=c;this.m_strokeWidth=1;this.m_width=d;this.m_height=e;this.m_roundness=20;this.m_minHeight=this.m_minWidth=100;this.m_maxWidth=493;this.m_maxHeight=219;this.m_showShadow=!1;this.m_shadowColor="#000000";this.m_shadowAlpha=0.65;this.m_shadowAngle=270;this.m_shadowDistance=this.m_shadowBlur=2}; -cp.RuntimeDialogPanel.prototype={setFillColor:function(a){this.m_fillColor=a},setAlpha:function(a){this.m_alpha=a},setStrokeColor:function(a){this.m_strokeColor=a},setStrokeWidth:function(a){this.m_strokeWidth=a},setWidth:function(a){this.m_width=a},getWidth:function(){var a=this.m_width;athis.m_maxWidth&&(a=this.m_maxWidth);return a},setHeight:function(a){this.m_height=a},setMinWidth:function(a){athis.m_minWidth&&(this.m_maxWidth=a)},setMaxHeight:function(a){a>this.m_minHeight&&(this.m_maxHeight=a)},setRoundness:function(a){this.m_roundness=a},showShadow:function(a){this.m_showShadow=a},setShadowColor:function(a){this.m_shadowColor=a},getComponentDiv:function(){var a=this.m_width,b=this.m_height,c=document.createElement("div");c.style.width=a;c.style.height=b;c.style.background=cp.HexToRGBA(this.m_fillColor,this.m_alpha);c.style.border= -this.m_strokeWidth+"px solid "+this.m_strokeColor;c.style.borderRadius=this.m_roundness+"px";c.style.left=this.m_XPos+"px";c.style.top=this.m_YPos+"px";this.m_showShadow&&("webkitBoxShadow"in c.style?c.style.webkitBoxShadow=this.m_shadowDistance+"px "+this.m_shadowDistance+"px "+this.m_shadowBlur+"px "+this.m_shadowColor:"MozBoxShadow"in c.style?c.style.MozBoxShadow=this.m_shadowDistance+"px "+this.m_shadowDistance+"px "+this.m_shadowBlur+"px "+this.m_shadowColor:c.style.boxShadow=this.m_shadowDistance+ -"px "+this.m_shadowDistance+"px "+this.m_shadowBlur+"px "+this.m_shadowColor);return c}}; -cp.RuntimeDialogButton=function(a,b,c,d,e){cp.RuntimeDialogButton.baseConstructor.call(this,a,b,c,d,e);this.m_label=void 0;this.m_labelText="OK";this.m_labelFontName="Myriad Pro";this.m_labelFontSize=16;this.m_labelFontColor="#000000";this.m_labelShadowColor="#FFFFFF";this.BUTTON_LABEL_TOP_PADDING=this.BUTTON_LABEL_LEFT_PADDING=5;this.m_fillColor="#CDCDCD";this.m_alpha=0.3;this.m_strokeColor="#000000";this.m_strokeWidth=1;this.m_maxWidth=230;this.m_minWidth=40;this.m_minHeight=m_maxHeight=25;this.m_roundness= -10};cp.rtInherits(cp.RuntimeDialogButton,cp.RuntimeDialogPanel);cp.RuntimeDialogButton.prototype.setButtonLabel=function(a){this.m_labelText=a};cp.RuntimeDialogButton.prototype.setButtonLabelFontName=function(a){this.m_labelFontName=a};cp.RuntimeDialogButton.prototype.setButtonLabelFontSize=function(a){this.m_labelFontSize=a};cp.RuntimeDialogButton.prototype.setButtonLabelFontColor=function(a){this.m_labelFontColor=a}; -cp.RuntimeDialogButton.prototype.setButtonLabelShadowColor=function(a){this.m_labelShadowColor=a};cp.RuntimeDialogButton.prototype.setHandler=function(a){this.m_handler=a}; -cp.RuntimeDialogButton.prototype.getComponentDiv=function(a){var b=cp.RuntimeDialogButton.superClass.getComponentDiv.call(this);b.id=a;b.style.position="absolute";b.style.cursor="pointer";var c=this.m_fillColor,d=this.m_alpha;b.onmouseover=function(){b.style.background=cp.HexToRGBA(c,0.1)};b.onmouseout=function(){b.style.background=cp.HexToRGBA(c,d)};cp.registerGestureEvent(b,cp.GESTURE_EVENT_TYPES.TAP,this.m_handler);b.onkeypress=this.m_handler;a=new cp.RuntimeDialogText(b,"0px","5px");a.setText(this.m_labelText); -a.setFontName(this.m_labelFontName);a.setFontColor(this.m_labelFontColor);a.setFontSize(this.m_labelFontSize);a.setShadowColor(this.m_labelShadowColor);a.setMaxWidth(this.m_maxWidth-2*this.BUTTON_LABEL_LEFT_PADDING);var e=a.getComponentDiv();e.style.textAlign="center";e.style.top="0px";var f=a.getMaxPossibleWidth(this.m_labelText);f>this.m_width&&(f>this.m_maxWidth&&(f=this.m_maxWidth,e.innerHTML=a.getTruncatedText(this.m_maxWidth)),b.style.width=f+"px");b.appendChild(e);b.style.display="flex";b.style.alignItems= -"center";b.style.justifyContent="center";return b}; -cp.RuntimeMessageBox=function(a,b,c,d,e,f,g,h,i,j){this.m_parent=a;this.m_MessageBoxElement=void 0;this.m_id="CPRuntimeMsgBox_ID";this.m_titleText="Adobe Captivate";this.m_messageText="This is Adobe Captivate Run Time Message Dialog";this.m_firstButtonText="OK";this.m_secondButtonText="CANCEL";this.m_ChkBoxText="Don't ask me again";this.m_numberOfButtons=b;this.m_secondButtonHandler=this.m_firstButtonHandler=void 0;this.m_DontAskMe=!1;this.m_foregroundFillColor=c;this.m_foregroundStrokeColor=d;this.m_buttonFillColor= -e;this.m_buttonStrokeColor=f;this.m_separatorColor=g;this.m_textColor=h;this.m_textShadowColor=i;this.m_textFontName=j;this.TITLE_DEFAULT_TOP_OFFSET=this.MESSAGE_DEFAULT_LEFT_OFFSET=this.SEPARATOR_DEFAULT_LEFT_OFFSET=this.TITLE_DEFAULT_LEFT_OFFSET=10;this.SEPARATOR_DEFAULT_TOP_OFFSET=20;this.MESSAGE_DEFAULT_TOP_OFFSET=30;this.BUTTON_BOTTOM_OFFSET=10;this.BG_DEFAULT_WIDTH=493;this.BG_DEFAULT_HEIGHT=219;this.FG_DEFAULT_WIDTH=478;this.FG_DEFAULT_HEIGHT=198;this.BUTTON_DEFAULT_WIDTH=100;this.BUTTON_DEFAULT_HEIGHT= -33;this.INTER_BUTTON_OFFSET=15}; -cp.RuntimeMessageBox.prototype={getDontAskMeInput:function(){if(this.m_DontAskMe){var a=document.getElementById("dont_ask_me_chk");if(a)return a.checked}return!1},setDontAskMe:function(a){this.m_DontAskMe=a},setDontAskMeText:function(a){this.m_ChkBoxText=a},setTitleText:function(a){this.m_titleText=a},setCheckBoxText:function(a){this.m_ChkBoxText=a},setMessageText:function(a){this.m_messageText=a},setFirstButtonText:function(a){this.m_firstButtonText=a},setSecondButtonText:function(a){this.m_secondButtonText=a}, -registerFirstButtonHandler:function(a){void 0!=a&&(this.m_firstButtonHandler=a)},registerSecondButtonHandler:function(a){void 0!=a&&(this.m_secondButtonHandler=a)},isVisible:function(){var a=!1;void 0!=this.m_MessageBoxElement&&"visible"==this.m_MessageBoxElement.style.visibility&&(a=!0);return a},hide:function(a){if(cp.IDEVICE==cp.device||cp.device==cp.ANDROID){var b=document.getElementById("cpRTMBFirstBtn");b&&cp.clearGestureCache(b);(b=document.getElementById("cpRTMBSecondBtn"))&&cp.clearGestureCache(b)}var b= -this.m_parent?this.m_parent:document.getElementById("cpDocument"),c=document.getElementById("CPRuntimeMsgBox_ID");void 0!=c&&b.removeChild(c);void 0!=a&&void 0!=a.currentTarget&&(cp.IDEVICE==cp.device||cp.device==cp.ANDROID)&&cp.clearGestureCache(a.currentTarget);cp.isRTDialogShown=!1},show:function(){this.hide();this.m_MessageBoxElement=document.createElement("div");this.m_MessageBoxElement.id=this.m_id;var a=new cp.RuntimeDialogPanel(this.m_parent,0,0,"50%","35%");a.showShadow(!0);var b=a.getComponentDiv(); -b.id="bgPanelDiv";b.style.margin="5% auto";b.style.display="flex";b.style.alignItems="center";this.m_MessageBoxElement.appendChild(b);a=new cp.RuntimeDialogPanel(b,(this.BG_DEFAULT_WIDTH-this.FG_DEFAULT_WIDTH)/2,(this.BG_DEFAULT_HEIGHT-this.FG_DEFAULT_HEIGHT)/2,"97%","90%");a.setFillColor(this.m_foregroundFillColor);a.setAlpha(1);a.setStrokeColor(this.m_foregroundStrokeColor);a=a.getComponentDiv();b.id="fgPanelDiv";b.className="RuntimeDialogfgPanelDiv";a.style.position="relative";a.style.left="0px"; -a.style.top="0px";a.style.margin="2%";a.style.width="100%";b.appendChild(a);b=new cp.RuntimeDialogText(a,this.TITLE_DEFAULT_LEFT_OFFSET+"px",this.TITLE_DEFAULT_TOP_OFFSET+"px");b.setText(this.m_titleText);b.setFontSize(18);b.setFontColor(this.m_textColor);b.setFontName(this.m_textFontName);b.setShadowColor(this.m_textShadowColor);b=b.getComponentDiv();a.appendChild(b);b=new cp.RuntimeDialogSeparator(a,this.SEPARATOR_DEFAULT_LEFT_OFFSET,this.SEPARATOR_DEFAULT_TOP_OFFSET);b.setColor(this.m_separatorColor); -b=b.getComponentDiv();a.appendChild(b);b=new cp.RuntimeDialogText(a,this.MESSAGE_DEFAULT_LEFT_OFFSET+"px",this.MESSAGE_DEFAULT_TOP_OFFSET+"px");b.setText(this.m_messageText);b.setFontColor(this.m_textColor);b.setFontName(this.m_textFontName);b.setShadowColor(this.m_textShadowColor);b.setFontSize(14);b.setMultiline(!0);b=b.getComponentDiv();a.appendChild(b);if(this.m_DontAskMe){b=document.createElement("div");b.className="RuntimeDialogCheckBoxAndTextHolder";a.appendChild(b);var c=new cp.RuntimeDialogText(a, -this.MESSAGE_DEFAULT_LEFT_OFFSET+"px",this.MESSAGE_DEFAULT_TOP_OFFSET+"px");c.setText(this.m_ChkBoxText);c.setFontColor(this.m_textColor);c.setFontName(this.m_textFontName);c.setShadowColor(this.m_textShadowColor);c.setFontSize(14);c.setMultiline(!1);var c=c.getComponentDiv(),d=document.createElement("input");d.id="dont_ask_me_chk";d.type="checkbox";d.style.cssText="-webkit-appearance: checkbox;left:10px; bottom: 70px;width:20px; height:20px;";b.appendChild(d);b.appendChild(c);c.style.position="unset"; -c.style.top="";c.style.bottom="75px";c.style.left="40px";if(cp.IDEVICE==cp.device||cp.device==cp.ANDROID)b=function(a){a.preventDefault&&a.preventDefault();a.stopPropagation&&a.stopPropagation();d.checked=!d.checked},cp.registerGestureEvent(d,cp.GESTURE_EVENT_TYPES.TAP,b),cp.registerGestureEvent(c,cp.GESTURE_EVENT_TYPES.TAP,b)}b=document.createElement("div");b.className="RuntimeDialogButtonsHolder";a.appendChild(b);c=new cp.RuntimeDialogButton(a,0,0,"20%",this.BUTTON_DEFAULT_HEIGHT+"px");c.setFillColor(this.m_buttonFillColor); -c.setStrokeColor(this.m_buttonStrokeColor);c.setButtonLabel(this.m_firstButtonText);c.setButtonLabelFontSize(16);c.setButtonLabelFontColor(this.m_textColor);c.setButtonLabelFontName(this.m_textFontName);c.setButtonLabelShadowColor(this.m_textShadowColor);c.setHandler(this.m_firstButtonHandler);c=c.getComponentDiv("cpRTMBFirstBtn");c.className="cpRTMBFirstBtn";c.style.top="auto";c.tabIndex=0;c.style.left="40%";c.style.bottom=this.BUTTON_BOTTOM_OFFSET+"px";b.appendChild(c);c=void 0;2==this.m_numberOfButtons&& -(lSecondButton=new cp.RuntimeDialogButton(a,0,0,"20%",this.BUTTON_DEFAULT_HEIGHT+"px"),lSecondButton.setFillColor(this.m_buttonFillColor),lSecondButton.setStrokeColor(this.m_buttonStrokeColor),lSecondButton.setButtonLabel(this.m_secondButtonText),lSecondButton.setButtonLabelFontSize(16),lSecondButton.setButtonLabelFontColor(this.m_textColor),lSecondButton.setButtonLabelFontName(this.m_textFontName),lSecondButton.setButtonLabelShadowColor(this.m_textShadowColor),lSecondButton.setHandler(this.m_secondButtonHandler), -c=lSecondButton.getComponentDiv("cpRTMBSecondBtn"),c.className="cpRTMBSecondBtn",c.tabIndex=0,c.style.top="auto",c.style.bottom=this.BUTTON_BOTTOM_OFFSET+"px",c.style.left="70%",b.appendChild(c));this.m_parent.appendChild(this.m_MessageBoxElement);this.m_MessageBoxElement.style.visibility="visible";this.m_MessageBoxElement.style.position="absolute";this.m_MessageBoxElement.style.left="0px";this.m_MessageBoxElement.style.top="0px";this.m_MessageBoxElement.style.width="100%";this.m_MessageBoxElement.style.height= -"100%";this.m_MessageBoxElement.style.textAlign="center";this.m_MessageBoxElement.style.zIndex="1000";this.m_MessageBoxElement.style.background="rgba(240,240,240,0.2)";this.m_MessageBoxElement.style.zIndex=10020;cp.isRTDialogShown=!0;setTimeout(function(){var a=document.getElementById("dont_ask_me_chk");a&&a.focus()},500)},close:function(){var a=document.getElementById("cpDocument"),b=document.getElementById("CPRuntimeMsgBox_ID");a.removeChild(b)}}; -cp.RuntimeMessageBoxDefault=function(a,b){var c=cp.D.rtDialog;cp.RuntimeMessageBoxDefault.baseConstructor.call(this,a,b,c.rtbgfc,c.rtbgsc,c.rtbtnfc,c.rtbtnsc,c.rtsc,c.rttc,c.rttsc,c.rtfn)};cp.rtInherits(cp.RuntimeMessageBoxDefault,cp.RuntimeMessageBox);cp.PostResultsMessageBox=function(a){this.m_StudentNameTextInputLabel="";this.m_StringsMap=a;a=document.getElementById("div_Slide");cp.PostResultsMessageBox.baseConstructor.call(this,a,2)};cp.rtInherits(cp.PostResultsMessageBox,cp.RuntimeMessageBoxDefault); -cp.PostResultsMessageBox.prototype.getLearnerName=function(){return this.m_studentNameTextInput.getValue()};cp.PostResultsMessageBox.prototype.getLearnerID=function(){return this.m_studentIDTextInput.getValue()};cp.PostResultsMessageBox.prototype.hide=function(){var a=document.getElementById("CPRuntimeMsgBox_ID");void 0!=a&&this.m_parent.removeChild(a)}; -cp.PostResultsMessageBox.prototype.show=function(){this.setTitleText(this.m_StringsMap.ISRPostResultStr);this.setMessageText(this.m_StringsMap.ISRResultCalculatedStr);this.m_numberOfButtons=2;this.setFirstButtonText("Cancel");this.setSecondButtonText(this.m_StringsMap.ISRSendStr);this.hide();this.m_MessageBoxElement=document.createElement("div");this.m_MessageBoxElement.id=this.m_id;var a=new cp.RuntimeDialogPanel(this.m_parent,0,0,"80%","60%");a.showShadow(!0);var b=a.getComponentDiv();b.id="bgPanelDiv"; -b.className="PostMessageDialogBgPanel";b.style.margin="5% auto";this.m_MessageBoxElement.appendChild(b);a=new cp.RuntimeDialogPanel(b,0,0,"100%","100%");a.setFillColor(this.m_foregroundFillColor);a.setAlpha(1);a.setStrokeColor(this.m_foregroundStrokeColor);a=a.getComponentDiv();a.id="fgPanelDiv";a.style.position="relative";b.appendChild(a);b=new cp.RuntimeDialogText(a,"0px","0px");b.setText(this.m_titleText);b.setFontSize(18);b.setFontColor("#ffffff");b.setFontName(this.m_textFontName);b.setShadowColor(this.m_textShadowColor); -b=b.getComponentDiv();b.style.backgroundColor="#000000";b.style.borderTopLeftRadius="20px";b.style.borderTopRightRadius="20px";b.style.textAlign="center";a.appendChild(b);b=new cp.RuntimeDialogText(a,this.MESSAGE_DEFAULT_LEFT_OFFSET+"px","10px");b.setText(this.m_messageText);b.setFontColor(this.m_textColor);b.setFontName(this.m_textFontName);b.setShadowColor(this.m_textShadowColor);b.setFontSize(14);b.setMultiline(!0);b=b.getComponentDiv();b.style.left="20px";b.style.width="90%";b.style.wordWrap= -"break-word";a.appendChild(b);b=document.createElement("div");b.className="PostResultDialogNameIdHolder";a.appendChild(b);var c=new cp.RuntimeDialogTextInput(a,"10px","10px");c.setLabel(this.m_StringsMap.ISREnterNameStr);c.setText("");c.setFontColor(this.m_textColor);c.setFontName(this.m_textFontName);c.setFontSize(14);this.m_studentNameTextInput=c;c=c.getComponentDiv();c.id="studentNameTextInput";c.className="PostResulDialogStudentNameIdInput";c.style.left="4%";c.style.top="10%";b.appendChild(c); -c=new cp.RuntimeDialogTextInput(a,"10px","0px");c.setLabel(this.m_StringsMap.ISREmailIDStr);c.setText("");c.setFontColor(this.m_textColor);c.setFontName(this.m_textFontName);c.setFontSize(14);this.m_studentIDTextInput=c;c=c.getComponentDiv();c.id="studentNameTextInput";c.className="PostResulDialogStudentNameIdInput";c.style.left="4%";c.style.top="10%";b.appendChild(c);b=document.createElement("div");b.className="PostResultDialogButtonsHolder";a.appendChild(b);c=new cp.RuntimeDialogButton(a,0,0,"20%", -this.BUTTON_DEFAULT_HEIGHT+"px");c.setFillColor(this.m_buttonFillColor);c.setStrokeColor(this.m_buttonStrokeColor);c.setButtonLabel(this.m_firstButtonText);c.setButtonLabelFontSize(16);c.setButtonLabelFontColor(this.m_textColor);c.setButtonLabelFontName(this.m_textFontName);c.setButtonLabelShadowColor(this.m_textShadowColor);c.setHandler(this.m_firstButtonHandler);c=c.getComponentDiv("cpPRMBFirstBtn");c.style.top="auto";c.style.bottom=this.BUTTON_BOTTOM_OFFSET+"px";c.style.left="40%";b.appendChild(c); -c=void 0;2==this.m_numberOfButtons&&(lSecondButton=new cp.RuntimeDialogButton(a,0,0,"20%",this.BUTTON_DEFAULT_HEIGHT+"px"),lSecondButton.setFillColor(this.m_buttonFillColor),lSecondButton.setStrokeColor(this.m_buttonStrokeColor),lSecondButton.setButtonLabel(this.m_secondButtonText),lSecondButton.setButtonLabelFontSize(16),lSecondButton.setButtonLabelFontColor(this.m_textColor),lSecondButton.setButtonLabelFontName(this.m_textFontName),lSecondButton.setButtonLabelShadowColor(this.m_textShadowColor), -lSecondButton.setHandler(this.m_secondButtonHandler),c=lSecondButton.getComponentDiv("cpPRMBSecondBtn"),c.style.top="auto",c.style.bottom=this.BUTTON_BOTTOM_OFFSET+"px",c.style.left="70%",b.appendChild(c));this.m_parent.appendChild(this.m_MessageBoxElement);this.m_MessageBoxElement.style.visibility="visible";this.m_MessageBoxElement.style.position="absolute";this.m_MessageBoxElement.style.left="0px";this.m_MessageBoxElement.style.top="0px";this.m_MessageBoxElement.style.width="100%";this.m_MessageBoxElement.style.height= -"100%";this.m_MessageBoxElement.style.textAlign="center";this.m_MessageBoxElement.style.zIndex="1000";this.m_MessageBoxElement.style.background="rgba(240,240,240,0.5)"}; -(function(a){function ja(c){var b=c;(c=a.D[c])&&c.sicbs&&void 0!==c.bstiid&&-1!==c.bstiid&&(b=a.getDisplayObjNameByCP_UID(c.bstiid));return b}function X(a){a.stopPropagation();a.preventDefault()}function ka(a,b){for(var d=a.firstChild;d;d=d.nextSibling)"SPAN"==d.tagName&&("cp-actualText"==d.className||"cp-numbering"==d.className)?b(d):ka(d,b)}a.ropMap={};var D={};a.cpIDMap={};var ha=!1,Y={},ba=!1,qa=null,Z,A={},ca=!1,F=10,S=!1,M=1;a.fontMap=[];a.stateStack=[];"function"!=typeof Object.assign&&Object.defineProperty(Object, -"assign",{value:function(a,b){if(null==a)throw new TypeError("Cannot convert undefined or null to object");for(var d=Object(a),e=1;ec.zIndex?1:a.zIndex=a.responsiveWidths.length)){var b=a.responsiveWidths.length;if(c<=a.responsiveWidths[0])return a.responsiveWidths[0];if(c>=a.responsiveWidths[a.responsiveWidths.length-1])return a.responsiveWidths[a.responsiveWidths.length-1];for(var d=0;d<=b-1;++d)if(c<=a.responsiveWidths[d])return a.responsiveWidths[d]}};a.getResponsiveCSS=function(c){if(c&&a.responsiveWidths&& -!(0>=a.responsiveWidths.length)){if(a.ResponsiveProjWidth)return c[a.ResponsiveProjWidth];var b=a.responsiveWidths.length,d=window.innerWidth;if(d<=a.responsiveWidths[0])return c[a.responsiveWidths[0]];if(d>=a.responsiveWidths[a.responsiveWidths.length-1])return c[a.responsiveWidths[a.responsiveWidths.length-1]];for(var e=0;e<=b-1;++e)if(d<=a.responsiveWidths[e])return c[a.responsiveWidths[e]]}};a.getMaxWHBpt=function(c,b){var d=a("cpTempElemForMaxWidth_123456"),e=a("cpTempInnerElemForMaxWidth_123456"); -d||(d=a.newElem("div"),d.id="cpTempElemForMaxWidth_123456",d.style.display="block",d.style.zIndex="-1",d.tabIndex=-1,document.body.insertBefore(d,document.body.firstChild));d.style.display="block";d.style.position="absolute";d.style.left="0px";d.style.top="0px";d.style.width=b+"px";d.style.height=a.getCurrentSlideResponsiveHeight(b)+"px";e||(e=a.newElem("cpTempInnerElemForMaxWidth_123456"),e.id="cpTempInnerElemForMaxWidth_123456",d.appendChild(e));a.applyResponsiveStyles(e,c);e={w:e.clientWidth,h:e.clientHeight}; -d.style.display="none";return e};a.getAccessibilityString=function(c){if(!c||!c.accstr)return"";var b=c.accstr,d=c.dn;if(void 0==b)return"";c=c.traccstr;"string"!=typeof b&&(b=b[a.ResponsiveProjWidth]);c&&(b+=" "+c);" "==b&&(b=d.substr(0,d.indexOf("_")));return b};a.getAccessibilityLanguage=function(c){if(!c||!c.acclng)return"";c=c.acclng;if(void 0==c)return"";"string"!=typeof c&&(c=c[a.ResponsiveProjWidth]);return c};a.createTempElemAndGetBoundingRect=function(c,b,d,e,f){void 0===e&&(e=!1);void 0=== -f&&(f=a.ReasonForDrawing.kRegularDraw);var g=a.newElem("div");b||(b=a("div_Slide"));b.appendChild(g);a.applyResponsiveStyles(g,c,d,e,void 0,f);c=a.GetBoundingClientRectForElem(g,e);b.removeChild(g);return c};a.createTempTextElem=function(c,b,d){if(""==d||void 0==d)d=b.rpvt[a.ResponsiveProjWidth].vt;b=a("cpTempTextElem_123456");b||(b=a.newElem("div"),b.id="cpTempTextElem_123456",b.style.display="block",b.style.position="absolute",b.style.visibility="hidden",b.style.overflow="hidden",b.style.wordWrap= -"break-word",b.style.whiteSpace="pre-wrap",b.style.lineHeight="90%",b.style.left="-1999px",b.tabIndex="-1",document.body.insertBefore(b,document.body.firstChild));b.style.width=c+"px";b.setAttribute("aria-hidden","true");b.innerHTML=d;a.responsiveType==a.kCPPMEAutoResponsive&&b.firstChild&&(b.firstChild.style.position="");b.offsetHeight=b.offsetHeight;return b};a.createTempTextElemAndGetBoundingRect=function(c,b,d,e){c=a.createTempTextElem(c,b,d,e);e=a.GetBoundingClientRectForElem(c,e);b&&b.type=== -a.kCPOTFillBlankCaption&&(c.innerHTML="");return e};a.getExpectedWindowWidthToFitText=function(a,b,d){var e=d;-1!=a.h.indexOf("%")||-1!=a.h.indexOf("px")?e=-1!=a.w.indexOf("%")?Math.floor(100*b/parseFloat(a.w)):window.innerWidth:-1!=a.h.indexOf("H%")?(a=a.h.split("H%")[0],e=Math.floor(100*d/parseFloat(a))):-1!=a.h.indexOf("auto")&&(parseFloat(a.apr),e=-1!=a.w.indexOf("H%")?Math.floor(100*d/parseFloat(a.h)):-1!=a.w.indexOf("%")?Math.floor(100*b/parseFloat(a.w)):window.innerWidth);return e};a.getInterpolatedFontSize= -function(a,b,d){return window.innerWidth>a.winW?b:b*d/a.expw};a.applyResponsiveStylesWRTItem=function(c,b,d){if(b)for(var e=a.rCSSProps.length,f=0;fj&&(h=-1!=h.indexOf("%")?100*j/d.clientWidth+"%":j+"px")):"height"==a.rCSSProps[f]&&(k=b.rpmm.mh,j=b.rpmm.Mh,g=h,-1!=k.indexOf("%")&&(k=parseFloat(k)*d.clientHeight/100),-1!=j.indexOf("%")&&(j=parseFloat(j)*d.clientHeight/ -100),-1!=g.indexOf("%")&&(g=parseFloat(g)*d.clientHeight/100),k=parseFloat(k),j=parseFloat(j),g=parseFloat(g),!isNaN(k)&&gj&&(h=-1!=h.indexOf("%")?100*j/d.clientHeight+"%":j+"px")));c.style[a.rCSSProps[f]]=h}}};a.resetStyles=function(c){if(c)for(var b=a.rCSSProps.length,d=0;dv&&(p=-1!=p.indexOf("%")?100*v/f+"%":v+"px")):"height"==w&&(y=b.rpmm.mh,v=b.rpmm.Mh,z=p,-1!=y.indexOf("%")&&(y=parseFloat(y)*j/100),-1!=v.indexOf("%")&&(v=parseFloat(v)*j/100), --1!=z.indexOf("%")&&(z=parseFloat(z)*j/100),y=parseFloat(y),v=parseFloat(v),z=parseFloat(z),!isNaN(y)&&zv&&(p=-1!=p.indexOf("%")?100*v/j+"%":v+"px")));c.style[w]=p}else c.style[w]=""}m&&(b.stickyItem?(g=a.GetBoundingClientRectForElem(c,e),c.style.right="auto",c.style.left=A[b.flexParentPlcHldUID].layout.m_rect.m_left+(A[b.flexParentPlcHldUID].layout.m_size.width-g.width)/2+"px"):b.isflexItem||(g=a.GetBoundingClientRectForElem(c,e),c.style.right= -"auto",c.style.left=(f-g.width)/2+"px"));n&&(b.stickyItem?(g=a.GetBoundingClientRectForElem(c,e),c.style.bottom="auto",c.style.top=A[b.flexParentPlcHldUID].layout.m_rect.m_top+(A[b.flexParentPlcHldUID].layout.m_size.height-g.height)/2+"px"):b.isflexItem||(g=a.GetBoundingClientRectForElem(c,e),c.style.bottom="auto",c.style.top=(j-g.height)/2+"px"))}};a.createResponsiveStyleObj=function(c,b,d,e,f,g,h,k,j){var l={};if(c){for(var m=0;mb.length)return!1;var d=b[2],e=/[^\\.0-9]/.exec(d);e&&(d=d.slice(0,e.index));b&&(c=parseFloat(d));a.verbose&&a.log("Webkit version : "+c);return 534<=c};a.canUseWebkitAnimations=function(){var c= -a.isSupportedWebkitBasedBrowser();return!c?!1:c&&a.device==a.IDEVICE};a.getIsBrowserSupported=function(){var c=!1;a.browser==a.MSIE&&a.browserVersion>=a.MSIE_MIN_SUPPORTED_VERSION?c=!0:a.browser==a.CHROME&&a.browserVersion>=a.CHROME_MIN_SUPPORTED_VERSION?c=!0:a.browser==a.SAFARI&&a.browserVersion>=a.SAFARI_MIN_SUPPORTED_VERSION?c=!0:a.browser==a.FIREFOX&&a.browserVersion>=a.FF_MIN_SUPPORTED_VERSION&&(c=!0);return c};a.ShowWarning=function(c,b,d,e){var f=a.D.rtDialog,g=f.rtbgfc,h=f.rtbgsc,k=f.rtbtnfc, -j=f.rtbtnsc,l=f.rtsc,m=f.rttc,n=f.rttsc,o=f.rtfn,q=f.rtokb,f=f.rtcb,r=1;e&&++r;e=new a.RuntimeMessageBox(document.getElementById("cpDocument"),r,g,h,k,j,l,m,n,o);e.setTitleText(b);e.setMessageText(c);e.setFirstButtonText(q);e.registerFirstButtonHandler(e.hide);e.setSecondButtonText(f);d||e.show();return e};a.getIdealFontSize=function(c,b,d,e){if(a.responsiveType==a.kCPPMEAutoResponsive){var f=!1,g=document.createElement("canvas");document.body.appendChild(g);var h=g.getContext("2d"),k=0;g.id="CursorLayer"; -h.font=e+"px Arial";k=h.measureText(c).width;if(b*d<1.5*e*k){do h.font=e+"px Trebuchet MS",k=h.measureText(c).width,b*d<1.4*e*k?e--:f=!0;while(!f)}document.body.removeChild(g);return e}};a.alert=function(c,b){b||(b="Adobe Captivate");c||(c="");a.ShowWarning(c,b)};window.alert=a.alert;a.modifyAlternativeAccessibleText=function(c,b){if(""!=b&&c&&"undefined"!=c)if(a.SAFARI===a.browser)c.setAttribute("aria-label",b);else{if(0===a.D.pref.acc||""===b)b=" ";var d=c.firstChild;if(d){if("DIV"!==d.tagName|| -"cp-accessibility"!=d.className)d=d.nextSibling;if(d&&(d=d.firstChild))d.innerHTML=b}}};a.removeAccessibilityOutline=function(c){if(!(a.browser!==a.SAFARI&&1!==a.D.pref.hsr&&1===a.D.pref.acc)&&c){switch(a.browser){case a.CHROME:case a.SAFARI:case a.FIREFOX:c.style.outlineStyle="none"}switch(a.device){case a.IDEVICE:case a.ANDROID:c.style.outlineStyle="none"}}};a.complete=function(){if(a.initiated&&(!a.loadedModules.playbar||a.PB.playbarCreated))if(!a.loadedModules.toc||a.toc.tocCreated)if(!a.loadedModules.border|| -a.borderCreated){var c=a("initialLoading");c&&c.parentElement.removeChild(c);a.unblockFromLMS();a.passwordAccepted&&!a.completed&&(a.completed=!0,a.responsive&&a.adjustResponsiveItems(a.ReasonForDrawing.kRegularDraw),a.fireModuleReadyEvent(a.currentWindow),a.autoPlayNeedsUserClick()||a.D.project_main.autoplay&&(a.currentWindow.cpAPIInterface&&a.currentWindow.cpAPIInterface.canPlay())&&a.movie.play())}};a.newElem=function(c){c=document.createElement(c);a.shouldScale&&a.fixWebkitScaling(c);return c}; -a.fixWebkitScaling=function(c){if(a.shouldScale&&c&&c.style){var b=c.style.WebkitTransform;b&&-1!=b.toString().indexOf("translate3d")||(c.style.WebkitTransform+="translate3d(0px, 0px, 0px)")}};a.addDCHDiv=function(c,b){var d=document.createElement("div");d.id=c.id+"dummyCHDiv";d.style.width=c.style.width;d.style.height=c.style.height;d.style.display="block";d.style.position="absolute";d.style.left="0px";d.style.top="0px";d.style.backgroundColor="#ffffff";d.style.opacity=0;a.clearGestureCache(d);a.registerGestureEvent(d, -a.GESTURE_EVENT_TYPES.TAP,b);c.appendChild(d);return d};a.clearCanvasProperly=function(a){a.element.width=a.element.width};a.cloneObject=function(c){if(null==c||"object"!=typeof c)return c;var b=c.constructor(),d;for(d in c)c.hasOwnProperty(d)&&(b[d]=a.cloneObject(c[d]));return b};a.showHint=function(c,b){a.disableInteractions||(b.hintFeedback=new a.Feedback(c,null,!1,a.FeedbackType.HINT),b.hintFeedback.onRollover())};a.hideHint=function(c,b){if(!a.disableInteractions&&b&&b.hintFeedback)b.hintFeedback.onRollout()}; -a.addRewrapObjectAsPerRestOfProjectItem=function(c){if(c){var b=a.movie.stage.getSlideDiv().firstChild;if(b){var d=a.movie.stage.m_lowestRewrapElementThatIsRestOfProjectAndOnTop;d?b.insertBefore(c,d):b.appendChild(c)}}};a.addDivObjectAsPerRestOfProjectItem=function(c){if(c){var b=a.movie.stage.getSlideDiv();if(b){var d=a.movie.stage.m_lowestElementThatIsRestOfProjectAndOnTop;d?b.insertBefore(c,d):b.appendChild(c)}}};a.moveRewrapElemToTop=function(c){c&&(c.parentNode.removeChild(c),a.addRewrapObjectAsPerRestOfProjectItem(c))}; -a.moveDivElemToTop=function(c){c&&(c.parentNode.removeChild(c),a.addDivObjectAsPerRestOfProjectItem(c))};a.redrawItem=function(c,b){void 0===b&&(b=!1);var d=a(c);if(d&&!a("dummyStyle")){var e=d.style.display,f;f=!1==b?document.createElement("style"):document.createTextNode("");f.id="dummyStyle";document.body.appendChild(f);setTimeout(function(){document.body.removeChild(f);d.style.display=e},50)}};a.g_clickTimer=0;a.isClickTimerRunning=function(){return 0!=a.g_clickTimer};a.startClickTimer=function(c, -b){a.isClickTimerRunning()||(a.g_clickTimer=setInterval(b,c))};a.stopClickTimer=function(){a.isClickTimerRunning()&&(clearInterval(a.g_clickTimer),a.g_clickTimer=0)};a.getGradientSvgStr=function(a,b,d,e,f){var g="";if(!a.cs||2>a.cs.length)return"";if(0==a.t){if(g="linearGradient",void 0==a.x1||void 0==a.x2||void 0==a.y1||void 0==a.y2)return""}else if(1==a.t){if(g="radialGradient",void 0==a.cx||void 0==a.cy||void 0==a.r)return""}else return"";if(void 0==e||0==e)e=1;if(void 0==f||0==f)f=1;var h="<"+ -g+' id="grad1" gradientUnits="userSpaceOnUse"';0==a.t?h+=' x1="'+a.x1*e+'" y1="'+a.y1*f+'" x2="'+a.x2*e+'" y2="'+a.y2*f+'"':(h+=' cx="'+a.cx*e+'" cy="'+a.cy*f+'" r="'+a.r*e+'"',void 0!=a.tf&&(void 0!=a.tf.x&&void 0!=a.tf.y)&&(h+=' gradientTransform="translate('+a.tf.x*e+" "+a.tf.y*f+')"'));var k="pad";void 0!=a.s&&(1==a.s?k="reflect":2==a.s&&(k="repeat"));for(var j="",l=0;l');return''+(h+(' spreadMethod="'+k+'">'))+j+""+('')+""};a.getGradientFill=function(c,b,d,e){if(!b||!c.cs||2>c.cs.length)return null;void 0==d&&(d=1);void 0==e&&(e=1);var f=null;if(0==c.t){if(void 0==c.x1||void 0==c.x2||void 0==c.y1||void 0==c.y2)return null;f=b.createLinearGradient(c.x1*d,c.y1*e,c.x2*d,c.y2*e)}else if(1==c.t){if(void 0==c.cx||void 0==c.cy||void 0==c.r)return null;var f= -c.cx,g=c.cy;void 0!=c.tf&&(void 0!=c.tf.x&&void 0!=c.tf.y)&&(f+=c.tf.x,g+=c.tf.y);f=b.createRadialGradient(f*d,g*e,0,f*d,g*e,c.r*d)}else return null;for(b=0;b=j&&(d.m_offset=b[m]-(l-j),d.m_patternIndex=m,d.m_drawingDash=k,l=j),n=e+l*g,o=f+l*h,k?a.lineTo(n,o):a.moveTo(n,o),k=!k,m=(m+1)%b.length}};a.drawDashedLine=function(c,b,d,e,f,g){var g=a.getPattern(g,7,3),h=new a.dashStruct;a.drawDashedLineImpl(c,g,h,b,d,e,f)};a.drawDashedCurve=function(a,b,d,e,f,g,h,k,j,l,m,n){var o=l=0,q=m=0, -r=q=0,u=0,s=-d.m_offset,w=d.m_drawingDash,z=d.m_patternIndex,p=u=0,v=0,y=r=0,A=o=0,C=0;if(0>n){n=0;l=e;o=f;for(u=1;100>u;++u)q=u/100,r=1-q,m=r*r*l+2*q*r*g+q*q*k,q=r*r*o+2*q*r*h+q*q*j,n+=Math.sqrt((m-l)*(m-l)+(q-o)*(q-o)),l=m,o=q;if(0>n||0==n)return}Math.sqrt((g-e)*(g-e)+(h-f)*(h-f));m=e;q=f;l=g;for(o=h;s=n&&(d.m_offset=b[z]-(s-n),d.m_patternIndex=z,d.m_drawingDash=w,s=n),A=m,C=q,u=q-o,p=l-m,v=m*o-q*l,0==n&&(console.error("Resetting the value of R to 1 inorder to prevent Divide by zero."), -n=1),q=s/n,1f&&(f=e);h=Math.PI/4;k=e/Math.cos(h/2);j=f/Math.cos(h/2);c.beginPath();l=0;c.moveTo(b+e,d);r=b+e;u=d;for(s=0;8>s;++s)l+=h, -m=l-h/2,o=b+Math.cos(m)*k,q=d+Math.sin(m)*j,m=b+Math.cos(l)*e,n=d+Math.sin(l)*f,a.drawDashedCurve(c,g,w,r,u,o,q,m,n,e,f,-1),r=m,u=n;c.closePath()};a.drawDashedArc=function(c,b,d,e,f,g,h,k,j){var l=0,m=0,n=0,o=0,q=0,r=q=0,u=0,s=0,w=e-g,z=f,p=0;0>h&&(h=g);l=Math.PI/4;m=g/Math.cos(l/2);n=h/Math.cos(l/2);o=0;c.moveTo(e-g,f);for(p=0;16>p;++p)if(o+=l,q=o-l/2,u=e+Math.cos(q)*m,s=f+Math.sin(q)*n,q=e+Math.cos(o)*g,r=f+Math.sin(o)*h,o>k&&o<=j)a.drawDashedCurve(c,b,d,w,z,u,s,q,r,g,h,Math.PI*g/4),w=q,z=r;else if(o<= -k)w=q,z=r,c.moveTo(w,z);else if(o>j)break};a.drawDashedRectangle=function(c,b,d,e,f,g,h){var k=new a.dashStruct,h=a.getPattern(h,7,3);0>=g&&(g=0);c.beginPath();c.moveTo(b,d+f-g);a.drawDashedLineImpl(c,h,k,b,d+f-g,b,d+g);0=q))for(;u=q){if(d.m_offset=b[z]-(u+p-q),d.m_patternIndex=z,d.m_drawingDash=w,p=q-u,p>q&&(p=q),A=!0,!w){c.moveTo(l,m);break}}else{if(0>u){for(r=u;0>r;)r+=p;p=r;u=0}d.m_offset=0;d.m_patternIndex=0;d.m_drawingDash=!0}0>y&&(y=0);if(w&&0q&&(p=q);s=3s?y+s:y+v,n=y/q,o=1-n,1<=n?(r=l,n=m):(r=o*o*o*e+3*n*o*o*g+3*n*n*o*k+n*n*n*l,n=o*o*o*f+3*n*o*o*h+3*n*n*o*j+n*n*n*m),c.lineTo(r,n),v-=s;while(0u&&(u=0);u+=p}};a.handleQuizzingItemsInReviewMode=function(c,b,d){if(a.movie.playbackController){var e=a.movie.playbackController.GetQuizController();if(e){var f=b.iqb,e=e.GetIsInReviewMode();if(f)switch(b.qbt){case "submit":case "submitAll":case "clear":case "skip":case "back":if(!0==e){b=a.movie.stage.currentSlide;if("Question Slide"==b.st){if((b=a.getQuestionObject(b.qs))&&b.getIsKnowledgeCheck())break; -a.hide(d)}c.tabIndex=-1}break;case "reviewModeNext":case "reviewModeBack":!1==e?(a.hide(d),c.tabIndex=-1):a.show(d);break;case "postResult":if(b=a.movie.playbackController.GetLMSType(),!a.movie.playbackController.CanPostResults()||b&&"INTERNALSERVER"==b.toUpperCase())a.hide(d),c.tabIndex=-1}}}};a.createCanvas=function(c,b,d,e,f,g,h){f||(f=a.newElem("canvas"));f.width=d;f.height=e;f.style.width=void 0==g?d+"px":g;f.style.height=void 0==h?e+"px":h;f.left=c;f.top=b;f.style.left=c+"px";f.style.top=b+ -"px";return new a.Canvas(f)};a.createResponsiveCanvas=function(c,b,d,e,f){e||(e=a.newElem("canvas"));c.ipiv?(e.width=b,e.height=d):(e.width=0,e.height=0);a.applyResponsiveStyles(e,c,f,!0);return new a.Canvas(e)};a.preventEventDefault=function(a){a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)};a.getHitTestingRect=function(c){var b={minX:0,minY:0,maxX:0,maxY:0};if(!c)return b;var d=c.getBoundingClientRect(),c=a.getScaledPosition(d.left,d.top),d=a.getScaledPosition(d.right,d.bottom);b.minX= -c.X;b.minY=c.Y;b.maxX=d.X;b.maxY=d.Y;b.width=b.maxX-b.minX;b.height=b.maxY-b.minY;return b};a.IsPointWithElem=function(a,b,d,e,f,g,h){var k=0,j=0,l=0;a.rotateAngle&&(k=a.rotateAngle);a=b-(e+g)/2;d-=(f+h)/2;j=a*Math.cos(Math.PI*-k/180)-d*Math.sin(Math.PI*-k/180);l=a*Math.sin(Math.PI*-k/180)+d*Math.cos(Math.PI*-k/180);j+=(e+g)/2;l+=(f+h)/2;return j>=e&&j<=g&&l>=f&&l<=h?!0:!1};a.handleDblClick=function(c){var b=null,d=null,b=null,b=a.getScaledPosition(getPageX(c),getPageY(c)),e=b.X,f=b.Y,g=null,h=0, -b=a.movie.stage.getClickManager(),d=b.getDoubleClickArr(cpInfoCurrentFrame);if(!(null==d||0==d.length)){a.stopClickTimer();for(h=0;h=f&&c}};a.handleRightClick=function(c){var b=null,d=null,b=null,b=a.getScaledPosition(getPageX(c),getPageY(c)),e=b.X,f=b.Y,g=null,d=!1,h=0,b=a.movie.stage.getClickManager(),d=b.getRightClickArr(cpInfoCurrentFrame);if(!(null==d||0==d.length)){a.stopClickTimer();for(h=0;h=f&&c}};a.handleMouseOut=function(){if(a.device==a.DESKTOP){var c=a.movie.stage.getSlideDiv();c&&(c.touchstartX=null,c.isMoving=!1)}};a.handleMouseMove=function(c){c=c.pageX+","+c.pageY;a.LastMousePosition!=c&&(a.LastMousePosition=c,c=document.getElementById("playbar"),void 0!=c&&c.animator&&c.animator.showPlaybar(cpInfoCurrentFrame>=a.movie.stage.lastFrame?!0: -!1))};a.handleMouseOver=function(){var c=document.getElementById("playbar");void 0!=c&&c.animator&&c.animator.showPlaybar(cpInfoCurrentFrame>=a.movie.stage.lastFrame?!0:!1)};var w={};a.initObjectFactory=function(){w.questionSlideReviewLabel=a.QuestionSlideReviewLabel;w.progressSlideLabel=a.ProgressSlideLabel;w.fibAnswer=a.FIBAnswer;w.shortAnswer=a.ShortAnswer;w.sequenceInput=a.SequenceInput;w.matchingAnswer=a.MatchingAnswer;w.matchingItem=a.MatchingItem;w.likertItem=a.LikertItem;w.hotspotInput=a.HotspotInput; -w.multipleChoiceInput=a.MCQInput;w.resultSlideLabel=a.ResultSlideLabel;w.singleChoiceInput=a.MCQInput;w.input=a.TextInput;w.textbutton=a.TextButton;w.shape=a.Shape;w.image=a.DisplayObject;w.group=a.Group;w.svg=a.DisplayObject;w.text=a.DisplayObject;w.placeholder=a.Placeholder;w.hb=a.HighlightBox;w.rai=a.RolloverAreaItem;w.mc=a.MouseClick;w.gf=a.Gradient;w.imgf=a.ImageFill;w.typingtext=a.TypingText;w.line=a.Line;w.drawingItem=a.DrawingItem;w.answerArea=a.AnswerArea;w.rectWithText=a.RectWithText;w.autoShape= -a.AutoShape;w.widget=a.Widget;w.WebObject=a.WebObject;w.ThreeDSlide=a.ThreeDSlide;w.ThreeDHotSpot=a.ThreeDHotSpot;w.eventVideo=a.EventVideo;w.slideVideo=a.SlideVideo;w.fmrVideo=a.FMRVideo;w.cpvcVideo=a.CPVCVideo;w.ytStreamingVideo=a.YTStreamingVideo;w.vimeoStreamingVideo=a.VimeoStreamingVideo;w.zoom=a.Zoom;w.ta=a.TextAnimation;w.animationItem=a.AnimationItem;if(a.extObjInfo&&a.IsValidObj(a.extObjInfo))for(var c=0;c=l.getNumberOfAttempts()&&(o=!0);l.setShouldAddToTotal(void 0!=g.sat&&g.sat);!m.GetIsInReviewMode()&&!m.GetIsQuizCompleted()&&(o?(k?l.setQuestionStatus(l.QuestionStatusEnum.CORRECT):l.setQuestionStatus(l.QuestionStatusEnum.INCORRECT),n||l.endQuestion(!0)):l.endQuestion(!1))}}c={itemname:c,frameNumber:cpInfoCurrentFrame,objecttype:h,issuccess:k,slideNumber:cpInfoCurrentSlideIndex+1,includedInQuiz:j};l&&(c.questioneventdata=l.getQuestionEventData());a.em.fireEvent("CPInteractiveItemSubmit", -c)}};a.hotspotQuestionSlideHandler=function(c){a.m_gestureHandler.disableGestures();var b=c.currentTarget,d=a.getQuestionObject(b.childNodes[0].id);d&&d.hotspotQuestionHandler(b,getPageX(c),getPageY(c));a.m_gestureHandler.enableGestures()};a.handleClickExternal=function(c){function b(c){return a.kCPOTClickBoxItem==c.type||a.kCPOTScorableButtonItem==c.type||a.kCPOTAutoShape==c.type}function d(){n=!0;if(null==q&&(m.ofc||-1!=m.ma))r=o,q=m,z=s,w=u,p=h}function e(b){if("DIV"==b.nodeName&&"block"==b.style.display&& -("feedbackClickDiv"==b.id&&b.remover(),h=a.GetDataForElement(b,!0))){var d=h.mdi;if(d&&a.D[d].visible&&h.chfn&&void 0==h.val){d=h.mdi;drawingItemDivData=a.D[d];s=0;u=-1;var e=h.currentAttempt;void 0!=e&&(s=e);u=h.ma;m=h;o=b.id;if(void 0==m.amc||m.amc||!(a.device!=a.IDEVICE||a.device==a.ANDROID))if(h&&drawingItemDivData&&a.kCPOTWidgetItem==h.type&&drawingItemDivData.iiw)a.HandleInteractiveWidget(c,d);else return!0}}}function f(c){var d=ja(c.id);if(a.D[d].enabled){if(m.actionInProgress)return!1;if(m.dclk|| -m.rclk){var d=function(){a.stopClickTimer();f+=1;e.currentAttempt=f;var d=e.ma,g=e.mdi,h=a.D[g].visible,g=a.showHideFeedbackCaptionsClickHandler(c,-1!=d&&f==d&&h,a.D[g].dn,(-1==d||f<=d)&&h);b(e)&&!e.handled&&(e.handled=-1!=d&&f>=d&&h);return g},e=m,f=s;a.isClickTimerRunning()||a.startClickTimer(500,d);return!1}d=m;if(!d||a.kCPOTAutoShape!=d.type)d=!0;else{var g=a.movie.stage.currentSlide,k=!1,j=!1,l=0;if(g&&(l=g.from,"Question Slide"==g.st&&g.qs)){var n=a.D[g.qs];n&&"Hotspot"==n.qtp&&(k=!0);(g=a.getQuestionObject(g.qs))&& -g.shouldDisableOptions()&&(j=!0)}d=!k||j?!0:!d.rp||!d.rpa||d.from>l?!1:!0}if(!d)return!1;d=h.chfn;a.SubmitInteractions(c.id,a.QuestionStatusEnum.CORRECT,s);k=a.movie.stage.currentSlide;d(c);k==a.movie.stage.currentSlide&&b(m)&&(m.handled=!0);return!0}}function g(a){if(!e(a))return!1;if(h.iqb||h.vid)return!0;a=f(a);if(void 0===a)n=!1;else return a;if(h.vid)return!1;d()}var h=null;if(a.isClickTimerRunning())return c.cpCustomData&&c.cpCustomData.asPartOfStateChange?a.handleDblClick(c):!1;var k=a.getScaledPosition(getPageX(c), -getPageY(c)),j=k.X-window.pageXOffset,l=k.Y-window.pageYOffset,m=null,k=a("div_Slide").childNodes,n=!1,o="",q=null,r="",u=-1,s=0,w=-1,z=0,p=null,v;v=0===c.screenX&&0===c.screenY&&0===c.clientX&&0===c.clientY&&0===c.x&&0===c.y?!0:!1;if(v){if(v=c.target,j=g(v,!1),!0===j||!1===j)return j}else for(var y=k.length-1;0<=y;--y)if(v=k[y],e(v)){var A;var C=A=0,D=0,P=0;void 0==v.getBoundingClientRect?(A=parseFloat(v.style.left),C=parseFloat(v.style.top),D=parseFloat(v.style.left)+parseFloat(v.style.width),P= -parseFloat(v.style.top)+parseFloat(v.style.height)):(A=void 0,v.rotateAngle&&(A=v.style.transform||v.style.msTransform||v.style.MozTransform||v.style.WebkitTransform||v.style.OTransform,a.applyTransform(v,"rotate(0)")),v.offsetHeight=v.offsetHeight,P=a.getHitTestingRect(v),v.rotateAngle&&a.applyTransform(v,A),A=P.minX,C=P.minY,D=P.maxX,P=P.maxY);var I=0;v.rotateAngle&&(I=v.rotateAngle);var L=j,F=l,L=L-(A+D)/2,F=F-(C+P)/2,M=L*Math.cos(Math.PI*-I/180)-F*Math.sin(Math.PI*-I/180),I=L*Math.sin(Math.PI* --I/180)+F*Math.cos(Math.PI*-I/180),M=M+(A+D)/2,I=I+(C+P)/2;A=M>=A&&M<=D&&I>=C&&I<=P?!0:!1;if(A){if(h.iqb||h.vid)return!0;if((a.kCPOTAutoShape==m.type||a.kCPOTWebObject==m.type)&&h.isCanvasClicked&&!h.isCanvasClicked(c,!0,function(){a.handleClickExternal(c)}))d();else if(j=f(v),void 0===j){n=!1;break}else return j}else h.vid||d()}if(n){q&&(m=q,o=r,s=z,u=w,h=p);if(m&&m.actionInProgress)return!1;if(m&&!m.iqb){s+=1;m.currentAttempt=s;var Q,J;m.mdi&&(J=a.D[m.mdi]);J&&(Q=J.dn);a.SubmitInteractions(Q,a.QuestionStatusEnum.INCORRECT, -s-1)}Q=a.D[h.mdi].visible;J=-1!=u&&s==u&&Q;j=(-1==u||s<=u)&&Q;l="";m&&b(m)&&(l=o);a.showHideFeedbackCaptionsClickHandler(k[0],J,l,j);m&&(b(m)&&!m.handled)&&(m.handled=-1!=u&&s>=u&&Q)}return!1};a.handleClick=function(c){if(!a.disableInteractions&&(c.preventDefault&&c.preventDefault(),c.stopPropagation&&c.stopPropagation(),!a.handleClickExternal(c))){var b=a("div_Slide").childNodes[0];if(b&&("DIV"==b.nodeName&&"block"==b.style.display)&&(a.getQuestionObjectName&&(b=a.getQuestionObjectName(b.id),(b= -a.D[b])&&"Hotspot"==b.qtp&&a.hotspotQuestionSlideHandler(c)),a.extObjInfo))for(c=0;c=f||0>=g)){c.clearRect(d,e,f,g);c.translate(d,e);var e=b.width,d=b.height,k=e>f,j=d>g,l=k?f:e,m=j?g:d;c.drawImage(b,0,0,Math.ceil(l/2),Math.ceil(m/2),0,0,Math.ceil(l/2),Math.ceil(m/2));c.drawImage(b,Math.floor(e-l/2),0,Math.ceil(l/2),Math.ceil(m/2),Math.floor(f-l/2),0,Math.ceil(l/2),Math.ceil(m/2));c.drawImage(b,0,Math.floor(d-m/2),Math.ceil(l/2),Math.ceil(m/2),0,Math.floor(g-m/2),Math.ceil(l/2),Math.ceil(m/2));c.drawImage(b,Math.floor(e-l/2),Math.floor(d- -m/2),Math.ceil(l/2),Math.ceil(m/2),Math.floor(f-l/2),Math.floor(g-m/2),Math.ceil(l/2),Math.ceil(m/2));c.save();c.shadowColor=a.ConvertRGBToRGBA("#ffffff","1");c.shadowOffsetX=0;c.shadowOffsetY=0;c.shadowBlur=0;c.drawImage(b,0,0,Math.ceil(l/2),Math.ceil(m/2),0,0,Math.ceil(l/2),Math.ceil(m/2));c.drawImage(b,Math.floor(e-l/2),0,Math.ceil(l/2),Math.ceil(m/2),Math.floor(f-l/2),0,Math.ceil(l/2),Math.ceil(m/2));c.drawImage(b,0,Math.floor(d-m/2),Math.ceil(l/2),Math.ceil(m/2),0,Math.floor(g-m/2),Math.ceil(l/ -2),Math.ceil(m/2));c.drawImage(b,Math.floor(e-l/2),Math.floor(d-m/2),Math.ceil(l/2),Math.ceil(m/2),Math.floor(f-l/2),Math.floor(g-m/2),Math.ceil(l/2),Math.ceil(m/2));c.fillStyle="rgba("+h[0]+","+h[1]+","+h[2]+","+h[3]+")";h=k?f:e;l=j?g:d;c.fillRect(Math.floor(h/2),Math.floor(l/2),f-h+1,g-l+1);h=3;k=!k?e/2:f/2;j=!j?d/2:g/2;for(l=Math.floor(d-j-1)-1;lg-l?g-l:3;0>=h&&(h=1);l+=h-1}h=3;for(e=Math.floor(k)-1;ef-e?f-e:3,0>=h&&(h=1),e+=h-1;c.restore()}};a.getIntersectionRect=function(a,b){var d=a[0]+a[2],e=a[1]+a[3],f=b[0]+b[2],g=b[1]+b[3],h={l:0,t:0, -w:0,h:0};if(df||a[1]>g)return h;h.l=a[0]>b[0]?a[0]:b[0];h.t=a[1]>b[1]?a[1]:b[1];h.w=(dc.crop.x?-c.crop.x:0;o[1]=0>c.crop.y?-c.crop.y:0;c.drawImage(l.nativeImage,q.l,q.t,q.w,q.h,o[0],o[1],q.w,q.h)}else if(j.type==a.kCPOTImageBoxItem){var r=a.D[a.D[j.mdi].dn],u=r.imageCanvasWidth,s=r.imageCanvasHeight,w=j.clientWidth,z=j.clientHeight;r.maintainAspectRatio?(g=0!=s?u/s:1,h=0!= -z?w/z:1,h>g&&(u=g*z,s=z),hf&&(clearInterval(g),d())},50)}void 0!=e&&document.getElementsByTagName("head")[0].appendChild(e);return e};a.CPPlayButtonHandle=function(c){var b;c.keyCode?b=c.keyCode:c.which&&(b=c.which);32==b&&a.movie.play()};a.handleVariablesInURLParams=function(){var c= -window.location.toString();if(-1!=c.indexOf("?"))for(var c=c.split("?")[1].split("&"),b=0;ba.responsiveMaxWidth?(parseFloat(a("project_container").style.width)!=a.ResponsiveProjWidth&&(a("project_container").style.width=a.ResponsiveProjWidth+"px"),a("project_container").style.left=(c-a.ResponsiveProjWidth)/2+"px"):(a("project_container").style.width="100%",a.inVR&&window.innerWidthwindow.innerWidth&&(e-=window.innerWidth,e=b.leftwindow.innerHeight)d-=window.innerHeight,b=b.topwindow.innerHeight);f?(a("project_container").style.height=window.innerHeight+"px",a("project").style.height=window.innerHeight+"px",a("main_container").style.height="100%", -a("cpDocument").style.height="100%"):(a("project_container").style.height=d+b+"px",a("project").style.height=d+"px",a("main_container").style.height="100%",a("cpDocument").style.height=Math.max(window.innerHeight,d+b)+"px")}}};a.adjustSkins=function(c){if(a.responsive){void 0==c&&(c=a.ReasonForDrawing.kOrientationChangeOrResize);var b=a("project"),d=a("playbar");a.PB&&a.PB.playbarCreated&&(a.PB.rootObj&&(a.PB.rootObj.layoutPlaybar&&c==a.ReasonForDrawing.kOrientationChangeOrResize)&&a.PB.rootObj.layoutPlaybar(!0, -b.clientWidth),a.responsive&&(c=b.clientHeight+d.clientHeight,d.style.bottom=ca.getWindowInnerWidth(window)?(a.getWindowInnerWidth(window)-a.playImage.clientWidth)/2:(a.project.clientWidth-a.playImage.clientWidth)/2,lPlayButtonT=a.project.clientHeight>a.getWindowInnerHeight(window)?(a.getWindowInnerHeight(window)-a.playImage.clientHeight)/2:(a.project.clientHeight-a.playImage.clientHeight)/2,a.playImage.style.left= -d+"px",a.playImage.style.top=lPlayButtonT+"px",1===a.D.pref.hsr||1!==a.D.pref.acc))a.playImage.style.outlineStyle="none";if(a.autoplayImage&&(a.autoplayImage.style.left=(a.project.clientWidth-a.movie.autoplayimagew)/2+"px",a.autoplayImage.style.top=(a.project.clientHeight-a.movie.autoplayimageh)/2+"px",1===a.D.pref.hsr||1!==a.D.pref.acc))a.autoplayImage.style.outlineStyle="none"}};a.getCurrentBreakpointWidth=function(c){var b=a.responsiveWidths.length;if(c<=a.responsiveWidths[0])return a.responsiveWidths[0]; -if(c>=a.responsiveWidths[a.responsiveWidths.length-1])return a.responsiveWidths[a.responsiveWidths.length-1];for(var d=0;d<=b-1;++d)if(c<=a.responsiveWidths[d])return a.responsiveWidths[d]};a.getCurrentBreakPointID=function(){var c=a.D.project.breakpointIdToWidthMap,b;for(b in c)if(c[b]==a.ResponsiveProjWidth)return b};a.updateResponsiveGlobals=function(){if(a.responsive&&a.responsiveWidths&&!(0>=a.responsiveWidths.length)){var c=window.innerWidth;a.RespDefaultBptW=a.responsiveWidths[a.responsiveWidths.length- -1];a.ResponsiveProjWidth=a.getCurrentBreakpointWidth(c);void 0==a.responsiveMaxWidth&&(a.responsiveMaxWidth=a.D.project.maxWidth)}};var ra=function(a){var b=a.flexNode,d=b.children;if(b.isSticky){var e={},f;for(f in b)if(b.hasOwnProperty(f))if("object"===typeof b[f]){e[f]={};for(var g in b[f])b[f].hasOwnProperty(g)&&(e[f][g]=b[f][g]);e[f].keepAspectRatio=!1}else e[f]=b[f];e.children=[];e.children.push(b);e.uid=-1*b.uid;b.style.bg_uid=0;a.flexNode=e}if(d)for(a=0;ak.parentObj.bstiid){if(k.states&&0c&&c>b&&04/3?$||(a.movie.paused||(a.movie.pause(a.ReasonForPause.BAD_ORIENTATION),a.movie.paused&&(ta=!0)),$=!0,T||(T=document.createElement("div"),T.classList.add("curtain"),document.body.appendChild(T),c=T,c.onclick=c.ondblclick=c.onmousedown=c.onmousemove=c.onmouseup= -c.onmouseover=c.onmouseout=X,c.addEventListener("touchstart",X),c.addEventListener("touchmove",X),c.addEventListener("touchend",X),c=document.createElement("div"),c.classList.add("curtainMsg"),c.innerText=a.lpm,T.appendChild(c)),T.style.display="table"):$&&(ta&&a.movie.play(a.ReasonForPlay.ORIENTATION_OK),T.style.display="none",$=!1)}};a.__adjustWindow=function(c){a.useg&&a.gesturesDiv&&(a.gesturesDiv.style.position=a.responsive||window.innerWidth=window.innerHeight?"0px":window.innerHeight-e+"px"}else b.style.bottom="0px",b.style.position="fixed";c=c?c.type:c;if("resize"==c){if(a.em.fireEvent("CPWindowResized"),a.device!=a.DESKTOP){if(a.isTextInputInFocus()){if(a.device!=a.IDEVICE){if(e=document.activeElement,c=a.getMainContainer(),c.style.position="absolute",document.body.style.overflow="scroll",e=t=0,a.responsive||(e=parseFloat(c.parentElement.parentElement.style.left),t=parseFloat(c.parentElement.parentElement.style.top), -window.scrollTo(e,t)),a.responsive)b.style.top=a.project.clientHeight+"px",b.style.position="absolute",b.offsetHeight=b.offsetHeight}else if(a.responsive){var f=document.activeElement.onblur;document.activeElement.onblur=function(a){setTimeout("cp.adjustSkins();if(cp.m_gestureHandler){cp.m_gestureHandler.fitMovie();}",500);f&&f(a)}}return}if(a.responsive){b.style.top="";b.style.position="fixed";b.offsetHeight=b.offsetHeight;if(1!=a("div_Slide").scaleFactor)return;setTimeout("window.scrollTo(0,0);cp.fontMap = [];cp.adjustResponsiveItems();cp.rescaleFontSizes();cp.em.fireEvent('CPWindowResizeCompleted');", -500);return}}}else(e=document.activeElement)&&("input"==e.tagName.toLowerCase()&&"text"==e.type||"textarea"==e.tagName.toLowerCase())&&e.blur(),a.em.fireEvent("CPOrientationChanged");window.scrollTo(0,0);if(a.responsive){if(a.fontMap=[],M=1,a.adjustResponsiveItems(),a.rescaleFontSizes(),"resize"==c?a.em.fireEvent("CPWindowResizeCompleted"):a.em.fireEvent("CPOrientationChangeCompleted"),PPTXLib&&PPTXLib.resetAnimationsDueToResizeOrOrientationChange&&(document.getElementById("cpDocument").clientHeight!== -Y.height||document.getElementById("cpDocument").clientWidth!==Y.width))Y.height=document.getElementById("cpDocument").clientHeight,Y.width=document.getElementById("cpDocument").clientWidth,PPTXLib.onresize(),PPTXLib.resetAnimationsDueToResizeOrOrientationChange(),cpInfoCurrentFrame>=a.movie.stage.lastFrame&&(PPTXLib.updateAnimationManager(),PPTXLib.forceRedraw())}else{if(!a.SetScaleAndPosition()){a.getInnerWidth();var b=a.getMainContainer(),e=a.getProjectContainer(),d=a.getProject(),g=(a.offsetInnerWidth- -parseFloat(b.style.width))/2;b.style.left=(0=a.length)){for(var d=a[0],e=1;ea.lBorderW&&(h.w+=g.playBarHeight-a.lBorderW,d.style.width=e.style.width=h.w+"px",a.lBorderW=g.playBarHeight),f.style.left=a.lBorderW-g.playBarHeight+"px"):(g.playBarHeight> -a.rBorderW&&(h.w+=g.playBarHeight-a.rBorderW,d.style.width=e.style.width=h.w+"px",a.rBorderW=g.playBarHeight),f.style.left=a.lBorderW+"px");var k=g&&g.playBarHeight?g.playBarHeight:0,k=0==g.position?k/2:-(k/2);d.style.left=parseFloat(d.style.left)+k+"px"}else f.style.left=a.lBorderW+"px";1!=g.position?(3==g.position&&(g.playBarHeight>a.bBorderW&&!g.overlay)&&(h.h+=g.playBarHeight-a.bBorderW,d.style.height=e.style.height=h.h+"px",a.bBorderW=g.playBarHeight),f.style.top=a.tBorderW+"px"):g.overlay?f.style.top= -a.tBorderW+"px":(g.playBarHeight>a.tBorderW&&(h.h+=g.playBarHeight-a.tBorderW,d.style.height=e.style.height=h.h+"px",a.tBorderW=g.playBarHeight),f.style.top=a.tBorderW-g.playBarHeight+"px")}};a.handleTOCOpenClose=function(){var c=a("toc");c&&c.animator&&(cpCmndTOCVisible?c.animator.hideTOC():c.animator.showTOC())};a.toggleMoviePlayPause=function(){var c="";a.movie.paused?(a.movie.play(a.ReasonForPause.PLAYBAR_ACTION),c="playAnimation"):(a.movie.pause(a.ReasonForPause.PLAYBAR_ACTION),c="pauseAnimation"); -a.useg&&a.showGesturesAnim&&a.showGesturesAnim(c)};a.togglePlaybarShowHide=function(){if(cpInfoHasPlaybar){var c=a("playbar");if(c){if(a.movie.playbackController){var b=a.movie.playbackController.GetQuizController();b&&a.movie.stage&&(a.movie.stage.currentSlide&&"Question Slide"==a.movie.stage.currentSlide.st)&&b.GetHidePlaybarInQuiz()}c.animator?(c.animator.showPlaybar(cpInfoCurrentFrame>=a.movie.stage.lastFrame?!0:!1),c.shown=!0):(c.style.display=!c.shown?"block":"none",a.adjustSkins(),c.shown= -!c.shown)}}};a.isTextInputInFocus=function(){var a=document.activeElement;return a&&("input"==a.tagName.toLowerCase()&&"text"==a.type||"textarea"==a.tagName.toLowerCase())};a.adjustResponsiveCCProps=function(){a.responsive&&(a.movie.stage.updateCCProps(),a.movie.stage.audioCCItems&&a.movie.stage.updateAudioCC(),a.movie.stage.videoCCItems&&a.movie.stage.updateVideoCC())};a.markTOCEntryComplete=function(c){(c=a.D[a.movie.stage.getSlideNameForIndex(c)])&&c.tocEntry&&c.tocEntry.setVisited()};a.updateTextBounds= -function(c,b,d,e){if(a.responsive&&c&&d)for(var d=d[a.ResponsiveProjWidth],d=[d.l,d.t,d.w,d.h],e=[e[0],e[1],-(e[0]+e[2]),-(e[1]+e[3])],f=["left","top","width","height"],b=[c.parentElement.clientWidth,c.parentElement.clientHeight,b.clientWidth,b.clientHeight],g=0;4>g;++g){var h=d[g];c.style[f[g]]=-1!=h.indexOf("%")?a.getRoundedValue(parseFloat(h)*b[g]/100)+e[g]+"px":parseFloat(h)+e[g]+"px"}};a.addSpanToFontMap=function(c){if(c&&a.responsiveType==a.kCPPMEAutoResponsive&&S){var c=c.children,b;for(b in c){var d= -c[b];d&&(d.tagName&&"span"==d.tagName.toLowerCase())&&(d.autoResponsiveOrigFont||(d.autoResponsiveOrigFont=parseFloat(d.style.fontSize)||14),a.fontMap.push(d));a.addSpanToFontMap(d)}}};a.applyFontFactor=function(c,b){if(c){var d=c.children,e;for(e in d){var f=d[e];if(f&&f.tagName&&"span"==f.tagName.toLowerCase()){f.autoResponsiveOrigFont||(f.autoResponsiveOrigFont=parseFloat(f.style.fontSize),""===f.style.fontSize&&S&&(f.autoResponsiveOrigFont=parseFloat(f.parentElement.style.fontSize)));var g=f.autoResponsiveOrigFont* -b.value;gg&&(g=8); -f.style.fontSize=g+"px"}a.adjustFontSizesForVariableTextNonAutoResponsive(f,b,d)}}};a.adjustFontSizesForNonAutoGrowText=function(c,b,d){if(c){var c=c.children,e;for(e in c){var f=c[e];if(f&&f.tagName&&"span"==f.tagName.toLowerCase()){var g=parseFloat(f.style.fontSize),g=Math.floor(a.getAutoscaledFontSize(b,g,d));8>g&&(g=8);f.style.fontSize=g+"px"}a.adjustFontSizesForNonAutoGrowText(f,b,d)}}};a.getAutoscaledFontSize=function(a,b,d){return b*d/a};a.canAddTextExpIcon=function(c,b){var d=!0;if(a.responsiveType!= -a.kCPPMEAutoResponsive)d=!1;else if(!c||!b)d=!1;else if("visible"!=c.style.visibility)d=!1;else if(b&&!0==b.isDD)d=!1;else if(b&&(b.type==a.kCPOTSuccessShapeItem||b.type==a.kCPOTFailureShapeItem||b.type==a.kCPOTHintShapeItem))d=!1;return d};a.IsTextElementCut=function(a,b){var d=a.textContent&&""!=a.textContent;return(a.scrollHeight>a.clientHeight+3||a.scrollWidth>a.clientWidth+3)&&d&&!b?!0:!1};a.IsCutAfterRelaxingContainerDimension=function(c){if("hidden"==c.style.visibility)return!1;for(var b=c.getElementsByTagName("span"), -d=0;dd.bottom+5||e.right>d.right+5)};a.showExpandAfterTimeOut=function(c,b){window.requestAnimationFrame(function(){a.showExpandIconForCutElement(c,b)})};a.showExpandIconForCutElement=function(c,b){if(a.IsCutAfterRelaxingContainerDimension(c)){var d=b.id+"_vTxtHandlerHolder",e=a(d);if(e){if(0==parseFloat(e.style.height)||0==parseFloat(e.style.width))e.style.height="100%",e.style.width="100%"}else d=b.id,e=a(d);if(e){parseInt(e.style.height)>b.clientHeight&&(e.style.height=b.clientHeight+ -"px");parseInt(e.style.width)&&(e.style.width=b.style.width+"px");var f=b.id+"_expandButtonDiv";(d=document.getElementById(f))||(d=a.newElem("div"));d.id=f;a.fixWebkitScaling(d);d.style.display="block";d.style.position="absolute";d.style.width="30px";d.style.height="30px";d.style.bottom="0px";d.style.right="0px";d.style.visibility="visible";e.appendChild(d);e=document.getElementById(b.id+"_expandIcon");if(!e||void 0==e)e=a.newElem("img"),e.id=b.id+"_expandIcon",e.src=a.movie.im.m_projectImages["assets/htmlimages/expand_icon.png"].nativeImage.src, -e.tabIndex=-1,e.style.position="absolute",e.style.width="30px",e.style.height="30px",e.style.bottom="0px",e.style.right="0px";d.appendChild(e);a.registerGestureEvent(e,a.GESTURE_EVENT_TYPES.TAP,function(c){c.stopPropagation&&c.stopPropagation();if(a.browser==a.MSIE||a.browser==a.MSEDGE&&c.cancelBubble)c.cancelBubble=true;var b=c.currentTarget.id.replace("_expandIcon",""),d=a(b+"_vTxtHolder");if(d&&d.childNodes.length>0)d.childNodes[0].childNodes&&d.childNodes[0].childNodes.length>0&&a.showLightBox(d.childNodes[0].childNodes[0]); -else{b=c.currentTarget.id.replace("_expandIcon","");(d=a(b+"canvasHolder"))||(d=a(b+"mtchicanvasHolder"));d||(d=a(b+"mtchacanvasHolder"));d||(d=a(b+"seqcanvasHolder"));d&&d.childNodes.length>0&&a.showLightBox(d.childNodes[2].childNodes[0])}});d.style.zIndex=1E3}}};a.showOrHideExpandIcon=function(c,b,d){c.style.height=c.clientHeight>a.getProject().clientHeight?a.getProject().clientHeight+"px":c.clientHeight+"px";if(!d&&a.IsCutAfterRelaxingContainerDimension(c))a.showExpandAfterTimeOut(c,b);else if(c= -document.getElementById(b.id+"_expandButtonDiv"))c.style.visibility="hidden"};a.updateVarText=function(c,b,d){if(a.responsive){a:{var e=0,f=0,g=0,h=0,k=0,j="",l="",m=!1,n=null,o=void 0,q=void 0,r=void 0,u=void 0;if(c.id){var s=a.GetDataForElement(c,!0),w=a.D[c.id];if(s){var z=s.vt,p=s.rpvt;if(p){var q=s.mdi,v=w.mdi,y=null,F=null,C=s.type;q&&(y=a.D[q],F=a(v));var M=a.isCaptionItem(C)&&a.D[s.mdi]&&a.D[s.mdi].ip,P=a.kCPOTAutoShape==C||a.kCPOTStageCorrectFeedbackShape==C||a.kCPOTSuccessShapeItem==C|| -a.kCPOTStageIncorrectFeedbackShape==C||a.kCPOTFailureShapeItem==C||a.kCPOTHintShapeItem==C||a.kCPOTStagePartialCorrectFeedbackShape==C||a.kCPOTRetryFeedbackShape==C||a.kCPOTIncompleteFeedbackShape==C||a.kCPOTTimeoutFeedbackShape==C||a.kCPOTAnswerFeedbackShape==C,l=a.kCPOTStageAnswerLabel==C||a.kCPOTStageAnswerItem==C||a.kCPOTStageMatchingAnswerEntry==C||a.kCPOTStageMatchingQuestion==C;if(!(a.kCPOTScorableButtonItem==C||a.kCPOTRetakeButton==C||a.kCPOTStageQuestionNextButton==C||a.kCPOTStageQuestionClearButton== -C||a.kCPOTStageQuestionBackButton==C||a.kCPOTStageQuestionReviewModeNextButton==C||a.kCPOTStageQuestionReviewModeBackButton==C||a.kCPOTStageQuestionSubmitButton==C||a.kCPOTScoringReviewButton==C||a.kCPOTScoringContinueButton==C||a.kCPOTSubmitAllButton==C||a.kCPOTResetButton==C||a.kCPOTUndoButton==C||a.kCPOTDDSubmitButton==C||a.kCPOTTextEntryButtonItem==C)||!(void 0!=s.subt&&s.subt==a.kTextButton)){q=a(c.id+"_vTxtHolder");r=a(c.id+"_vTxtHandlerHolder");l&&(q=c.drawingBoard,r=c);var I=[0,0,0,0],L=marginT= -marginR=marginB=0;s.autoGrow=a.autoGrow&&!l;L=s.rplm?s.rplm[a.ResponsiveProjWidth]:0;marginT=s.rptm?s.rptm[a.ResponsiveProjWidth]:0;marginR=s.rprm?s.rprm[a.ResponsiveProjWidth]:0;marginB=s.rpbm?s.rpbm[a.ResponsiveProjWidth]:0;var T=s.rptl?s.rptl[a.ResponsiveProjWidth]:a.TextLayoutEnum.kTLCenter,Z=s.rpta?s.rpta[a.ResponsiveProjWidth]:a.TextAlignmentEnum.kTACenter,z=p[a.ResponsiveProjWidth].vt,Q="";if(z){if(c.drawingBoard&&q){var p=rrm=rtm=rbm=0,J=C==a.kCPOTFillBlankCaption;if(!J||d){var da=y.hl;if(y&& -y.b&&q){var x=null,B=null,l=v+"-vtext",x=a(l),B=a(l+"_Handler"),n=a.movie.stage.getFrameset(c.id);if(q&&!x&&!B){if(y&&(n&&n.isStarted&&1==y.visible&&"visible"==q.style.visible)&&(m=!0),x=a.newElem("div"),x.className="cp-vtxt",x.setAttribute("aria-hidden","true"),x.id=l,F&&(x.style.left=F.style.left),x.style.cssText="word-wrap:break-word;white-space:pre-wrap;overflow:hidden;line-height:90%;",x.style.cssText+="",m||(x.style.visibility="hidden"),n&&n.htmlDependents.push(x),a.movie.stage.addToParentChildMap(c.id, -q.id),a.movie.stage.addToParentChildMap(c.id,l),q.appendChild(x),da||J)if(B=a.newElem("div"),B.className="cp-vtxt",B.id=l+"_Handler",B.style.cssText="word-wrap:break-word;white-space:pre-wrap;overflow:hidden;line-height:90%;",B.style.cssText+="",m||(B.style.visibility="hidden"),a.movie.stage.addToParentChildMap(c.id,r.id),a.movie.stage.addToParentChildMap(c.id,B.id),r.appendChild(B),J&&(a(c.id).style.overflow="visible",B.style.overflow="visible"),F)B.style.left=F.style.left}else{if(!n||!n.isStarted){c= -void 0;break a}o=D[v];if(!o&&(m=w.qdi))o=(u=D[m])?u.answertextCanvasShape:void 0;if(!o){c=void 0;break a}J||(x=a(l));x&&b&&(y&&1==y.visible&&o&&o.isDrawn)&&(x.style.visibility="visible");if(da||J){if((B=document.getElementById(l+"_Handler"))&&b&&y&&1==y.visible)B.style.visibility="visible",da&&(B.style.backgroundColor="#ffffff",B.style.opacity=0);F&&(B.style.left=F.style.left)}x&&(F&&(x.style.left=F.style.left),x.style.width="",x.style.height="");B&&(B.style.width="",B.style.height="");if(P){var ea= -[L+p,marginT+rtm,marginR+rrm,marginB+rbm];x&&a.updateTextBounds(x,o.actualParent,y.tb,ea);B&&a.updateTextBounds(B,o.actualParent,y.tb,ea)}if(I&&!P&&(x&&(x.style.left=I[0]+L+p+"px",x.style.top=I[1]+marginT+rtm+"px",x.style.right=I[2]+marginR+rrm+"px",x.style.bottom=I[3]+marginB+rbm+"px"),B))B.style.left=I[0]+L+p+"px",B.style.top=I[1]+marginT+rtm+"px",B.style.right=I[2]+marginR+rrm+"px",B.style.bottom=I[3]+marginB+rbm+"px"}}try{var H=x?x:B;if(void 0!=s.vars&&void 0!=s.varLens&&void 0!=s.texts){for(var S= -a.ResponsiveProjWidth,Y=s.vars[S],ba=s.varLens[S],ca=s.texts[S],g=Y.length,h=ca.length;!(Q+=ca[f++],ek&&(j=j.substr(0,k)),++e,Q+=j),f>=h););x&&!J&&(x.innerHTML=Q,a.responsiveType==a.kCPPMEAutoResponsive&&(a.adjustFontSizesForVariableText(x,{winH:x.clientHeight,winW:x.clientWidth},x.clientWidth),a.rescaleFontSizes()));if(da||J){da&&(z=Q);if(""==B.innerHTML||da&&B.innerHTML!=z)B.innerHTML=z,a.responsiveType==a.kCPPMEAutoResponsive&&(a.adjustFontSizesForVariableText(B, -{winH:B.clientHeight,winW:B.clientWidth},B.clientWidth),a.rescaleFontSizes());var V={captionName:c.id,reason:"updateResponsiveVarText",callbackFn:function(){B.innerHTML=z;if(a.responsiveType==a.kCPPMEAutoResponsive){a.adjustFontSizesForVariableText(B,{winH:B.clientHeight,winW:B.clientWidth},B.clientWidth);a.rescaleFontSizes()}}};a.em.fireEvent("CPInputControlReplacedEvent",V)}}else if(x&&(x.innerHTML!=z&&!J)&&(x.innerHTML=z,a.responsiveType==a.kCPPMEAutoResponsive&&(a.adjustFontSizesForVariableText(x, -{winH:x.clientHeight,winW:x.clientWidth},x.clientWidth),a.rescaleFontSizes())),da||J){if(""==B.innerHTML||da&&B.innerHTML!=z)B.innerHTML=z,a.responsiveType==a.kCPPMEAutoResponsive&&(a.adjustFontSizesForVariableText(x,{winH:B.clientHeight,winW:B.clientWidth},x.clientWidth),a.rescaleFontSizes());V={captionName:c.id,reason:"updateResponsiveVarText",callbackFn:function(){B.innerHTML=z;if(a.responsiveType==a.kCPPMEAutoResponsive){a.adjustFontSizesForVariableText(x,{winH:B.clientHeight,winW:B.clientWidth}, -x.clientWidth);a.rescaleFontSizes()}}};a.em.fireEvent("CPInputControlReplacedEvent",V)}d&&a.movie.stage.addHyperLinks({n:c.id,t:C},a(c.id));if(y.sh){b=!M;void 0!=y.fa&&(b=0==y.fa);var X;x&&(X=x.firstChild);var $;B&&($=B.firstChild);X&&X.firstChild&&a.applyShadow(X.firstChild,y.sh,b);$&&$.firstChild&&a.applyShadow($.firstChild,y.sh,b)}var ha=function(c){var b=c.clientWidth;if(J)b=c.parentElement.clientWidth;if(T===a.TextLayoutEnum.kTLBottom){var d=function(a){a.style.lineHeight="normal";if(a.children.length)for(var c= -0;cparseInt(H.parentElement.style.height)&&a.responsiveType==a.kCPPMEAutoResponsive&& -(N=H.parentElement.style.height);s.minItemHeight=N+fa;var ga=a.getMinMaxHeight(o.currentCSS);!isNaN(ga.maxH)&&s.minItemHeight>ga.maxH&&(s.minItemHeight=ga.maxH,N=s.minItemHeight-fa);b=!0;x&&(x.style.height=N+"px");B&&(B.style.height=N+"px")}}if(null!=A[v]&&null!=A[v].layout){if(c.style.height=A[v].layout.m_size.height-marginT-marginB+"px",c.style.width=A[v].layout.m_size.width-L-marginR+"px",c.style.left=A[v].layout.m_rect.m_left+L+"px",c.style.top=A[v].layout.m_rect.m_top+marginT+"px",c.firstChild.style.width= -c.style.width,parseInt(q.style.height)>A[v].layout.m_size.height-marginT-marginB&&(q.style.height=A[v].layout.m_size.height-marginT-marginB+"px"),parseInt(q.style.width)>A[v].layout.m_size.width-L-marginR&&(q.style.width=A[v].layout.m_size.width-L-marginR+"px"),q.parentElement.style.height=A[v].layout.m_size.height+"px",q.parentElement.style.width=A[v].layout.m_size.width+"px",q.parentElement.style.left=A[v].layout.m_rect.m_left+"px",q.parentElement.style.top=A[v].layout.m_rect.m_top+"px",x)if(parseFloat(x.style.height)+ -10>parseFloat(q.style.height)&&(x.style.height=parseFloat(q.style.height)-10+"px"),parseFloat(x.style.width)+10>parseFloat(q.style.width))x.style.width=parseFloat(q.style.width)-10+"px"}else{var E;E=v.slice(0,-1);if(A[E]&&x){ea=[L+p,marginT+rtm,marginR+rrm,marginB+rbm];x&&a.updateTextBounds(x,o.actualParent,y.tb,ea);B&&a.updateTextBounds(B,o.actualParent,y.tb,ea);var U,pa;U=x.getBoundingClientRect().bottom;pa=x.parentElement.getBoundingClientRect().bottom;U>pa&&(x.style.height=parseFloat(x.style.height)- -(U-pa)-marginB+"px")}}b&&(u?u.drawForResponsive(!0,a.ReasonForDrawing.kTextGrow):o.drawForResponsive(!0,a.ReasonForDrawing.kTextGrow))}}b=function(c){if(c){var b=x.clientHeight,d;d=a.responsiveType==a.kCPPMEAutoResponsive?ha(H):ia;c.style.width=d.width+"px";c.style.height=d.height+"px";c.style.position="absolute";switch(Z){case a.TextAlignmentEnum.kTARightJustify:c.style.textAlign="right";break;case a.TextAlignmentEnum.kTACenter:c.style.textAlign="center";break;default:c.style.textAlign="left"}switch(T){case a.TextLayoutEnum.kTLBottom:b= -b-d.height;J&&(b=H.parentElement.clientHeight-d.height);c.style.top=(b<0?0:b)+"px";break;case a.TextLayoutEnum.kTLCenter:b=(b-d.height)/2;J&&(b=(H.parentElement.clientHeight-d.height)/2);if(b>0){c.style.bottom="";c.style.top=b+"px"}break;default:c.style.top="0px"}}};x&&b(x.firstChild);B&&(b(B.firstChild),J&&(V={captionName:c.id,reason:"updateResponsiveVarText:textadjust"},a.em.fireEvent("CPInputControlReplacedEvent",V)));if(a.responsiveType==a.kCPPMEAutoResponsive){var K=s.type,ma=a.kCPOTScoringReviewButton== -K||a.kCPOTScoringContinueButton==K||a.kCPOTSubmitAllButton==K||a.kCPOTResetButton==K||a.kCPOTUndoButton==K||a.kCPOTDDSubmitButton==K||a.kCPOTRetakeButton==K||a.kCPOTStageQuestionNextButton==K||a.kCPOTStageQuestionClearButton==K||a.kCPOTStageQuestionBackButton==K||a.kCPOTStageQuestionReviewModeNextButton==K||a.kCPOTStageQuestionReviewModeBackButton==K||a.kCPOTStageQuestionSubmitButton==K||a.kCPOTStageAnswerLabel==K||a.kCPOTStageMatchingAnswerEntry==K;a.canAddTextExpIcon(H,s)&&!ma&&a.showOrHideExpandIcon(H, -c,!1)}}catch(ja){a.log(ja)}}}}else l=v+"-vtext",x=a(l),B=a(l+"_Handler"),(c=a(c.id+"_expandButtonDiv"))&&c.parentElement.removeChild(c),x&&x.parentElement.removeChild(x),B&&x.parentElement.removeChild(B)}}}}c=void 0}return c}O=ea=ma=K=V=0;W=R="";fa=!1;N=null;N=!1;b&&(N=!0);if(c.id&&(b=a.GetDataForElement(c,!0),U=a.D[c.id].mdi,b))if(la=b.vt,aa="",la){if(c.drawingBoard&&(W=b.mdi,G=null,W&&(G=a.D[W]),ga=c.drawingBoard,G&&G.b&&ga)){E=null;W=U+"-vtext";if(2>ga.children.length)void 0!=b.lm&&(L=b.lm,q=b.tm, -e=b.rm,f=b.bm),E=a.newElem("div"),E.className="cp-vtxt",E.id=W,N=a.movie.stage.getFrameset(c.id),G&&(N&&N.isStarted&&1==G.visible)&&(fa=!0),E.style.cssText="word-wrap:break-word;white-space:pre-wrap; width: "+(G.b[2]-G.b[0]-(L+e)+"px")+";height:"+(G.b[3]-G.b[1]-(q+f)+"px")+";line-height:90%;overflow:hidden;",U=""+("margin-left:"+(G.b[0]+L-G.vb[0])+"px;"),U+="margin-top:"+(G.b[1]+q-G.vb[1])+"px;",E.style.cssText+=U,fa||(E.style.visibility="hidden"),G.tr&&a.applyTransform(E,G.tr),G.sh&&a.applyShadow(E, -G.sh),N&&N.htmlDependents.push(E),a.movie.stage.addToParentChildMap(c.id,W),ga.appendChild(E);else if(c=D[U],(E=ga.children[1])&&N&&G&&1==G.visible&&c&&c.isDrawn)E.style.visibility="visible";try{if(void 0!=b.vars&&void 0!=b.varLens&&void 0!=b.texts){o=a.D.project.w;u=b.vars[o];v=b.varLens[o];y=b.texts[o];ma=u.length;for(ea=y.length;!(aa+=y[K++],VO&&(R=R.substr(0,O)),++V,aa+=R),K>=ea););E.innerHTML=aa}else E.innerHTML=la;a.responsiveType==a.kCPPMEAutoResponsive&& -(a.adjustFontSizesForVariableText(E,{winH:E.clientHeight,winW:E.clientWidth},E.clientWidth),a.rescaleFontSizes())}catch(ka){a.log(ka)}}}else(E=a(U+"-vtext"))&&E.parentElement.removeChild(E)};a.updateVariableTextBounds=function(c,b){var d=c.element;d&&a.updateVarText(d,!0,b)};a.updateNoSkipFramesAndUpdateVarText=function(c){c.element&&(a.responsive||a.updateVarText(c.element,!0));c.pa&&(a.movie.stage.noSkipFrames[c.pa]=c.pa);c.psv&&(a.movie.stage.noSkipFrames[c.psv]=c.psv)};a.RegisterExternalObjects= -function(c,b,d,e){a.IsValidObj(a.extObjInfo)||(a.extObjInfo=[]);for(var f=!1,g=0;gd||d>=c.length)break;for(b=d==c.length-1?0:d+1;bd||d>=c.length)break;for(b=0==d?c.length-1:d-1;0<=b&&a.isInbuiltState(c[b]);)b--;if(0>b)break;return b}return d};a.GetNextOrPreviousStateOfItemNotPresent=function(c,b,d){var e=-1,c=a.D[c];if(!c)return e;for(var c=c.stl,f=0;fb)break;return b}break}return e};a.setInitialVisibility=function(c){if(c){var b=[],d=!0,e=-1,f=a.D[c.element.id],g;if("undefined"!==c.baseStateItemID&&"undefined"!==c.initialState){if(-1==c.baseStateItemID)b=c.states,f&&f.visible&&(d=f.visible),e=c.currentState;else{var h=a.model.uidToDataMap[c.baseStateItemID];h&& -(g=a.D[h.dn],b=g.stl,d=h.effectiveVi,e=g.stis,g&&g.hasOwnProperty("currentState")&&(g=g.currentState,e=-1!=g?g:e))}if(!(0==b.length||-1==e)){(g=a.GetDataForElement(c.element,!0))&&(f=g);g=!1;if(c.currentStatea.movie.stage.lastFrame?a.movie.stage.lastFrame:cpInfoCurrentFrame,c=a.isVisible(c);d.push(b);a.movie.stage.getChildrenForParent(b, -d);for(i=0;ig.search("auto")?0>g.search("%")?g+f.m_left:0.01*e.width*parseFloat(g)+f.m_left+"px":g;d.t=0>k.search("auto")?0>k.search("%")?k+f.m_top:0.01*e.height*parseFloat(k)+f.m_top+"px":k;d.r=0>h.search("auto")?0>h.search("%")?h+f.m_left:0.01*e.width*parseFloat(h)+f.m_left+"px":h;d.b=0>j.search("auto")?0>j.search("%")? -j+f.m_top:0.01*e.height*parseFloat(j)+f.m_top+"px":j;d.w=0>l.search("auto")?0>l.search("%")?l:0.01*e.width*parseFloat(l)+"px":l;d.h=0>m.search("auto")?0>m.search("%")?m:0.01*e.height*parseFloat(m)+"px":m;0==e.width&&0==e.height&&(d.w="0px",d.h="0px")}}null!=d?(d.stickyItem?(a.stickyItem=!0,b.stickyItem=d.stickyItem):(b.stickyItem=!1,a.stickyItem=!1),b.isFlexItem=!0,a.isflexItem=!0,a.l=d.l,a.t=d.t,a.r=d.r,a.b=d.b,a.h=d.h,a.w=d.w):(b.isFlexItem=!1,a.stickyItem=!1)}};a.isPartOfFlex=function(a){return A[a.canvasObj.uid]}; -a.isSlidePSS=function(a){return a?void 0!=a.pss:!1};a.shouldDrawSlideInPannableMode=function(c){if(!a.isSlidePSS(c))return!1;c=a.D.project.w;return a.D.project.h>window.innerHeight||c>window.innerWidth?!0:!1};a.shouldDrawCurrentSlideInPannableMode=function(){var c;return a.movie.stage&&(c=a.movie.stage.currentSlide)?a.shouldDrawSlideInPannableMode(c):!1};a.getPSSSlidePanRect=function(c){if(!a.isSlidePSS(c))return{left:0,top:0,right:0,bottom:0};c=c.pss;return{left:c.l,top:c.t,right:c.r,bottom:c.b}}; -a.createDashPlayer=function(c,b){try{void 0!=Dash&&(source=document.createElement("source"),source.src=b,c.dashMediaPlayer&&(c.dashMediaPlayer.reset(),c.dashMediaPlayer=null),c.dashMediaPlayer=Dash.create(c,source))}catch(d){a.log("error in creating dash player:"+d)}};a.isBrightCoveUrl=function(c){var b=!1,d;for(d in a.ACAPVideoStreamingURLMap)if(a.ACAPVideoStreamingURLMap[d]==c){b=!0;break}return b};a.attachDashPlayerToVideoChannel=function(c,b){c&&"video"===c.tagName.toLowerCase()&&(c.className= -"dashjs-player",c.autoplay=!1,c.cpSrc=b,c.dashPlayer=a.createDashPlayer(c,b))};a.setSrcAndLoadVideoChannel=function(c,b){try{a.IsRunningInACAP&&a.isBrightCoveUrl(b)?a.attachDashPlayerToVideoChannel(c,b):(a.setSrcForVideoChannel(c,b),c.load())}catch(d){console.error("setSrcAndLoadVideoChannel error: "+d)}};a.setSrcForVideoChannel=function(c,b){a.IsRunningInACAP&&a.isBrightCoveUrl(b)?(c.cpSrc=b,a.attachDashPlayerToVideoChannel(c,b)):(c.cpSrc=b,c.src=b)};a.isDashPlayerAttached=function(a){return"dashjs-player"=== -a.className};a.playAudioOrVideoChannel_Safari11Workaround=function(a){return a.play()};a.makeAsAccessibleButton=function(a){if(a){var b=a.element,d=a.ariaLabel,e=a.tabIndex||"0",f=a.clickTarget||a.element;b&&(b.setAttribute("tabindex",e),b.setAttribute("role","button"),d&&b.setAttribute("aria-label",d),b.addEventListener("keyup",function(a){a=a.keyCode;if((13==a||32==a)&&f&&"function"==typeof f.onclick)return f.onclick.call(f)}))}};a.autoPlayNeedsUserClick=function(){return!0};a.showNavToggleButton= -function(c){if(!a.navToggleButton){a.navToggleButton=document.createElement("img");a.navToggleButton.id="navToggle";a.navToggleButton.style.position="relative";a.navToggleButton.style.left="16px";a.navToggleButton.style.top="16px";a.navToggleButton.style.zIndex="1000";a.navToggleButton.style.width="52px";a.navToggleButton.style.height="52px";var b=document.getElementById("project_main");b&&a.device==a.DESKTOP?b.appendChild(a.navToggleButton):document.body.appendChild(a.navToggleButton);a.navToggleButton.onclick= -function(){if((a.device==a.IDEVICE||a.device==a.ANDROID||a.inVR)&&a.responsiveType!=a.kCPPMEVR)0==a.gestureEnabled?(a.gestureEnabled=1,a.m_gestureHandler.enableGestures()):(a.gestureEnabled=0,a.m_gestureHandler.disableGestures()),imgSrc=a.gestureEnabled?"assets/htmlimages/360_slide_OFF_Normal.svg":"assets/htmlimages/360_slide_ON_normal.svg",a.navToggleButton.setAttribute("src",imgSrc)}}a.gestureEnabled=!c;imgSrc=a.gestureEnabled?"assets/htmlimages/360_slide_OFF_Normal.svg":"assets/htmlimages/360_slide_ON_normal.svg"; -a.navToggleButton.setAttribute("src",imgSrc);a.navToggleButton&&(a.navToggleButton.hidden=!c,a.navToggleButton.style.visibility=c?"visible":"hidden");c?a.m_gestureHandler.disableGestures():a.m_gestureHandler.enableGestures()};a.toggleEnterVR=function(){if(a.IsRunningInACAP){var c={};c.inVR=a.inVR;a.em.fireEvent("CPEnterVR",c)}};a.playVideoChannel=function(c){if(!a.IsRunningInACAP||!a.isBrightCoveUrl(c.cpSrc))a.playAudioOrVideoChannel_Safari11Workaround(c);else{c.shouldRetryPlayIfFails=!0;var b=function(b){if(b.shouldRetryPlayIfFails&& -b.paused)return a.playAudioOrVideoChannel_Safari11Workaround(b);throw"play failed";}.bind(null,c),d=function(a){if(a.shouldRetryPlayIfFails)return"should retry";throw"should not retry";}.bind(null,c);if("undefined"===typeof Promise){c.cpIsPlayErrorCallbackAttached||(c.cpIsPlayErrorCallbackAttached=!0,c.addEventListener("error",function(a){try{4==a.srcElement.error.code&&(a.stopPropagation(),setTimeout(function(){try{b()}catch(a){}},200))}catch(c){}}));try{b()}catch(e){}}else{for(var c=function(){return new Promise(function(a, -b){setTimeout(b.bind(null,"reject"),200)})},f=Promise.reject(),g=0;5>g;g++)f=f["catch"](b)["catch"](d).then(c);f["catch"](function(){})}}};a.pauseVideoChannel=function(a){a.shouldRetryPlayIfFails=!1;a.pause()};a.loadVideoChannel=function(c,b){try{a.IsRunningInACAP&&a.isBrightCoveUrl(b)?a.attachDashPlayerToVideoChannel(c,b):c.load()}catch(d){console.error("loadVideoChannel error: "+d)}};a.addClass=function(a,b){arr=a.className.split(" ");-1==arr.indexOf(b)&&(a.className+=" "+b)};a.removeClass=function(a, -b){var d=a.className.split(" "),e=d.indexOf(b);0=a.IOS5))a.waitForAudio=!0}else navigator.userAgent.match(/android/i)?(a.device=a.ANDROID, -a.OS=a.ANDROIDOS,a.waitForAudio=!0,a.accOutlineStyleStr="outline-style:none"):navigator.userAgent.match(/Silk/i)&&(a.device=a.KINDLE);navigator.userAgent.match(/MSIE/i)?(a.browser=a.MSIE,a.browserVersion=a.getCurrentBrowserVersion(navigator.userAgent,"MSIE")||a.getCurrentBrowserVersion(navigator.appVersion,"MSIE")||a.UNKNOWN):navigator.userAgent.match(/Edge/i)?(a.browser=a.MSEDGE,a.browserVersion=a.getCurrentBrowserVersion(navigator.userAgent,"Edge")||a.getCurrentBrowserVersion(navigator.appVersion, -"Edge")||a.UNKNOWN):navigator.userAgent.match(/Firefox/i)?(a.browser=a.FIREFOX,a.accOutlineStyleStr="outline-style:none",a.OS==a.WINDOWS?a.FF_MIN_SUPPORTED_VERSION=a.FF_MIN_SUPPORTED_VERSION_WIN:a.OS==a.MACOS?a.FF_MIN_SUPPORTED_VERSION=a.FF_MIN_SUPPORTED_VERSION_MAC:a.OS==a.ANDROIDOS&&(a.FF_MIN_SUPPORTED_VERSION=a.FF_MIN_SUPPORTED_VERSION_ANDROID),a.browserVersion=a.getCurrentBrowserVersion(navigator.userAgent,"Firefox")||a.getCurrentBrowserVersion(navigator.appVersion,"Firefox")||a.UNKNOWN):navigator.userAgent.match(/Chrome/i)? -(a.browser=a.CHROME,a.accOutlineStyleStr="outline-style:none",a.browserVersion=a.getCurrentBrowserVersion(navigator.userAgent,"Chrome")||a.getCurrentBrowserVersion(navigator.appVersion,"Chrome")||a.UNKNOWN):navigator.userAgent.match(/Safari/i)?(a.browser=a.SAFARI,a.browser_supports_svg=!1,a.accOutlineStyleStr="outline-style:none",a.browserVersion=a.getCurrentBrowserVersion(navigator.userAgent,"Version")||a.getCurrentBrowserVersion(navigator.appVersion,"Version")||a.UNKNOWN):navigator.userAgent.match(/Netscape/i)? -(a.browser=a.NETSCAPE,a.browserVersion=a.getCurrentBrowserVersion(navigator.userAgent,"Netscape")||a.getCurrentBrowserVersion(navigator.appVersion,"Netscape")||a.UNKNOWN):navigator.userAgent.match(/Opera/i)?(a.browser=a.OPERA,a.browserVersion=a.getCurrentBrowserVersion(navigator.userAgent,"Version")||a.getCurrentBrowserVersion(navigator.appVersion,"Version")||a.UNKNOWN):navigator.userAgent.match(/Camino/i)?(a.browser=a.CAMINO,a.browserVersion=a.getCurrentBrowserVersion(navigator.userAgent,"Camino")|| -a.getCurrentBrowserVersion(navigator.appVersion,"Camino")||a.UNKNOWN):navigator.userAgent.match(/Firebird/i)?a.browser=a.FIREBIRD:navigator.userAgent.match(/Trident/i)&&"netscape"==navigator.appName.toLowerCase()&&(a.browser=a.MSIE,a.browserVersion=a.getCurrentBrowserVersion(navigator.userAgent,"rv")||a.UNKNOWN);a.NameBasedConstants={MSI:{stateOf:"state_of_",to:"_to_",statesVisited:"states_completed_"}};a.verbose&&(a.log("browser = "+a.browser),a.log("browserVersion = "+a.browserVersion),a.log("device = "+ -a.device),a.device==a.IDEVICE&&(a.log("device flavor = "+a.deviceFlavor),a.log("IOS Version = "+a.IOSMajor+"_"+a.IOSMinor+"_"+a.IOSBuild)),a.log("browser_supports_svg = "+a.browser_supports_svg))})(window.cp); -(function(b){function g(c,a){try{c.id?b.updateVarText(c):c(a)}catch(d){}}function j(c){if("CPVariableValueChangedEvent"==c.cpName){var a=EventListeners[b.VARIABLE_CHANGED_EVENT];d(c,a);for(a=0;ac&&(c=0);1a||a>=b.movie.stage.slides.length)&&!b.movie.stage.hasOverlaySlide())cpCmndResume=!0;else{var c=b.movie.stage.getSlideNameForIndex(a);(c=b.D[c])&&b.movie.jumpToFrame(c.from); -svvi("",a,["cpCmndGotoSlide","rdcmndGotoSlide"])}}function Y(a){var c=b.movie.speed;switch(b.movie.speed){case 1:case 2:b.movie.speed*=2;break;default:b.movie.speed=1}c!=b.movie.speed&&(b.movie.resetFPS(),1==b.movie.speed?(b.movie.am.seekTo(cpInfoCurrentFrame),b.movie.vdm.seekTo(cpInfoCurrentFrame,!1)):b.movie.am.pause(b.ReasonForPause.PLAYBAR_ACTION),0!=g&&(0!=g&&(clearInterval(g),g=0),C()),svvi("",cpInfoFPS,["cpInfoFPS","rdinfoFPS"]),svvi("cpCmndFastForward",a,["cpCmndFastForward"]))}function Z(a){svvi("cpLockTOC", -a,["cpLockTOC"]);b.em.fireEvent("CPTocStateChanged",{visible:!!cpCmndTOCVisible,locked:!!a})}function $(){return vh._cpLockTOC}function aa(a){var c=document.getElementById("toc");void 0!=c&&b.D.tocProperties.overlay&&(c.animator&&(a?c.animator.showTOC():c.animator.hideTOC()),b.IsRunningInACAP&&(b.ACAPTOCVisibility=a),svvi("cpCmndTOCVisible",a,["cpCmndTOCVisible"]),b.IsRunningInACAP||b.em.fireEvent("CPTocStateChanged",{visible:!!a,locked:!!cpLockTOC}))}function ba(){var a=document.getElementById("toc"); -return void 0!=a&&a.animator?a.animator.isVisible():b.IsRunningInACAP&&void 0!=b.ACAPTOCVisibility?b.ACAPTOCVisibility:!1}function ca(a){var c=-1;if(b.movie.stage.isOverlaySlideIndex(a)&&(c=b.movie.stage.getFrameOfOverlaySlide(a))){b.movie.jumpToFrame(c);b.movie.play();svvi("",a,["cpCmndGotoSlideAndResume"]);return}b.movie.stage.isThreeDSlideIndex(a)&&b.ThreeDQuestionHelper&&b.ThreeDQuestionHelper.set360QuizMode(!1);if((0>a||a>=b.movie.stage.slides.length)&&!b.movie.stage.hasOverlaySlide())cpCmndResume= -!0;else{var d=b.movie.stage.getSlideNameForIndex(a),d=b.D[d];b.movie.stage.is360QSlideIndex(a)?(c=b.movie.stage.getFrameOf360QSlide(a),b.ThreeDQuestionHelper.setActiveQSlideIndex(a),b.isInReviewMode()&&d&&b.ThreeDQuestionHelper.setActiveHotspot(d.phtsptname)):d&&(c=d.from);b.movie.jumpToFrame(c);b.movie.play();svvi("",a,["cpCmndGotoSlideAndResume"])}}function da(a){var c="Slide"+a,d=b.D[c];if(d){var e=d.from,c=b.movie.stage.getSlideIndexForName(c);d.iols?e=b.movie.stage.getFrameOfOverlaySlide(c): -d.i360qs&&(e=b.movie.stage.getFrameOf360QSlide(c),b.ThreeDQuestionHelper.setActiveQSlideIndex(c),b.isInReviewMode()&&d&&b.ThreeDQuestionHelper.setActiveHotspot(d.phtsptname));b.movie.stage.isThreeDSlideIndex(c)&&b.ThreeDQuestionHelper&&b.ThreeDQuestionHelper.set360QuizMode(!1);b.movie.jumpToFrame(e);b.movie.play();svvi("",a,["cpCmndGotoSlideByUIDAndResume"])}}function D(){return vh._cpCmndExit}function E(a){svvi("cpCmndExit",a,["cpCmndExit","rdcmndExit"]);DoCPExit&&DoCPExit()}function l(a){a&&b.jumpToNextSlide(); -svvi("cpCmndNextSlide",a,["cpCmndNextSlide","cpCmndNext","rdcmndNextSlide","rdcmndNext"])}function F(a){a&&b.movie.pause(b.ReasonForPause.CPCMNDPAUSE);svvi("cpCmndPause",a,["cpCmndPause","rdcmndPause"])}function G(){return b.movie.paused}function H(a){svvi("cpCmndInfo",a,["cpCmndInfo","rdcmndInfo"])}function I(){return vh._cpCmndInfo}function ea(){return vh._cpInfoAuthor}function fa(){return vh._cpInfoDescription}function ga(){return vh._cpQuizInfoLastSlidePointScored}function ha(a){svvi("cpQuizInfoLastSlidePointScored", -a,["cpQuizInfoLastSlidePointScored"])}function ia(){return vh._cpQuizInfoPointsPerQuestionSlide}function ja(a){svvi("cpQuizInfoPointsPerQuestionSlide",a,["cpQuizInfoPointsPerQuestionSlide"])}function ka(){return vh._cpQuizInfoNegativePointsOnCurrentQuestionSlide}function la(a){svvi("cpQuizInfoNegativePointsOnCurrentQuestionSlide",a,["cpQuizInfoNegativePointsOnCurrentQuestionSlide"])}function ma(){return!!vh._cpQuizInfoQuestionPartialScoreOn}function na(a){svvi("cpQuizInfoQuestionPartialScoreOn",a, -["cpQuizInfoQuestionPartialScoreOn"])}function oa(){return vh._cpInfoCurrentSlideLabel}function pa(a){svvi("cpInfoCurrentSlideLabel",a,["cpInfoCurrentSlideLabel"])}function qa(){return vh._cpQuizInfoQuizPassPercent}function ra(a){svvi("cpQuizInfoQuizPassPercent",a,["cpQuizInfoQuizPassPercent"])}function sa(){return vh._cpQuizInfoTotalProjectPoints}function ta(a){svvi("cpQuizInfoTotalProjectPoints",a,["cpQuizInfoTotalProjectPoints"])}function ua(){return vh._cpInfoPrevSlide}function va(a){svvi("cpInfoPrevSlide", -a,["cpInfoPrevSlide"])}function wa(){if(!b.movie)return 0;if(b.movie.playbackController){var a=b.movie.playbackController.GetQuizController();if(a)return a.GetTotalCorrectQuestions()}return 0}function xa(a){svvi("cpQuizInfoTotalCorrectAnswers",a,["cpQuizInfoTotalCorrectAnswers"])}function ya(){if(!b.movie)return 0;if(b.movie.playbackController){var a=b.movie.playbackController.GetQuizController();if(a)return a.GetTotalPretestCorrectQuestions()}return 0}function za(a){svvi("cpQuizInfoPreTestTotalQuestions", -a,["cpQuizInfoPreTestTotalQuestions"])}function Aa(){return vh._cpQuizInfoPreTestTotalQuestions}function Ba(a){svvi("cpQuizInfoPreTestTotalCorrectAnswers",a,["cpQuizInfoPreTestTotalCorrectAnswers"])}function Ca(){if(!b.movie)return 0;if(b.movie.playbackController){var a=b.movie.playbackController.GetQuizController();if(a){var c=a.GetScore(),a=a.GetMaxScore();if(0!=a)return Math.round(100*c/a)}}return 0}function Da(a){svvi("cpInfoPercentage",a,["cpInfoPercentage"])}function Ea(){return vh._cpQuizInfoTotalQuestionsPerProject} -function Fa(a){svvi("cpQuizInfoTotalQuestionsPerProject",a,["cpQuizInfoTotalQuestionsPerProject"])}function Ga(){return vh._cpQuizInfoQuizPassPoints}function Ha(a){svvi("cpQuizInfoQuizPassPoints",a,["cpQuizInfoQuizPassPoints"])}function Ia(){return vh._cpQuizInfoQuestionSlideType}function Ja(a){svvi("cpQuizInfoQuestionSlideType",a,["cpQuizInfoQuestionSlideType"])}function Ka(){return!b.movie||!b.movie.playbackController?0:b.movie.playbackController.GetTotalUnansweredQuestions()}function La(a){svvi("cpQuizInfoTotalUnansweredQuestions", -a,["cpQuizInfoTotalUnansweredQuestions"])}function Ma(){return vh._cpInfoLastVisitedSlide}function Na(a){svvi("cpInfoLastVisitedSlide",a,["cpInfoLastVisitedSlide"])}function Oa(){return vh._cpQuizInfoMaxAttemptsOnCurrentQuestion}function Pa(a){svvi("cpQuizInfoMaxAttemptsOnCurrentQuestion",a,["cpQuizInfoMaxAttemptsOnCurrentQuestion"])}function Qa(){return vh._cpQuizInfoQuestionSlideTiming}function Ra(a){svvi("cpQuizInfoQuestionSlideTiming",a,["cpQuizInfoQuestionSlideTiming"])}function Sa(){return vh._cpInfoCompany} -function Ta(){return vh._cpQuizInfoAnswerChoice}function Ua(a){svvi("cpQuizInfoAnswerChoice",a,["cpQuizInfoAnswerChoice"])}function Va(){return vh._cpQuizInfoNoQuestionsPerQuiz}function Wa(a){svvi("cpQuizInfoNoQuestionsPerQuiz",a,["cpQuizInfoNoQuestionsPerQuiz"])}function Xa(){if(!b.movie)return 0;if(b.movie.playbackController){var a=b.movie.playbackController.GetQuizController();if(a)return a.GetScore()}return 0}function Ya(a){svvi("cpQuizInfoPointsscored",a,["cpQuizInfoPointsscored"])}function Za(){return vh._cpInfoCopyright} -function $a(){return vh._cpInfoWebsite}function ab(){return vh._cpInfoProjectName}function bb(){return vh._cpInfoEmail}function cb(){return!1}function db(){return vh._cpInfoHasPlaybar}function eb(){return vh._cpQuizInfoAttempts}function fb(a){svvi("cpQuizInfoAttempts",a,["cpQuizInfoAttempts"])}function gb(){return b.D.project_main.to}function hb(){return vh._cpQuizInfoTotalQuizPoints}function ib(a){svvi("cpQuizInfoTotalQuizPoints",a,["cpQuizInfoTotalQuizPoints"])}function m(a){var b=""+a;0<=a&&10> -a&&(b="0"+b);return b}function J(){var a=new Date,c=a.getTime();vh._cpInfoEpochMS!=c&&svvi("cpInfoEpochMS",c,["cpInfoEpochMS"]);c=cpInfoEpochMS-b.movie.startTime;vh._cpInfoElapsedTimeMS!=c&&svvi("cpInfoElapsedTimeMS",c,["cpInfoElapsedTimeMS"]);c=a.getMinutes();vh._cpInfoCurrentMinutes!=c&&svvi("cpInfoCurrentMinutes",c,["cpInfoCurrentMinutes"]);vh._cpInfoCurrentHour!=a.getHours()&&svvi("cpInfoCurrentHour",a.getHours(),["cpInfoCurrentHour"]);c=a.getHours()+":"+m(a.getMinutes())+":"+m(a.getSeconds()); -vh._cpInfoCurrentTime!=c&&svvi("cpInfoCurrentTime",c,["cpInfoCurrentTime"]);vh._cpInfoCurrentDay!=a.getDay()+1&&svvi("cpInfoCurrentDay",a.getDay()+1,["cpInfoCurrentDay"]);vh._cpInfoCurrentYear!=a.getFullYear()&&svvi("cpInfoCurrentYear",a.getFullYear(),["cpInfoCurrentYear"]);vh._cpInfoCurrentMonth!=a.getMonth()+1&&svvi("cpInfoCurrentMonth",Number(m(a.getMonth()+1)),["cpInfoCurrentMonth"]);vh._cpInfoCurrentDate!=a.getDate()&&svvi("cpInfoCurrentDate",Number(m(a.getDate())),["cpInfoCurrentDate"]);c=a.getMonth()+ -1+"/"+a.getDate()+"/"+a.getFullYear();vh._cpInfoCurrentDateString!=c&&svvi("cpInfoCurrentDateString",c,["cpInfoCurrentDateString"]);c=a.getDate()+"/"+(a.getMonth()+1)+"/"+a.getFullYear();vh._cpInfoCurrentDateStringDDMMYYYY!=c&&svvi("cpInfoCurrentDateStringDDMMYYYY",c,["cpInfoCurrentDateStringDDMMYYYY"]);a=a.toLocaleDateString(window.navigator.userLanguage||window.navigator.language,{day:"numeric",month:"long",year:"numeric",weekday:"long"});vh._cpInfoCurrentLocaleDateString!=a&&svvi("cpInfoCurrentLocaleDateString", -a,["cpInfoCurrentLocaleDateString"])}function C(){0==g&&(J(),g=setInterval(J,1E3/cpInfoFPS))}function jb(){return vh._cpInfoCurrentDateString}function kb(){return vh._cpInfoCurrentDateStringDDMMYYYY}function lb(){return vh._cpInfoCurrentLocaleDateString}function mb(){return vh._cpInfoCurrentDate}function nb(){return vh._cpInfoCurrentMonth}function ob(){return vh._cpInfoCurrentYear}function pb(){return vh._cpInfoCurrentDay}function qb(){return vh._cpInfoCurrentTime}function rb(){return vh._cpInfoCurrentHour} -function sb(){return vh._cpInfoCurrentMinutes}function tb(){return vh._cpInfoEpochMS}function ub(){return vh._cpInfoElapsedTimeMS}function vb(){var a=b.movie.stage.currentSlide,c="";if(a&&(c=a.st)&&"Question Slide"==c)a=a.qnq,void 0!=a&&(a=b.movie.questionObjs[a].questionData)&&(a.ikc&&!0==a.ikc)&&(c="Normal Slide");return c}function wb(){var a=b.movie.stage.currentSlide;return a&&(slideType=a.st)&&"Question Slide"==slideType&&void 0==a.qnq?!0:!1}function xb(){if(!b.movie)return!1;if(b.movie.playbackController){var a= -b.movie.playbackController.GetQuizController();if(a)return a.GetIsPassed()}return!1}function K(){return 0}function yb(){return vh._cpInfoPrevFrame}function h(){return vh._cpInfoCurrentFrame}function zb(a){var c=a.smoothAdvance,a=c?a.currFrame:a,d=h();svvi("cpInfoPrevFrame",d,[]);svvi("cpInfoCurrentFrame",a,["cpInfoCurrentFrame","rdinfoCurrentFrame"]);c||(b.movie.resetMovieElapsedTime(),b.em.fireEvent("CPNonSmoothFrameAdvance",{currentFrameInfo:cpInfoCurrentFrame}))}function n(){return b.movie.stage.hasOverlaySlide()? -vh._cpInfoCurrentFrameAtLayerZero:h()}function Ab(a){svvi("cpInfoCurrentFrameAtLayerZero",a,["cpInfoCurrentFrameAtLayerZero","rdinfoCurrentFrameAtLayerZero"])}function L(){return cpInfoCurrentSlide-1}function Bb(){return vh._cpInfoCurrentSlide}function Cb(a){svvi("cpInfoCurrentSlide",a,["cpInfoCurrentSlide"])}function M(){return b.movie.stage.slides.length}function N(){return b.movie.fps*b.movie.speed}function Db(){return vh._cpQuizScopeSlide}function Eb(a){svvi("cpQuizScopeSlide",a,["cpQuizScopeSlide"])} -function Fb(){return vh._cpInQuizScope}function Gb(a){if(cpInfoHasPlaybar&&b.movie&&b.movie.playbackController){var c=b.movie.playbackController.GetQuizController();c&&c.GetHidePlaybarInQuiz()&&(cpCmndShowPlaybar=a&&!c.GetIsInReviewMode()?0:1)}svvi("cpInQuizScope",a,["cpInQuizScope"])}function Hb(){if(!b.movie||!b.movie.playbackController)return 0;var a=b.movie.playbackController.GetQuizController();return a?a.GetPretestScore():0}function Ib(){return!b.movie||!b.movie.playbackController?!1:(lQuizController= -b.movie.playbackController.GetQuizController())?!!lQuizController.GetIsInReviewMode():!1}function Jb(){if(!b.movie||!b.movie.playbackController)return 0;var a=b.movie.playbackController.GetQuizController();return a?a.GetMaxPretestScore():0}function Kb(){if(!b.movie||!b.movie.playbackController)return 0;var a=b.movie.playbackController.GetQuizController();if(a){var c=a.GetMaxPretestScore(),a=a.GetPretestScore();return void 0==c||0>=c||void 0==a||0>=a?0:Math.round(100*a/c)}return 0}function Lb(a){if(b.movie&& -b.movie.playbackController){var c=b.movie.playbackController.GetQuizController();c&&c.GotoQuizScopeSlide(a)}}function Mb(){return vh._cpInfoCourseID}function Nb(){return vh._cpInfoCourseName}function O(){return vh._cpInfoGeoLocation?vh._cpInfoGeoLocation:""}function P(a){svvi("cpInfoGeoLocation",a,["cpInfoGeoLocation"]);b.movie&&(!b.movie.virgin&&b.D.geoProps.geoAct&&0window.innerHeight?(c=window.innerWidth,d=window.innerHeight):(c=window.innerHeight,d=window.innerWidth),c=a.getCorrectBreakpoint(c),d=a.getCorrectBreakpoint(d),c=1==this.includedInViews[c]||1==this.includedInViews[d]):a.m_isPreview?c=!0:(c=a.getCorrectBreakpoint(window.innerWidth),c=1==this.includedInViews[c])}return c}, -load:function(c,d){if(!(void 0==this.src||""==this.src||null==this.src))if(!a.responsive||this.isIncludedInView()||!a.responsiveType!=a.kCPPMEVR)if(this.im.verbose&&(a.log("load (monitor = "+d+") "+this.src),this.complete&&a.log("completed"),this.nativeImage.onload&&a.log("onload is set")),!this.complete&&!this.nativeImage.onload&&(this.monitor=!0==d?!0:!1,this.nativeImage.onload=this.monitorFunc),!this.complete&&this.nativeImage.onload&&!0==d&&(this.monitor=!0),this.loaders[c]=1,this.im.verbose&& -a.log("loaded by = "+c),!0!=d&&(this.preloaded=!0),""==this.nativeImage.src)return this.im.verbose&&a.log("loading "+this.src),this.setImageDataURI(this.nativeImage,this.src),!0},setImageDataURI:function(c,d){a.movie.im.getImageDataURI(d,function(a){-1!=a.indexOf("data:image/svg;base64,")&&(a=a.substr(22,a.length-1),a="data:image/svg+xml,"+atob(a));c.src=a})},unload:function(c){this.im.verbose&&a.log("unload "+this.src+" preloaded = "+this.preloaded);this.loaders[c]&&delete this.loaders[c];var c= -0,d;for(d in this.loaders)++c;return 0==c?(this.im.verbose&&a.log("unloading "+this.src),this.nativeImage.src="",this.nativeImage=new Image,this.nativeImage.cpImage=this,this.monitor=this.preloaded=this.complete=!1,!0):!1}};a.ImageManager=function(){a.movie.im=this;this.images={};this.preloadingProjectImages=!1;this.m_projectImages={};this.verbose=!1;this.reset();for(var c=a.model.projectImages,d=0;d0)for(b=0;b=a.MSIE_MIN_SUPPORTED_VERSION||a.browser==a.FIREFOX&&a.browserVersion>=a.FF_MIN_SUPPORTED_VERSION||a.OS==a.WINDOWS&& -a.browser==a.CHROME&&a.browserVersion>=a.CHROME_MIN_SUPPORTED_VERSION||a.device==a.IDEVICE&&a.IOSMajor>=a.IOS4||a.device==a.ANDROID)this.enabled=!0;this.verbose&&a.log("MediaSeeker enabled = "+this.enabled)};a.MediaSeeker.prototype={resetFlags:function(a){delete a.retryCount;delete a.lastKnownBuffered;delete a.thulped;delete a.resting;delete a.rested;delete a.failure1;delete a.failure2},addToQueue:function(a){this.enabled&&(this.retryQueue[a.id]=a,a.retryCount=1,a.lastKnownBuffered=0,a.thulped=!1, -a.resting=!1,a.rested=!1,a.failure1=0,a.failure2=0)},removeFromQueue:function(a){this.enabled&&(this.resetFlags(a),delete this.retryQueue[a.id])},inQueue:function(a){return!this.enabled?!1:this.retryQueue[a.id]?!0:!1},hasSeeked:function(b){if(!this.enabled)return!0;++b.retryCount;var c=b.nativeAudio;c||(c=b.nativeVideo);if(!c)return this.verbose&&a.log("MediaSeeker: no native media to seek "+b.id),!0;if(a.device==a.IDEVICE&&3>c.readyState)return!1;if(void 0==b.seekToTime)return this.verbose&&a.log("MediaSeeker: seekToTime is undefined "+ -b.id),!0;if(b.thulped)return 3>b.retryCount||(this.verbose&&a.log("retrying thulped media "+b.id+" seekToTime = "+b.seekToTime),b.thulped=!1,b.retryCount=0,a.setSrcAndLoadVideoChannel(c,b.src)),!1;if(b.resting)return 3<=b.retryCount&&(this.verbose&&a.log("retrying rested media "+b.id+" seekToTime = "+b.seekToTime),b.resting=!1,b.rested=!0,b.retryCount=0),!1;0>b.seekToTime&&(b.seekToTime=0);if(isNaN(c.duration)||!isFinite(c.duration)){this.verbose&&a.log("MediaSeeker: duration is NAN "+b.id);if(0== -b.seekToTime)return!0;if(b.rested){b.rested=!1;++b.failure1;if(2<=b.failure1)return a.exceptionalLogs&&console.log(b.id+" gotStuck while seeking (NAN). gave up seeking"),!0;b.thulped=!0;try{c.src="_cp_n_m_"}catch(e){}try{c.load()}catch(d){}}else b.resting=!0;return!1}if(b.src!==c.cpSrc&&b.nativeVideo)return b.seekToTimeInNewSource=b.seekToTime,!0;b.seekToTime>c.duration&&(b.seekToTime=c.duration);var f=!0;try{c.currentTime=b.seekToTime;var i=Math.abs(c.currentTime-b.seekToTime);if(0.05<=i){var f= -!1,g=c.buffered;g.end(g.length-1);if(b.lastKnownBuffered==g)if(b.rested){b.rested=!1;++b.failure2;if(2<=b.failure2)return a.exceptionalLogs&&console.log(b.id+" gotStuck while seeking (CONST BUFF). gave up seeking"),!0;b.thulped=!0;try{c.src="_cp_n_m_"}catch(h){}try{c.load()}catch(j){}}else b.resting=!0;else b.lastKnownBuffered=g}}catch(k){i=Math.abs(c.currentTime-b.seekToTime),f=0.05<=i?!1:!0}this.verbose&&f&&a.log("MediaSeeker: "+b.id+" currentTime = "+c.currentTime);return f},pendingItems:function(){if(!this.enabled)return 0; -var b=0,c;for(c in this.retryQueue){var e=this.retryQueue[c];this.hasSeeked(e)?(delete e.seekToTime,this.removeFromQueue(e),e.revoke&&(delete e.revoke,this.verbose&&a.log("MediaSeeker revoking play of "+e.id),e.seekToTimeInNewSource||e.play())):++b}this.verbose&&(b&&this.numPending!=b)&&a.log("MediaSeeker: "+b+" items pending seek");this.numPending=b;a.verbose&&0(new Date).getTime()-a.lastMediaPlayReqTime.getTime())if(a.movie.paused){this.am.verbose&&a.log("crowded request postponed "+this.id);var b=this; -setTimeout(function(){b.play()},50)}else this.am.verbose&&a.log("crowded request denied "+this.id);else{if(this.paused=!1,this.am.verbose&&a.log("AdObjPlay "+this.id+" "+this.src),this.nativeAudio||this.am.allocAudioChannel(this,a.IDEVICE!=a.device&&a.device!=a.ANDROID),this.nativeAudio)this.isSeekPending()?this.finishPendingSeek():(a.device==a.IDEVICE&&a.multiAudioTrack&&(a.lastMediaPlayReqTime=new Date),-1==this.from&&(-1==this.to&&this.nativeAudio&&this.nativeAudio.currentTime&&0!=this.nativeAudio.currentTime)&& -(this.nativeAudio.currentTime=0),a.playAudioOrVideoChannel_Safari11Workaround(this.nativeAudio))}else if(a.device==a.IDEVICE&&!a.multiAudioTrack&&this.nativeAudio)if(this.lastTime==this.nativeAudio.currentTime){if(++this.gotStuck,30<=this.gotStuck){a.exceptionalLogs&&a.log(this.id+" "+this.src+" gotStuck @"+this.nativeAudio.currentTime);this.gotStuck=0;try{this.nativeAudio.src="_cp_n_m_"}catch(c){}this.nativeAudio.src=this.src;this.nativeAudio.load();a.playAudioOrVideoChannel_Safari11Workaround(this.nativeAudio)}}else this.lastTime= -this.nativeAudio.currentTime,this.gotStuck=0},resetAndPlay:function(){this.am.verbose&&a.log("AudioObject "+this.id+" resetAndPlay()");this.ended=!1;this.setCurrentTime(0);this.play()},show:function(){this.am.verbose&&a.log("AudioObject "+this.id+" show()");this.hidden=!1;this.shownAt=cpInfoCurrentFrame;this.resetAndPlay()},hide:function(){this.am.verbose&&a.log("AudioObject "+this.id+" hide()");this.hidden=!0;delete this.shownAt;this.pause()},pause:function(){if(!this.paused&&this.am.webAudio&&this.am.pauseWebAudio(this.src))!0=== -this.onEndAutoPlayMovie&&a.movie.play(),this.paused=!0,this.am.verbose&&a.log("webAudio:pause "+this.id+" "+this.src);else if(this.isSeekPending()&&(this.am.verbose&&this.revoke&&a.log("AdObjPause deleting revoke "+this.id),delete this.revoke),!this.paused)this.paused=!0,this.am.verbose&&a.log("AdObjPause "+this.id+" "+this.src),this.nativeAudio&&(this.nativeAudio.pause(),this.nativeAudio.pausedAt=(new Date).getTime())},setLoop:function(b,c){this.loop=b;this.loopFrames=c;a.IDEVICE==a.device||a.device== -a.ANDROID?this.cploop=b:this.nativeAudio&&(b?this.nativeAudio.loop=!0:delete this.nativeAudio.loop)},setCurrentTime:function(b){if(!(-1==this.from&&-1==this.to))if(this.am.verbose&&a.log("AudioObject "+this.id+" setCurrentTime("+b+")"),this.nativeAudio)if(this.am.verbose&&a.log("this.nativeAudio.currentTime = "+this.nativeAudio.currentTime),0.1>Math.abs(this.nativeAudio.currentTime-b))this.am.verbose&&a.log("not seeking delta < 0.1"),a.movie.ms.inQueue(this)||delete this.seekToTime;else{delete this.seekToTime; -this.paused||(this.am.verbose&&a.log("setting revoke to true"),this.revoke=!0,this.pause());var c=!0;try{this.nativeAudio.currentTime=b;var e=Math.abs(this.nativeAudio.currentTime-b);0.05<=e&&(c=!1)}catch(d){e=Math.abs(this.nativeAudio.currentTime-b),c=0.05<=e?!1:!0}this.am.verbose&&a.log("seekSuccess = "+c);a.movie.ms.enabled?c?this.revoke&&(this.am.verbose&&a.log("revoking play"),delete this.revoke,this.play()):(this.am.verbose&&a.log("pause movie and add to seekQueue"),this.seekToTime=b,a.movie.ms.addToQueue(this)): -this.revoke&&(this.am.verbose&&a.log("revoking play"),delete this.revoke,this.play())}else this.seekToTime=b,this.am.verbose&&a.log("no native audio. Kept in pending...")},isSeekPending:function(){return-1==this.from&&-1==this.to?!1:void 0!=this.seekToTime},finishPendingSeek:function(){this.nativeAudio&&this.isSeekPending()&&(this.am.verbose&&a.log("AudioObject "+this.id+" finishPendingSeek"),this.setCurrentTime(this.seekToTime))},seekTo:function(b){if(-1==this.from&&-1==this.to)return!0;this.am.verbose&& -a.log("AudioObject "+this.id+" seekTo("+b+")");if(this.loop&&this.loopFrames){if(this.from<=b)return this.setCurrentTime((b-this.from)%this.loopFrames/cpInfoFPS),this.ended=!1,!0}else{if(this.from<=b&&this.to>=b)return this.setCurrentTime((b-this.from)/cpInfoFPS),this.ended=!1,!0;this.to>=b&&(this.setCurrentTime(0),this.ended=!1)}"bga"==this.id&&!this.loop&&(this.ended=!0);return!1}};a.ExtAudioObject=function(b,c,e,d,f){this.am=b;this.id=c;this.nativeAudio=null;this.src=a.getCorrectMediaPath(e);this.from= -d;this.to=f;this.hidden=this.ended=!1;this.paused=!0;this.cploop=this.loop=!1;this.gotStuck=0};a.ExtAudioObject.prototype={load:function(){this.nativeAudio&&this.nativeAudio.load()},play:function(){},pause:function(){this.paused||(this.paused=!0,this.nativeAudio&&(this.nativeAudio.pause(),this.nativeAudio.pausedAt=(new Date).getTime()))},isSeekPending:function(){return!1},finishPendingSeek:function(){},seekTo:function(){return!0},reset:function(){}};a.MediaView=function(b){this.a=b;a.MediaView.PROGRESS_WIDTH|| -(a.MediaView.PROGRESS_WIDTH=300,a.MediaView.STATUS1_WIDTH=100,a.MediaView.STATUS2_WIDTH=100,a.MediaView.STATUS3_WIDTH=100,a.MediaView.STATUS4_WIDTH=50,a.MediaView.STATUS_WIDTH=a.MediaView.STATUS1_WIDTH+a.MediaView.STATUS2_WIDTH+a.MediaView.STATUS3_WIDTH+a.MediaView.STATUS4_WIDTH,a.MediaView.LEFT_OFFSET=260,a.MediaView.TOP_OFFSET=5,a.MediaView.HEIGHT=15,a.MediaView.GAP=5,a.MediaView.NUM_MEDIA_VIEWS=0);this.view=a.newElem("div");this.status=a.newElem("div");this.status2=a.newElem("div");this.status3= -a.newElem("div");this.status4=a.newElem("div");this.progressBar=a.newElem("div");this.srcNameBar=a.newElem("div");this.downloaded=a.newElem("div");this.playHead=a.newElem("div");document.body.appendChild(this.view);this.view.appendChild(this.status);this.view.appendChild(this.status2);this.view.appendChild(this.status3);this.view.appendChild(this.status4);this.view.appendChild(this.progressBar);this.progressBar.appendChild(this.downloaded);this.progressBar.appendChild(this.playHead);this.progressBar.appendChild(this.srcNameBar); -this.view.style.cssText="z-index:100;display:block; position:fixed; left:"+a.MediaView.LEFT_OFFSET+"px; top:"+(a.MediaView.TOP_OFFSET+a.MediaView.NUM_MEDIA_VIEWS*(a.MediaView.HEIGHT+a.MediaView.GAP))+"px; width:"+(a.MediaView.STATUS_WIDTH+a.MediaView.PROGRESS_WIDTH)+"px; height:"+a.MediaView.HEIGHT+"px; background-color:#555555;opacity:0.5";this.status.style.cssText="z-index:100;display:block; position:absolute; left:0px; top:0px; width:"+a.MediaView.STATUS1_WIDTH+"px; height:"+a.MediaView.HEIGHT+ -"px;background-color:#0000ff";this.status2.style.cssText="z-index:100;display:block; position:absolute; left:"+a.MediaView.STATUS1_WIDTH+"px; top:0px; width:"+a.MediaView.STATUS2_WIDTH+"px; height:"+a.MediaView.HEIGHT+"px;background-color:#ffffff";this.status3.style.cssText="z-index:100;display:block; position:absolute; left:"+(a.MediaView.STATUS1_WIDTH+a.MediaView.STATUS2_WIDTH)+"px; top:0px; width:"+a.MediaView.STATUS3_WIDTH+"px; height:"+a.MediaView.HEIGHT+"px;background-color:#ffffff";this.status4.style.cssText= -"z-index:100;display:block; position:absolute; left:"+(a.MediaView.STATUS1_WIDTH+a.MediaView.STATUS2_WIDTH+a.MediaView.STATUS3_WIDTH)+"px; top:0px; width:"+a.MediaView.STATUS4_WIDTH+"px; height:"+a.MediaView.HEIGHT+"px;background-color:#ffffff";this.progressBar.style.cssText="z-index:100;display:block; position:absolute; left:"+a.MediaView.STATUS_WIDTH+"px; top:0px; width:"+a.MediaView.PROGRESS_WIDTH+"px; height:"+a.MediaView.HEIGHT+"px;background-color:#888888";this.srcNameBar.style.cssText="z-index:100;display:block; position:absolute; left:0px; top:0px; width:"+ -a.MediaView.PROGRESS_WIDTH+"px; height:"+a.MediaView.HEIGHT+"px;white-space: nowrap; overflow: hidden;";this.downloaded.style.cssText="z-index:100;display:block; position:absolute; left:0px; top:0px; width:0px; height:"+a.MediaView.HEIGHT/3+"px;background-color:#10ff10;";this.playHead.style.cssText="z-index:100;display:block; position:absolute; left:0px; top:0px; width:2px; height:"+a.MediaView.HEIGHT/3+"px;background-color:#101010";++a.MediaView.NUM_MEDIA_VIEWS};a.MediaView.prototype={update:function(){var b= -this.a.cpAudio;b||(b=this.a.cpVideo);var c=this.a.src.indexOf("/ar/");-1==c&&(c=this.a.src.indexOf("/vr/"));-1==c&&(c=this.a.src.indexOf("_cp_n_m_"));-1==c&&(c=0);c=this.a.src.substr(c);b&&(c+="|"+b.src+"|"+b.id);this.srcNameBar.innerHTML=""+c+"";c=this.a.paused?"paused":"playing";this.a.ended&&(c+=" end");this.status2.innerHTML=""+c+"";b?(c=b.paused?"paused":"playing",b.ended&&(c+=" end"),b.hidden&&(c+=" hdn")): -c="NULL";this.status3.innerHTML=""+c+"";switch(this.a.readyState){case a.HAVE_NOTHING:c="HaveNone";this.status4.style.backgroundColor="#ff0000";break;case a.HAVE_METADATA:c="HaveMeta";this.status4.style.backgroundColor="#ffaa00";break;case a.HAVE_CURRENT_DATA:c="HaveCurr";this.status4.style.backgroundColor="#aacc00";break;case a.HAVE_FUTURE_DATA:c="HaveMore";this.status4.style.backgroundColor="#55ff00";break;case a.HAVE_ENOUGH_DATA:c="HaveAll";this.status4.style.backgroundColor= -"#00ff00";break;default:c="???",this.status4.style.backgroundColor="#555555"}this.status4.innerHTML=""+c+"";this.a.ended?(this.status.style.backgroundColor="#ffff00",this.status.innerHTML="Ended"):this.a&&this.a.networkState==this.a.NETWORK_EMPTY?(this.status.style.backgroundColor="#000000",this.status.innerHTML="Empty"):this.a&&this.a.networkState== -this.a.NETWORK_IDLE?(this.status.style.backgroundColor="#aaaaaa",this.status.innerHTML="Idle"):this.a&&this.a.networkState==this.a.NETWORK_LOADING?(this.status.style.backgroundColor="#00ff00",this.status.innerHTML="Loading"):this.a&&this.a.networkState==this.a.NETWORK_NO_SOURCE&&(this.status.style.backgroundColor="#ff0000",this.status.innerHTML="NoSrc"); -var e;this.a&&!isNaN(this.a.duration)&&isFinite(this.a.duration)?e=this.a.duration:b&&b.duration&&(e=b.duration);e?(b=this.a.buffered,b.length&&(b=b.end(b.length-1),this.downloaded.style.width=b/e*a.MediaView.PROGRESS_WIDTH+"px"),this.playHead.style.left=this.a.currentTime/e*a.MediaView.PROGRESS_WIDTH+"px"):(this.downloaded.style.width="0px",this.playHead.style.left="0px")}};a.AudioView=a.MediaView;a.VideoView=a.MediaView;a.AudioManager=function(){a.movie.am=this;this.volume=1;this.viewAudio=this.verbose= -this.loaded=this.muted=!1;if("http"==window.location.protocol.substr(0,4)){var b=!1;a.m_isLMSPreview&&(b=!0);var c=window.AudioContext||window.webkitAudioContext;c&&!b&&(this.webAudio=new c,this.webAudioCache={},this.webAudioLoaded=this.webAudioReq=0)}this.errorCallBackFn=function(b){-1==this.src.indexOf("_cp_n_m_")&&(a.exceptionalLogs&&(a.log("src = "+this.src+" error code = "+(this.error?this.error.code:"NULL")+" n/w state = "+this.networkState),a.log(b)),this.waitCount=0)};this.waitingFn=function(b){var c; -!isNaN(this.duration)&&isFinite(this.duration)?c=this.duration:this.cpAudio&&this.cpAudio.duration&&(c=this.cpAudio.duration);if(c){var f=Math.abs(this.currentTime-c);a.movie.am.verbose&&a.log(this.cpSrc+" wait came when delta = "+f+" duration = "+c);if(0.3>f){0.3>c||(a.movie.am.verbose&&a.log("simulating arrival of ended event"),a.movie.am.onEndedCallBackFn.call(this,b));return}}++this.waitCount;a.movie.am.verbose&&(b="wait "+this.waitCount+" "+this.cpSrc+" currTime = "+this.currentTime+" duration = "+ -c+" curFrame = "+cpInfoCurrentFrame,this.cpAudio&&(b+=" id = "+this.cpAudio.id,b+=" from "+this.cpAudio.from,b+=" to "+this.cpAudio.to),a.log(b))};this.canPlayCallBackFn=function(){this.waitCount=0;a.movie.am.verbose&&a.log("cnPly "+this.cpSrc+" "+(this.cpAudio?this.cpAudio.id:""))};this.onEndedCallBackFn=function(){this.waitCount=0;this.cploop?(a.movie.am.verbose&&a.log(this.cpSrc+" loop"),this.cpAudio&&(this.cpAudio.pause(),this.cpAudio.seekTo(this.cpAudio.from),this.cpAudio.play())):(a.movie.am.verbose&& -a.log(this.cpSrc+" ended"),this.endedAt=(new Date).getTime(),this.cpAudio&&(this.cpAudio.ended=!0,this.cpAudio.pause(),this.cpAudio.onEndAutoPlayMovie&&(delete this.cpAudio.onEndAutoPlayMovie,a.movie.play())))};this.PlayPauseCallBackFn=function(){this.paused&&(this.pausedAt=(new Date).getTime());this.cpAudio&&(this.cpAudio.paused=this.paused)};this.MAX_AUDIO_CHANNELS=a.multiAudioTrack?10:1;this.audioChannels=[];for(b=0;bf.endedAt&& -(a=f.endedAt,c=d):f.paused&&f.pausedAt?a>f.pausedAt&&(a=f.pausedAt,c=d):-1==c&&e>f.cpTo&&(c=d)}return c},allocAudioChannel:function(b){this.verbose&&a.log("allocAudioChannel "+b.id+" "+b.src);if(this.webAudio&&this.webAudioCache[b.src])this.verbose&&a.log("found in web-audio cache");else{if(a.multiAudioTrack){for(var c=cpInfoCurrentFrame,e=0;e=c;if(d.cpSrc==b.src&&(d.ended||d.paused)&&!f)return null!= -d.cpAudio&&(d.cpAudio.nativeAudio=null,d.cpAudio=null),b.nativeAudio=d,d.cpAudio=b,a.device==a.IDEVICE||a.device==a.ANDROID?d.cploop=b.cploop:d.loop=b.loop,d.ended=!1,d.cpTo=b.to,b.isSeekPending()||b.seekTo(b.from),b.finishPendingSeek(),this.verbose&&a.log("allocAudioChannel found existing @ "+e),!0}for(e=0;e++c;)a.verbose&&a.log("waiting for "+c+" time"),d.load();this.verbose&&a.log("finished waiting")}else b.isSeekPending()||b.seekTo(b.from);b.finishPendingSeek();d.load()}},allocSingletonAudioChannelForPlayAudioAction:function(b){this.verbose&&a.log("allocSingletonAudioChannelForPlayAudioAction "+b);var c=a.NativeAudio();c.addEventListener("ended",this.onEndedCallBackFn,!1);c.addEventListener("error",this.errorCallBackFn,!1);a.waitForAudio&&(c.addEventListener("waiting",this.waitingFn,!1),c.addEventListener("canplay", -this.canPlayCallBackFn,!1));c.addEventListener("play",this.PlayPauseCallBackFn,!1);c.addEventListener("pause",this.PlayPauseCallBackFn,!1);c.waitCount=0;c.cpSrc=b;c.src=b;a.movie.am.singletonPlayAudio.nativeAudio=c;c.cpAudio=a.movie.am.singletonPlayAudio;c.muted=this.muted;c.volume=this.volume;c.ended=!1;c.load();this.audioViews&&this.audioViews.push(new a.AudioView(c))},load:function(){var b=a.D.pbga;b&&(this.bgAudio=new a.AudioObject(this,"bga",b.src,1,b.to,b.du),b.l&&this.bgAudio.setLoop(!0),this.bgAudio.stopAtProjectEnd= -b.spe,this.bgAudio.lowerVolumeOnSlidesWithAudio=b.lv,this.bgAudio.lowerVolumePercentage=b.vp);b=(a.D.project_main.slideAudios||"").split(",");this.slideAudios={};for(var c=0;c=this.MAX_AUDIO_CHANNELS/2))return}for(c=0;cc||h.tod.duration&&this.loadWebAudio(d.src)}this.keyTap&&a.movie.playKeyTap&&this.loadWebAudio(this.keyTap.src);var c=this.objectAudios[b],f;for(f in c)(d=c[f])&&d.mouseAudio&&this.loadWebAudio(d.src)}if(!(a.device== -a.IDEVICE||a.device==a.ANDROID||a.device==a.KINDLE)&&this.loaded&&1==a.movie.speed){this.verbose&&a.log("audio manager preload "+b);if(c=a.D[b])if((c=this.slideAudios[c.audioName])&&!c.nativeAudio&&!this.allocAudioChannel(c,!1))return;c=this.objectAudios[b];for(f in c)if(d=c[f],!d||!d.rp||!d.nativeAudio)if(d&&(!d.mouseAudio||!this.webAudio)&&!this.allocAudioChannel(d,!1))return;if(!this.webAudio){if(c=this.eventAudios[b])for(e in c)if((d=c[e])&&(!d.rp||!d.nativeAudio)&&!this.allocAudioChannel(d,!1))return; -if(this.keyTap&&a.movie.playKeyTap&&!this.allocAudioChannel(this.keyTap,!1))return}b=this.extAudios[b];for(f in b)if((e=b[f])&&!this.allocAudioChannel(e,!1))break}},play:function(b,c){this.pace=null;if(this.loaded&&1==a.movie.speed){if((a.device==a.IDEVICE||a.device==a.ANDROID)&&!a.multiAudioTrack){var e=this.audioChannels[0];if(!e.paused&&!e.ended&&e.cpAudio&&e.cpAudio.id==this.eventAudioPlaying||a.movie.stage.VideoPlaying)return}var e=!1,d=null,f=null;if(!c){if(this.currentSlide){var i=this.objectAudios[this.currentSlide]; -if(i)for(var g in i){var h=i[g];h&&!h.ended&&(h.from<=b&&h.to>=b||h.shownAt&&h.shownAt<=b&&h.shownAt+h.to-h.from>=b||h.rp?((a.device==a.IDEVICE||a.device==a.ANDROID)&&!a.multiAudioTrack?null==d&&(d=h):(null==d&&(d=h),a.playAudioOrVideoChannel_Safari11Workaround(h)),e=!0):h.mouseAudio?this.webAudio&&h.pause():h.pause())}}if(this.currentSlideAudio&&(g=this.slideAudios[this.currentSlideAudio])&&!g.ended)g.from<=b&&g.to>=b?(a.device==a.IDEVICE||a.device==a.ANDROID)&&!a.multiAudioTrack?(null==d&&(f=d= -g),1!=this.ssc&&1!=this.ssp&&(e=!0)):1!=this.ssc&&1!=this.ssp?(g.play(),null==d&&(d=g),f=g,e=!0):g.pause():g.pause()}this.bgAudio&&((e?this.bgAudio.lowerVolumeOnSlidesWithAudio&&this.bgAudio.nativeAudio&&(this.bgAudio.nativeAudio.volume=this.volume*(this.bgAudio.lowerVolumePercentage/100)):this.bgAudio.nativeAudio&&(this.bgAudio.nativeAudio.volume=this.volume),(a.device==a.IDEVICE||a.device==a.ANDROID)&&!a.multiAudioTrack)?null==d&&(d=this.bgAudio):this.stopBGAudio?this.bgAudio.pause():a.playAudioOrVideoChannel_Safari11Workaround(this.bgAudio)); -this.audioPlaying=null;if((a.device==a.IDEVICE||a.device==a.ANDROID)&&d&&!a.multiAudioTrack)f==d?1!=this.ssc&&1!=this.ssp&&(this.audioPlaying=d.id,d.play()):this.bgAudio==d?this.stopBGAudio?d.pause():(this.audioPlaying=d.id,d.play()):(this.audioPlaying=d.id,d.play());a.IDEVICE==a.device||a.device==a.ANDROID?1==a.movie.speed&&(d&&d!=this.bgAudio&&!d.shownAt&&!d.ended&&!d.paused&&!d.loop&&d.nativeAudio&&0d.to&& -(this.pace=d.to)):this.pace=a.movie.vdm.pace()):1==a.movie.speed&&!this.interactiveItemFound&&(f&&!f.ended&&!f.paused&&!f.loop&&f.nativeAudio&&0f.to&&(this.pace=a.movie.vdm.pace()?null:f.to)):this.pace=a.movie.vdm.pace())}},pause:function(b){this.reasonForPause=b;if((b==a.ReasonForPause.PLAYBAR_ACTION||b==a.ReasonForPause.CPCMNDPAUSE||b==a.ReasonForPause.MOVIE_REWIND_STOP||b==a.ReasonForPause.EVENT_VIDEO_PAUSE|| -b==a.ReasonForPause.ONLY_ONE_MEDIUM_CAN_PLAY||b==a.ReasonForPause.PPTX_PAUSE_FOR_ONCLICK_ANIMATION||b==a.ReasonForPause.CPCMNDGOTOFRAME||b==a.ReasonForPause.ACTION_CHOICE)&&this.currentSlide){var c=this.objectAudios[this.currentSlide];if(c&&b!=a.ReasonForPause.ACTION_CHOICE)for(var e in c)c[e].pause();if(c=this.extAudios[this.currentSlide])for(e in c)c[e].pause(b)}e=cpInfoCurrentFrame;this.currentSlideAudio&&(c=this.slideAudios[this.currentSlideAudio])&&(c.from<=e&&c.to>=e?b==a.ReasonForPause.INTERACTIVE_ITEM? -1==this.ssp&&c.pause():(b==a.ReasonForPause.PLAYBAR_ACTION||b==a.ReasonForPause.CPCMNDPAUSE||b==a.ReasonForPause.MOVIE_REWIND_STOP||b==a.ReasonForPause.EVENT_VIDEO_PAUSE||b==a.ReasonForPause.ONLY_ONE_MEDIUM_CAN_PLAY||b==a.ReasonForPause.PPTX_PAUSE_FOR_ONCLICK_ANIMATION||b==a.ReasonForPause.CPCMNDGOTOFRAME||b==a.ReasonForPause.WK_EXIT_FULL_SCREEN||b==a.ReasonForPause.FEEDBACK_ITEM)&&c.pause():c.pause());this.bgAudio&&(b==a.ReasonForPause.MOVIE_ENDED?this.bgAudio.stopAtProjectEnd&&this.bgAudio.pause(): -(b==a.ReasonForPause.PLAYBAR_ACTION||b==a.ReasonForPause.MOVIE_REWIND_STOP||b==a.ReasonForPause.EVENT_VIDEO_PAUSE||b==a.ReasonForPause.ONLY_ONE_MEDIUM_CAN_PLAY)&&this.bgAudio.pause())},pauseCurrentSlideAudioForInteractiveClick:function(){this.verbose&&a.log("pause currentSlide Audio for SSC");var b=cpInfoCurrentFrame;if(this.currentSlideAudio){var c=this.slideAudios[this.currentSlideAudio];c&&(c.from<=b&&c.to>=b)&&(this.ssc=1,c.pause())}},mute:function(a){var a=!0==a||0a&&(a=0);1=b&&f.from<=c)return this.verbose&&a.log("objAudio "+f.id+" starts between "+b+" & "+c),!0}}return this.currentSlideAudio&&(e=this.slideAudios[this.currentSlideAudio])&&!e.ended&&e.from>=b&&e.from<=c?(this.verbose&&a.log("slideAudio "+e.id+" starts between "+b+" & "+c),!0):!1},updateAudioViews:function(){if(this.viewAudio&&this.audioViews)for(var a in this.audioViews)this.audioViews[a].update()}};a.NativeVideo= -function(b){makeItDummyNativeVideo=function(b){b.currentTime=0;b.duration=0;b.paused=!0;b.ended=!0;b.defaultPlaybackRate=0;b.playbackRate=1;b.played=!1;b.seeking=!1;b.seekable=!1;b.fastSeek=!1;b.src="";b.crossorigin=!1;b.preload=!1;b.autoplay=!1;b.mediagroup="";b.loop=!1;b.muted=!1;b.controls=!1;a.setPlaysInlineAttrib(b,!1);b.style={};b.load=function(){};b.play=function(){};b.pause=function(){};b.addEventListener=function(){};b.removeEventListener=function(){}};var c=a.newElem("video");if("undefined"=== -typeof Video||!Video)(void 0==c.load||void 0==c.play||void 0==c.pause||void 0==c.addEventListener)&&makeItDummyNativeVideo(c);b&&(c.id=b);return c};a.getYoutubeVideoIdFromURL=function(a){var c=document.createElement("a");c.href=a;if("youtu.be"==c.hostname)return c.pathname.substring(1);a=c.search.substring(1).split("&");for(c=0;c=a.IOS5||a.device==a.ANDROID)this.slideVideoChannel.addEventListener("waiting",this.waitingFn,!1),this.slideVideoChannel.addEventListener("canplay", -this.canPlayCallBackFn,!1);this.slideVideoChannel.addEventListener("play",this.PlayPauseCallBackFn,!1);this.slideVideoChannel.addEventListener("pause",this.PlayPauseCallBackFn,!1);this.slideVideoChannel.waitCount=0;var b=this.slideVideoChannel;this.slideVideoChannel.addEventListener("webkitbeginfullscreen",function(){""!=b.src&&("_cp_n_m_"!=b.src&&!b.paused)&&(b.pauseMovieOnExitFullScreen=!0)},!1);this.slideVideoChannel.addEventListener("webkitendfullscreen",function(){b.pauseMovieOnExitFullScreen&& -(b.pauseMovieOnExitFullScreen=!1,a.movie.pause(a.ReasonForPause.WK_EXIT_FULL_SCREEN))},!1)}else this.slideVideoChannel0=new a.NativeVideo("slidevid0"),this.slideVideoChannel0.cpSrc="",this.slideVideoChannel0.cpVideo=null,this.slideVideoChannel0.ended=!1,this.slideVideoChannel0.addEventListener("error",this.errorCallBackFn,!1),this.slideVideoChannel0.addEventListener("waiting",this.waitingFn,!1),this.slideVideoChannel0.addEventListener("canplay",this.canPlayCallBackFn,!1),this.slideVideoChannel0.addEventListener("play", -this.PlayPauseCallBackFn,!1),this.slideVideoChannel0.addEventListener("pause",this.PlayPauseCallBackFn,!1),this.slideVideoChannel0.waitCount=0,this.slideVideoChannel1=new a.NativeVideo("slidevid1"),this.slideVideoChannel1.cpSrc="",this.slideVideoChannel1.cpVideo=null,this.slideVideoChannel1.ended=!1,this.slideVideoChannel1.addEventListener("error",this.errorCallBackFn,!1),this.slideVideoChannel1.addEventListener("waiting",this.waitingFn,!1),this.slideVideoChannel1.addEventListener("canplay",this.canPlayCallBackFn, -!1),this.slideVideoChannel1.addEventListener("play",this.PlayPauseCallBackFn,!1),this.slideVideoChannel1.addEventListener("pause",this.PlayPauseCallBackFn,!1),this.slideVideoChannel1.waitCount=0,this.slideVideoChannel=this.slideVideoChannel0;this.ThreeDBgVideoChannel||(this.ThreeDBgVideoChannel=document.createElement("video"));this.ThreeDBgFeedbackVideoChannel||(this.ThreeDBgFeedbackVideoChannel=document.createElement("video"));if(a.loadedModules.toc)if(a.device==a.IDEVICE||a.device==a.ANDROID){this.tocVideoChannel= -document.getElementById("tocVideo");this.tocVideoChannel||(this.tocVideoChannel=new a.NativeVideo("tocVideo"));this.tocVideoChannel.cpSrc="";this.tocVideoChannel.cpVideo=null;this.tocVideoChannel.ended=!1;this.tocVideoChannel.addEventListener("error",this.errorCallBackFn,!1);if(a.IOSMajor>=a.IOS5||a.device==a.ANDROID)this.tocVideoChannel.addEventListener("waiting",this.waitingFn,!1),this.tocVideoChannel.addEventListener("canplay",this.canPlayCallBackFn,!1);this.tocVideoChannel.addEventListener("play", -this.PlayPauseCallBackFn,!1);this.tocVideoChannel.addEventListener("pause",this.PlayPauseCallBackFn,!1);this.tocVideoChannel.waitCount=0}else this.tocVideoChannel0=document.getElementById("tocVideo"),this.tocVideoChannel0||(this.tocVideoChannel0=new a.NativeVideo("tocVideo")),this.tocVideoChannel0.cpSrc="",this.tocVideoChannel0.cpVideo=null,this.tocVideoChannel0.ended=!1,this.tocVideoChannel0.addEventListener("error",this.errorCallBackFn,!1),this.tocVideoChannel0.addEventListener("waiting",this.waitingFn, -!1),this.tocVideoChannel0.addEventListener("canplay",this.canPlayCallBackFn,!1),this.tocVideoChannel0.addEventListener("play",this.PlayPauseCallBackFn,!1),this.tocVideoChannel0.addEventListener("pause",this.PlayPauseCallBackFn,!1),this.tocVideoChannel0.waitCount=0,this.tocVideoChannel1=new a.NativeVideo("tocVideo1"),this.tocVideoChannel1.cpSrc="",this.tocVideoChannel1.cpVideo=null,this.tocVideoChannel1.ended=!1,this.tocVideoChannel1.addEventListener("error",this.errorCallBackFn,!1),this.tocVideoChannel1.addEventListener("waiting", -this.waitingFn,!1),this.tocVideoChannel1.addEventListener("canplay",this.canPlayCallBackFn,!1),this.tocVideoChannel1.addEventListener("play",this.PlayPauseCallBackFn,!1),this.tocVideoChannel1.addEventListener("pause",this.PlayPauseCallBackFn,!1),this.tocVideoChannel1.waitCount=0,this.tocVideoChannel=this.tocVideoChannel0;this.MAX_VIDEO_CHANNELS=a.device==a.IDEVICE||a.device==a.ANDROID?2:10;this.videoChannels=[];for(var c=0;c=a.IOS5||a.device==a.ANDROID)e.addEventListener("waiting",this.waitingFn,!1),e.addEventListener("canplay",this.canPlayCallBackFn,!1);e.addEventListener("play",this.PlayPauseCallBackFn,!1);e.addEventListener("pause",this.PlayPauseCallBackFn,!1);e.waitCount=0;this.videoChannels[c]=e}};a.VideoManager.prototype={pendingVideos:function(){var b= -0,c=this.youtubeSlideVideoChannel;c&&(0a&&(a=0);1f.endedAt&&(a=f.endedAt,c=d):f.paused&&f.pausedAt?a>f.pausedAt&&(a=f.pausedAt,c=d):-1==c&&e>f.cpTo&&(c=d)}return c},allocVideoChannel:function(b){this.verbose&&a.log("allocVideoChannel "+b.id+" "+b.src);if(a.IDEVICE==a.device||a.device==a.ANDROID){this._LRUVideoIndex= -void 0==this._LRUVideoIndex?0:1-this._LRUVideoIndex;this.verbose&&a.log("picking video @ index "+this._LRUVideoIndex);var c=this.videoChannels[this._LRUVideoIndex];null!=c.cpVideo&&(c.cpVideo.nativeVideo=null);b.nativeVideo=c;c.cpVideo=b;c.cploop=b.cploop;c.ended=!1;c.waitCount=0;a.setSrcAndLoadVideoChannel(c,b.src)}else{for(var e=cpInfoCurrentFrame,d=0;d=e;if(c.cpSrc==b.src&&(c.ended||c.paused)&& -!f)return null!=c.cpVideo&&(c.cpVideo.nativeVideo=null,c.cpVideo=null),b.nativeVideo=c,c.cpVideo=b,c.loop=b.loop,c.ended=!1,c.cpTo=b.to,b.isSeekPending()||b.seekTo(b.from),b.finishPendingSeek(),this.verbose&&a.log("allocVideoChannel found existing @ "+d),!0}for(d=0;da.movie.stage.lastFrame?a.movie.stage.lastFrame:cpInfoCurrentFrame,k=!1,e=0;e=a.IOS8?(a.movie.stage.NativeVideoElement&&(a.movie.stage.NativeVideoElement.style.backgroundColor="#000000"),a.addVideoSkin(g.actualParent,g,g.autoPlay)):g.nativeVideo.controls=!0),g.autoPlay)?g.play():(g.nativeVideo.style.position="static",g.nativeVideo.style.left= -"0px"))}}else if(!b&&(-1==j.bstiid||j.sicbs))m=!1}if(g=a(c)){if(k||l&&"function"===typeof l.isInRange&&l.isInRange(n))g.style.visibility="visible",g.style.display="block";if(j.type==a.kCPOTWebObject&&(g=g.getElementsByTagName("iframe")[0]))g.style.visibility="visible",g.style.display="block"}j.ia&&m&&a.movie.am.showHideObjectAudio(j.ia,!0);j.iea&&m&&a.movie.am.playPauseEventAudio(j.iea,!0)}else if((g=a(c))&&(k||l&&l.isInRange(n)))if(g.style.visibility="visible",j=c.indexOf("-vtext_Handler"),a.responsive&& --1!=j&&(j=c.substr(0,j),(j=a.D[j])&&j.hl))g.style.backgroundColor="#ffffff",g.style.opacity=0;a.redrawItem(c,d)}}};a._showData=function(c,b){void 0===b&&(b=!0);var d=0,e=[],f=[],h,j=null;e.push(c);if((d=a.D[c])&&d.mdi)f.push(c),f.push(d.mdi);a.getDisplayObjByKeyOnAllLayers(c);a.movie.stage.getChildrenForParent(c,e);for(d=0;d=c&&(c=1);if(a.ThreeDQuestionHelper){var b=a.movie.stage.getSlideIndexForFrame(c);a.movie.stage.isThreeDSlideIndex(b)&& -a.ThreeDQuestionHelper.set360QuizMode(!1)}a.movie.jumpToFrame(c)&&a.movie.play()};a.jumpToNextSlide=function(){var c=a.movie.stage.nextSlideStartFrame;if(-1!=c){if(a.ThreeDQuestionHelper){var b=a.movie.stage.getSlideIndexForFrame(c);a.movie.stage.isThreeDSlideIndex(b)&&a.ThreeDQuestionHelper.set360QuizMode(!1)}a.movie.jumpToFrame(c)&&a.movie.play()}else!a.movie.virgin&&a.movie.stage.slides.length-1==cpInfoCurrentSlideIndex&&a.movie.play()};a.jumpToLastVisitedSlide=function(){if(a.ThreeDQuestionHelper){var c= -a.movie.stage.getSlideIndexForFrame(a.movie.cpInfoLastVisitedSlideStartFrame);a.movie.stage.isThreeDSlideIndex(c)&&a.ThreeDQuestionHelper.set360QuizMode(!1)}a.movie.jumpToFrame("cpInfoLastVisitedSlide");a.movie.play()};a.openURL=function(c,b){var d=c;if(a.MSIE!=a.browser){var e;rURL=decodeURIComponent(c);e=rURL!==c?!0:!1;e||(d=encodeURI(c))}if(a.m_isPreview)d=a.parentWindow.open(d,b);else{if(e=a.IsRunningInACAP)if(e="_self"==b||"_parent"==b||"_blank"==b)e=d,e=-1!=e.search("http:")||-1!=e.search("https:")|| --1!=e.search("www.")?!0:!1;d=e?a.parentWindow.open(d,"_blank"):a.currentWindow.open(d,b)}(!d||d.closed||"undefined"==typeof d.closed)&&!a.IsRunningInACAP&&alert(a.D.rtDialog.rtPopupBlkr)};a.openMovie=function(c,b){return a.openURL(c,b)};a.sendEmail=function(c){a.m_isPreview?window.location.href="mailto:"+c:a.currentWindow.open("mailto:"+c,"_blank")};a.showMessage=function(c){a.alert(c)};a.runJavascript=function(c,b){a.verbose&&a.log("runJavascript ["+c+"]");try{a.__isUserCustomJS=!0;var d=window; -switch(b){case "_self":d=window;break;case "_blank":d=window.open("");break;case "_parent":d=window.parent;break;case "_top":d=window.top}d.execScript?d.execScript(c):d.eval.call(d,c);a.__isUserCustomJS=!1}catch(e){a.log(e)}};a.stopMovie=function(){};a.loopMovie=function(){cpCmndGotoSlideAndResume=0};a.closeMovie=function(){DoCPExit&&DoCPExit()};a.playAudio2=function(c){return a.playAudio(c,!1)};a.playAudio=function(c,b){var d=a.movie.am;if(a.lastMediaPlayReqTime&&50>(new Date).getTime()-a.lastMediaPlayReqTime.getTime())d.verbose&& -a.log("crowded request postponed "+c),setTimeout(function(){a.playAudio(c,b)},50);else if(!(d.muted||1!=a.movie.speed)){d.verbose&&a.log("cp.playAudio "+c+", "+b);if(a.device==a.IDEVICE||a.device==a.ANDROID)if(!a.multiAudioTrack&&(d.audioPlaying||a.movie.stage.VideoPlaying)){d.verbose&&a.log("audioPlaying "+d.audioPlaying+" videoPlaying "+a.movie.stage.VideoPlaying);return}var e=a.D["PA"+c].src;void 0==b&&(b=!0);d=d.singletonPlayAudio;d.pause();null!=d.nativeAudio&&(d.nativeAudio.cpAudio=null,d.nativeAudio= -null);d.onEndAutoPlayMovie=b;d.setSrc(e);d.resetAndPlay()}};a.stopAudio=function(){a.movie.am.singletonPlayAudio.pause()};a.cv=function(c,b,d,e,f){return a.vm.createVariable(c,b,1==d?!0:!1,e,1==f?!0:!1)};a.getCurrentStateNameForSlideItem=function(c){var b=void 0,b="",c=a.D[c];if(!c)return b;var d=a.getDisplayObjByKeyOnAllLayers(c.mdi);d?(c=d.states,d=d.currentState,0<=d&&dwindow.innerHeight?window.innerHeight:f.clientHeight);d.style.left=(e-b.width)/2+"px";d.style.top=(f-b.height)/ -2+"px";d.style.width=b.width+"px";d.style.height=b.height+"px";d.style.zIndex=1E4;e=a.newElem("div");e.id="infoDlgCloseBtn";b=function(){a.project.removeChild(d);c&&a.movie.play()};a.clearGestureCache(e);a.registerGestureEvent(e,a.GESTURE_EVENT_TYPES.TAP,b);e.style.cursor="pointer";e.style.backgroundColor="#ffffff";e.style.opacity=0;e.style.left="170px";e.style.top="5px";e.style.width="15px";e.style.height="15px";e.style.position="absolute";e.style.display="block";e.style.zIndex=1E4;d.appendChild(e); -b=a.newElem("div");e="
    "+("
  • "+cpInfoAuthor+"
  • ");e+="
  • "+cpInfoCompany+"
  • ";e+="
  • "+cpInfoEmail+"
  • ";f="http://";f=-1==cpInfoWebsite.indexOf("://")?f+cpInfoWebsite:cpInfoWebsite;e+="
  • "+cpInfoWebsite+"
  • ";e+="
  • "+cpInfoCopyright+"
  • ";b.innerHTML=e+"
";d.appendChild(b);e=a.newElem("div");e.id="infoDlgLinkBtn";b=function(){a.openURL("http://www.adobe.com/products/captivate")};a.clearGestureCache(e);a.registerGestureEvent(e,a.GESTURE_EVENT_TYPES.TAP,b);e.style.cursor="pointer";e.style.backgroundColor="#ffffff";e.style.opacity=0;e.style.left="10px";e.style.bottom="10px";e.style.width="170px";e.style.height="25px";e.style.position="absolute"; -e.style.display="block";d.appendChild(e)};a.toggleMute=function(){a.movie.am.muted?a.movie.am.mute(!1):a.movie.am.mute(!0);a.movie.vdm.muted?a.movie.vdm.mute(!1):a.movie.vdm.mute(!0);a.em.fireEvent("CPMovieAudioMute",a.movie.am.muted)};a.playbarMoved=function(){cpCmndPlaybarMoved=1};document.Captivate=window.cp;window.m_VarHandle=window;a.cpEIGetValue=function(a){return eval.call(window,a)};a.cpEISetValue=function(a,b){eval.call(window,a+'="'+b+'"')};a.goToNextState=function(c){var b=a.D[c];if(b){var d= -a.getDisplayObjByKeyOnAllLayers(b.mdi);if(d&&(b=d.states,d=d.currentState,!(0>d||d>b.length-1))){for(d=d==b.length-1?0:d+1;dd||d>=b.length))){for(d=0==d?b.length-1:d-1;0<=d&&a.isInbuiltState(b[d]);)d--;0>d||(b=b[d])&&a.changeState(c,b.stn)}}};a.changeState=function(c,b,d,e){var f=a.D[c];if(f){var h=a.getDisplayObjByKeyOnAllLayers(f.mdi);if(h){var j=a.getInfoForStateChange(c,b);j.bFound&&(h.getAttribute("effectiveVi")?a._changeState(c,b,!1,d,e):(h.currentState=j.stateIndex,f.currentState=j.stateIndex,!0===f.retainState&&a.canStateBeRetained_Name(b)&&(f.temporaryInitialState=j.stateIndex)))}else{c= -f.stl;d=-1;if(0m&&(m=tempBottom),tempRight>k&&(k=tempRight);g*=f+k;h*=l+m;d=a.getDisplayObjByKey(d.dn+"c").dimensions;e=d.left;i=d.top;j=d.width;d=d.height;g=(g-e)/j;h=(h-i)/d}}else if(g=e.xorig,h=e.yorig,e.gm){k=m=l=f=0;i=e.gm[0];if(i=a.getDisplayObjByCP_UID(i))j=a.D[i.mUniqueName].vb,f=j[0],l=j[1],k=j[2],m=j[3];for(i=1;ik&&(k=j[2]),j[3]>m&&(m=j[3]);e=d.vb[0];i=d.vb[1];j=d.vb[2]-d.vb[0];d=d.vb[3]-d.vb[1];g=((f+k)*g-e)/j;h=((l+m)*h-i)/d}l=d="0px";this.actualParent&&(d=100*g+"%",l=100*h+"%");g=d+" "+l;void 0!=c&&(c.parentElement.style["-ms-transform-origin"]=g,c.parentElement.style["-moz-transform-origin"]=g,c.parentElement.style["-webkit-transform-origin"]=g,c.parentElement.style["-o-transform-origin"]=g,c.parentElement.style["transform-origin"]=g)}};a.DisplayObject.prototype.start= -function(c,d){if(!this.effectIsStarted||c)this.areDimensionsCalculated=!1,this.updateEffects(),this.effectIsStarted=!0;this.forEachChild(function(e){e.start(c,d);a.responsive&&(e.isStarted=!0)})};a.DisplayObject.prototype.reset=function(c){this.isRegistered=!1;this.forEachChild(function(d){d.reset(c);a.responsive&&(d.currentCSS=void 0,d.isStarted=!1)});this.effectIsStarted=!1};a.DisplayObject.prototype.onEndOfMovie=function(){this.forEachChild(function(a){a.onEndOfMovie()})};a.DisplayObject.prototype.getAttribute= -function(a){var d=this.itemData;return!d?null:d[a]};a.DisplayObject.prototype.setAttribute=function(a,d){var e=this.itemData;e&&(e[a]=d)};a.DisplayObject.prototype.restOfProjectDoOnNewSlide=function(){if(this.itemData){var c=this.itemData.dn,d;c&&(d=a.D[c]);d&&((d.type==a.kCPOTImageBoxItem||d.type==a.kCPOTWebObject)&&d.uab)&&this.setUpClickHandler()}};a.DisplayObject.prototype.deleteFromRopMap=function(c){delete a.ropMap[c.id]};a.DisplayObject.prototype.ForceMouseOut=function(){if(a.DESKTOP===a.device){var c= -a.kSTTNone;if(0<=this.currentState&&this.currentStatef.canvasObj.sw&&(d=c.sw-f.canvasObj.sw);a.responsive&&(d=0);c=f.canvasObj.vbwr;f._wrvBounds={minX:c[0]-2*d,minY:c[1]-2*d,maxX:c[2]+2*d,maxY:c[3]+2*d,width:c[2]-c[0]+4*d,height:c[3]-c[1]+4*d};c=f.canvasObj.vb;f._vbounds={minX:c[0]-2*d,minY:c[1]-2*d,maxX:c[2]+2*d,maxY:c[3]+2*d,width:c[2]-c[0]+4*d,height:c[3]-c[1]+4*d}};a.Shape.baseConstructor.call(this,c);this.baseItemBoundingRect= -null;this.args=d;this.isDrawn=!1;this.canvas=null;this.visible=this.getAttribute("visible");this.canvasID=c.id;this._canvasObj=a.D[this.canvasID];this.divName=this.getAttribute("dns")?this.getAttribute("dns"):this.getAttribute("dn");var l=this.currentState,m=a.D[this.divName];if(void 0!=m){if(m.hasOwnProperty("stc")&&(lw&&1>o){var p=!1,p=a.responsive?this.sh&&!this.sh.i:this.sh&&!this.sh.i||this.re,y=(p&&a.D.project.w>this._vbounds.maxX? -a.D.project.w:this._vbounds.maxX)-(0this._vbounds.maxY?a.D.project.h:this._vbounds.maxY)-(0e&&1>g){e=a.movie.stage.currentSlide;d=c=!1;if((c="Question Slide"==e.st)&&e.qs)(e=a.D[e.qs])&&"Hotspot"==e.qtp&&(d=!0);if(this.actualParent=document.getElementById(this.divName))c&&!d&&!this.actualParent.onclick?(c=function(c){return function(){a.clickSuccessHandler(c)}},this.parentData&&a.registerGestureEvent(this.actualParent, -a.GESTURE_EVENT_TYPES.TAP,c(this.parentData))):(this.actualParent.onclick=null,a.removeGestureEvent(this.actualParent,a.GESTURE_EVENT_TYPES.TAP))}}};a.Shape.prototype.drawIfNeeded=function(c,d){if((!a.responsive||!this.drawForResponsive(c,d))&&!this.isDrawn){var e=this.getAttribute("dn"),g=a.D[this.canvasObj.dn];this.parentDivName=e;var e=this.bounds,h=-e.minX+e.maxX,i=-e.minY+e.maxY;if(0==h||0==i)this.isDrawn=!0,this.drawComplete();else{this.args&&(h+=Number(this.args[1])+Number(this.args[2]),i+= -Number(this.args[1])+Number(this.args[3]));var j=g.type,h=(j==a.kCPOTClickBoxItem?this.canvas=a.createCanvas(e.minX,e.minY,0,0,this.element):this.canvas=a.createCanvas(e.minX,e.minY,Math.ceil(h),Math.ceil(i),this.element)).gc;this.element.style.left=e.minX+"px";this.element.style.top=e.minY+"px";this.element.style.width=e.maxX-e.minX+"px";this.element.style.height=e.maxY-e.minY+"px";var i=!1,i=this.re||this.sh&&!this.sh.i,f=void 0!=this.tr,l=this.currImage,m=this.modifyParent&&!this.isParentOfTypeSlide; -h.save();if(!this.isMouse){var k=e.minX,x=e.minY,q=e.maxX-e.minX,n=e.maxY-e.minY,s=this.actualParent;if(s){m&&(s.style.left=k+"px",s.style.top=x+"px",s.style.width=q+"px",s.style.height=n+"px");var u=0;this.tr&&(m&&(a.applyTransform(s,this.tr),s.tr=this.tr),u=a.getAngleFromRotateStr(this.tr));this.element.style.display="block";this.element.style.position="absolute";m&&(s.rotateAngle=u,a.movie.stage.addToParentChildMap(s.id,this.element.id),this.element.parentElement.style.left=this.vbounds.minX+"px", -this.element.parentElement.style.top=this.vbounds.minY+"px",this.element.parentElement.style.width=this.vbounds.maxX-this.vbounds.minX+"px",this.element.parentElement.style.height=this.vbounds.maxY-this.vbounds.minY+"px",this.element.parentElement.style.webkitBoxReflect=this.re?"below "+this.re.d+"px -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop("+(1-this.re.s/100)+", transparent), to(rgba(255, 255, 255, "+(1-this.re.p/100)+")))":"unset")}this.init=!0;this.element.originalParent= -s;k=0this.vbounds.maxY?a.D.project.h:this.vbounds.maxY;q=(i&&a.D.project.w>this.vbounds.maxX?a.D.project.w:this.vbounds.maxX)-k;n=m-x;this.canvas=j==a.kCPOTClickBoxItem?a.createCanvas(0,0,0,0,this.element):a.createCanvas(void 0!=g.st?k:0,void 0!=g.st?x:0,q,n,this.element);this.element.style.display="block";this.element.style.position="absolute";this.isParentOfTypeSlide||(this.element.style.marginLeft= -k-this.vbounds.minX+"px",this.element.style.marginTop=x-this.vbounds.minY+"px");this.sh&&!this.sh.i&&(h.shadowOffsetX=this.sh.d*Math.cos(a.PIBy180*this.sh.a),h.shadowOffsetY=this.sh.d*Math.sin(a.PIBy180*this.sh.a),h.shadowBlur=this.sh.b,h.shadowColor=a.ConvertRGBToRGBA(this.sh.c,this.sh.o));u=0;this.tr&&(u=a.getAngleFromRotateStr(this.tr));i?(h.setTransform(1,0,0,1,0>k?-k:0,0>x?-x:0),h.translate((e.minX+e.maxX)/2,(e.minY+e.maxY)/2)):f&&h.translate(q/2,n/2);h.rotate(a.PIBy180*u);h.tex=this.tex;h.tey= -this.tey;h.centreImage=!0;h.width=q;h.height=n}if(this.shape)try{var w=this.getAttribute("objectToBeHidden");if(this.shape(h,l,w,a.isVisible(this),this.divName,i,f)||j==a.kCPOTClickBoxItem)this.isDrawn=!0,this.drawComplete()}catch(o){}h.restore();a.handleQuizzingItemsInReviewMode(this.element,g,this.divName);this.transIn&&(void 0!=d&&d!==a.ReasonForDrawing.kItemStateChanged)&&(this.element.parentElement.style.opacity=0);a.isVisible(this)?a._show(this.divName):a._hide(this.divName);a.isVisible(this)&& -this.playEffectsOnStart&&(e=this.parentDivName,(g=a.D[e].selfAnimationScript)&&eval(g),this.playEffectsOnStart=!1)}}};a.Shape.prototype.createTextHoldersIfRequired=function(c){var d=this.actualParent.clientWidth,e=this.actualParent.clientHeight;if(c.rpvt){var c=this.actualParent.id+"_vTxtHandlerHolder",g=a(c);g||(g=a.newElem("div"),g.id=c,g.style.display="block",g.style.position="absolute",g.style.width=d+"px",g.style.height=e+"px",g.style.visibility="hidden",this.actualParent.appendChild(g));c=this.actualParent.id+ -"_vTxtHolder";g=a(c);g||(g=a.newElem("div"),g.id=c,g.style.display="block",g.style.position="absolute",g.style.width=d+"px",g.style.height=e+"px",this.element.parentElement.appendChild(g))}};a.Shape.prototype.drawForResponsive=function(c,d){if(!this.responsiveCSS)return!1;if(this.isDrawn&&!c)return a.initializeVisibilityForGroupedItem(this),!0;var e=a.getResponsiveCSS(this.responsiveCSS);a.getCSSFromLayouter(e,this);var g=!1,g=this.sh&&!this.sh.i,h=void 0!=this.tr;if(this.isDrawn&&this.currentCSS== -e&&(!c||d==a.ReasonForDrawing.kMoviePaused))return!0;var i=d===a.ReasonForDrawing.kItemStateChanged||d===a.ReasonForDrawing.kGettingBoundingRectInBaseState||d===a.ReasonForDrawing.kLinkedToItemAppeared,j=!0;this.currentCSS=e;var f=this.getAttribute("dn"),l=a.D[this.canvasObj.dn];this.parentDivName=f;var m=this.getAttribute("aan"),k=e,x=this.prevCanvasObj,f=this.modifyParent&&!this.isParentOfTypeSlide,q=0,n=this.actualParent.style.transform||this.actualParent.style.msTransform||this.actualParent.style.MozTransform|| -this.actualParent.style.WebkitTransform||this.actualParent.style.OTransform,s=this.element.parentElement.style.transform||this.element.parentElement.style.msTransform||this.element.parentElement.style.MozTransform||this.element.parentElement.style.WebkitTransform||this.element.parentElement.style.OTransform;a.applyTransform(this.actualParent,"");a.applyTransform(this.element.parentElement,"");this.createTextHoldersIfRequired(l);this.isMouse||f&&!this.flex&&a.applyResponsiveStyles(this.actualParent, -e,j,i,void 0,d);this.parentElementClientBoundingRect=a.GetBoundingClientRectForElem(this.element.parentElement,i);var u=a.GetBoundingClientRectForElem(a.movie.stage.getSlideDiv(),i);if(!this.isMouse){if(f&&!a.isPartOfFlex(this)){if(l.rpvt&&l.autoGrow&&(d==a.ReasonForDrawing.kTextGrow||d==a.ReasonForDrawing.kMoviePaused)){var w=l.minItemHeight;w&&this.actualParent.clientHeightm?1:-1)*m+"px",this.element.style.marginTop=(0>u?1:-1)*u+"px");s=this.currImage;n.save();if(!this.isMouse){if(o=this.actualParent){q=0;if(this.tr)f&&(k=j?100*j/o.clientWidth+"%":"center",k+=" ",k=w?k+(100*w/o.clientHeight+"%"):k+"center",o.style["-ms-transform-origin"]=k,o.style["-moz-transform-origin"]=k,o.style["-webkit-transform-origin"]=k,o.style["-o-transform-origin"]=k,o.style["transform-origin"]=k,a.applyTransform(o,this.tr),o.tr=this.tr),q=a.getAngleFromRotateStr(this.tr); -else if(f&&(d===a.ReasonForDrawing.kItemStateChanged||d==a.ReasonForDrawing.kGettingBoundingRectInBaseState)&&x&&x.tr)k="initial",o.style["-ms-transform-origin"]=k,o.style["-moz-transform-origin"]=k,o.style["-webkit-transform-origin"]=k,o.style["-o-transform-origin"]=k,o.style["transform-origin"]=k,x=(o.style.transform||o.style.msTransform||o.style.MozTransform||o.style.WebkitTransform||o.style.OTransform).replace(x.tr,""),a.applyTransform(o,x),o.tr=void 0;if(f)if(o.rotateAngle=q,a.movie.stage.addToParentChildMap(o.id, -this.element.id),this.re)this.element.parentElement.style.webkitBoxReflect="below "+this.re.d+"px -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop("+(1-this.re.s/100)+", transparent), to(rgba(255, 255, 255, "+(1-this.re.p/100)+")))";else if(d===a.ReasonForDrawing.kItemStateChanged||d==a.ReasonForDrawing.kGettingBoundingRectInBaseState)this.element.parentElement.style.webkitBoxReflect="unset"}this.init=!0;this.element.originalParent=o;this.sh&&!this.sh.i&&(n.shadowOffsetX= -this.sh.d*Math.cos(a.PIBy180*this.sh.a),n.shadowOffsetY=this.sh.d*Math.sin(a.PIBy180*this.sh.a),n.shadowBlur=this.sh.b,n.shadowColor=a.ConvertRGBToRGBA(this.sh.c,this.sh.o));q=0;this.tr&&(q=a.getAngleFromRotateStr(this.tr));g?(n.setTransform(1,0,0,1,0>m?-m:0,0>u?-u:0),n.translate(m+this.element.parentElement.clientWidth/2,u+this.element.parentElement.clientHeight/2)):h&&n.translate(this.element.parentElement.clientWidth/2,this.element.parentElement.clientHeight/2);n.rotate(a.PIBy180*q);n.tex=this.tex; -n.tey=this.tey;n.centreImage=!0;n.width=this.element.clientWidth;n.height=this.element.clientHeight;this.isParentOfTypeSlide?(l.clientWidth=this.element.clientWidth,l.clientHeight=this.element.clientHeight):h?(l.clientWidth=this.actualParent.clientWidth,l.clientHeight=this.actualParent.clientHeight):(l.clientWidth=this.element.parentElement.clientWidth,l.clientHeight=this.element.parentElement.clientHeight);a.isCaptionItem(l.type)&&(this.shape?l.pixelColor=this.getAttribute("bc"):(this.isDrawn=!0, -this.drawComplete(d)))}f=a.isVisible(this);if(this.shape)try{var y=this.getAttribute("objectToBeHidden");if(this.shape(n,s,y,f,this.divName,g,h)||i==a.kCPOTClickBoxItem||!e.ipiv)this.isDrawn=!0,this.drawComplete(d);else return!1}catch(z){}if(l.type==a.kCPOTScoringResultItem||l.type==a.kCPOTStageAnswerLabel||l.type==a.kCPOTStageAnswerItem||l.type==a.kCPOTFillBlankCaption||l.type==a.kCPOTStageMatchingAnswerEntry||l.type==a.kCPOTQuestionColumn)this.isDrawn=!0,this.drawComplete(d);n.restore();a.handleQuizzingItemsInReviewMode(this.element, -l,this.divName);this.transIn&&d==a.ReasonForDrawing.kRegularDraw&&(this.element.parentElement.style.opacity=0);f||a._hide(this.divName);f&&this.playEffectsOnStart&&((e=a.D[this.canvasObj.dn].selfAnimationScript)&&eval(e),this.playEffectsOnStart=!1);return!0};a.Shape.prototype.playPath=function(a){var d=a.length,e=0,g=this.canvas.gc;for(g.beginPath();ec&&1>j&&(h=a.project.clientWidth, -i=a.project.clientHeight,f=!1,f=this.sh&&!this.sh.i,h=(f&&h>d.right-g.left?h:d.right-g.left)-(0d.bottom-g.top?i:d.bottom-g.top)-(0this.pa)this.rp_pa=h.from+this.pa-this.from}this.htmlDependents=[];void 0!=this.psv&& -this.setAttribute("pausedOnce",!1);if(h=this.getAttribute("onShow"))this.onShow=window[h];if(this.keyHandler=this.getAttribute("kh"))if(this.keyShortcut=this.getAttribute("sc"))(h=e(this.keyHandler,this.keyShortcut,a.D[this.element.id],a.D[this.element.id+"c"],this.from,this.to))&&a.movie.stage.addKeyHandler(h);if(!this.keyHandler&&(this.keyHandler=this.getAttribute("eh")))(h=e(this.keyHandler,"",a.D[this.element.id],a.D[this.element.id+"c"],this.from,this.to))&&a.movie.stage.addKeyHandler(h);this.isStarted= -!1;if(a.kCPOTClickBoxItem==this.type||a.kCPOTScorableButtonItem==this.type||a.kCPOTAutoShape==this.type||a.kCPOTImageBoxItem==this.type||a.kCPOTWebObject==this.type)(this.dblClick=this.getAttribute("dclk"))?a.movie.stage.getClickManager().addDoubleClick(a.D[this.element.id],a.D[this.element.id+"c"],this.element):a.kCPOTClickBoxItem==this.type&&(this.rightClick=this.getAttribute("rclk"))&&a.movie.stage.getClickManager().addRightClick(a.D[this.element.id],a.D[this.element.id+"c"],this.element);a.kCPOTTextEntryButtonItem== -this.type&&(this.parentId=this.getAttribute("vid"))&&a.movie.stage.addToParentChildMap(this.parentId,this.element.id);if(a.MSIE==a.browser&&void 0!=this.type)switch(this.type){case a.kCPOTStageShortAnswer:case a.kCPOTQuestionFillBlank:case a.kCPOTFillBlankCaption:case a.kCPOTWidgetItem:case a.kCPOTProgressIndicator:case a.kCPOTReviewArea:case a.kCPOTScoringResult:case a.kCPOTStageAnswerItem:case a.kCPOTStageAnswerLabel:case a.kCPOTStageMatchingQuestion:case a.kCPOTStageMatchingAnswerEntry:case a.kCPOTFLVItem:break; -case a.kCPOTWebObject:if(this.itemCanvasData&&(h=this.itemCanvasData.wosvg)&&""!=h)c.style.backgroundColor="rgba(255,255,255,0)";break;default:c.style.backgroundColor="rgba(255,255,255,0)"}};a.inherits(a.FrameSet,a.DisplayObject);a.FrameSet.prototype.isInRange=function(c){if(0==this.from&&0==this.to)return!0;var d=a.getDisplayObjByKey(this.itemData.mdi);return d&&-1!==d.baseStateItemID&&(d=a.getBaseStateItem(d))&&d.parentData&&(a.kCPOTSuccessCaptionItem==d.parentData.type||a.kCPOTFailureCaptionItem== -d.parentData.type||a.kCPOTHintCaptionItem==d.parentData.type||a.kCPRolloverCaptionItem==d.parentData.type||a.kCPRolloverImageItem==d.parentData.type||a.kCPOTRolloverAutoShape==d.parentData.type||a.kCPOTSuccessShapeItem==d.parentData.type||a.kCPOTFailureShapeItem==d.parentData.type||a.kCPOTHintShapeItem==d.parentData.type)?!0:a.kCPOTSuccessCaptionItem==this.type||a.kCPOTFailureCaptionItem==this.type||a.kCPOTHintCaptionItem==this.type||a.kCPRolloverCaptionItem==this.type||a.kCPRolloverImageItem==this.type|| -a.kCPOTRolloverAutoShape==this.type||a.kCPOTSuccessShapeItem==this.type||a.kCPOTFailureShapeItem==this.type||a.kCPOTHintShapeItem==this.type?!0:this.from<=c&&this.to>=c};a.FrameSet.prototype.updateOpacity=function(){if(this.element.drawingBoard&&!(a.kCPOTSuccessCaptionItem==this.type||a.kCPOTFailureCaptionItem==this.type||a.kCPOTHintCaptionItem==this.type||a.kCPOTSuccessShapeItem==this.type||a.kCPOTFailureShapeItem==this.type||a.kCPOTHintShapeItem==this.type)){var c=cpInfoCurrentFrame-this.from+1, -d=this.to-cpInfoCurrentFrame;this.transIn&&0b||b>=this.slides.length?!1:a.D[this.slides[b]].iols? -!0:!1};a.Timeline.prototype.is360QSlideIndex=function(b){return 0>b||b>=this.slides.length?!1:a.D[this.slides[b]].i360qs?!0:!1};a.Timeline.prototype.isThreeDSlideIndex=function(b){return 0>b||b>=this.slides.length?!1:"ThreeD Slide"===a.D[this.slides[b]].st?!0:!1};a.Timeline.prototype.getFrameOfOverlaySlide=function(a){return this.overlayslideToFrameNumMap[a]};a.Timeline.prototype.getFrameOf360QSlide=function(a){return this._360QSlideIndexToFrameNumMap[a]};a.Timeline.prototype.isInvalidSlideIndex= -function(a){return 0>a?!0:a';else b.imgf&&(l=!0,h||(i=a.newElem("div"),i.id="__bgDiv__",k=!0),i.setAttribute("class","cp-imgf"),i.style.position="absolute",a.responsive?(i.style.width="100%",i.style.height="100%"):(i.style.width=e+"px",i.style.height=f+"px"),i.firstChild&&"CANVAS"==i.firstChild.nodeName?i.firstChild.id="Slide"+b.id+"imgf":i.innerHTML='');l?k&&(c.firstChild? -c.insertBefore(i,c.firstChild):c.appendChild(i)):h&&c.removeChild(i);var m;j||(m=document.getElementById(g+"c"));m||(m=a.newElem("canvas"),m.setAttribute("class","cp-shape"),c.appendChild(m));m.id="Slide"+b.id+"c";f=a.D[m.id];h=f.b;j=h[2]-h[0];g=h[3]-h[1];e=!0;if(a.responsive){var l=a("project").clientWidth,p=a("project").clientHeight,h=j,k=g,n=l/j,o=p/g,n=nl&&(h=l),g>p&&(k=p));if(l=f.css[a.ResponsiveProjWidth].crop)if((p=a.movie.im.images[f.ip])&&p.nativeImage&&p.nativeImage.complete)if(l= -a.getIntersectionRect([0,0,p.nativeImage.width,p.nativeImage.height],[l.x,l.y,h,k]),0<=l.w&&l.w=this.slides.length||0>b?!1:a.movie.playbackController?""==a.movie.playbackController.AllowedToGoToSlide(cpInfoCurrentSlideIndex,b):!0};a.Timeline.prototype.getSlideIndexForFrame=function(b){for(var c=0;c=d.from&&b<=e)return c}return-1};a.Timeline.prototype.getAllSlideNames=function(){return this.slides};a.Timeline.prototype.getSlideNameForIndex=function(a){return 0<=a&&a=cpInfoCurrentFrame&&(g=!0);if(a.kCPOTVideo==f.type){var j=f.children[0];j&&j.element&&(j=j.element.firstChild)&&"VIDEO"==j.tagName&&(g=!0)}else if(a.IDEVICE==a.device||a.device==a.ANDROID)if(a.kCPOTFLVItem==f.type||a.kCPFullMotion==f.type||a.kCPOTVideo==f.type||a.kCPOTVideoResource==f.type)if((j= -f.children[0])&&j.element)(j=j.element.firstChild)&&"VIDEO"==j.tagName&&(g=!0);if(g){for(var i in f.children)j=f.children[i],j.element&&(g=j.element.parentElement)&&("cp-rewrap"==g.className?d[g.id]=1:d[j.element.id]=1);f.element&&(d[f.element.id]=1);if(a.IDEVICE==a.device||a.device==a.ANDROID)f.suppliedElement&&(d[f.suppliedElement.id]=1)}}for(f=c.firstChild;f;f=e)if(e=f.nextSibling,f&&!("__bgDiv__"==f.id||c.id+"c"==f.id||d[f.id]||a.inVR&&"cp-ThreeDSlide"===f.className))f.onmouseover=null,f.onmouseout= -null,f.ontouchstart=null,f.ontouchend=null,f.onmousedown=null,f.onmouseup=null,f.ontouchmove=null,f.onclick=null,a.removeGestureEvent(f,a.GESTURE_EVENT_TYPES.TAP),a.verbose&&a.log("removing "+f.id),c.removeChild(f);for(c=c.nextSibling;c;c=e)e=c.nextSibling,d[c.id]||(c.onmouseover=null,c.onmouseout=null,c.ontouchstart=null,c.ontouchend=null,c.onmousedown=null,c.onmouseup=null,c.ontouchmove=null,c.onclick=null,a.removeGestureEvent(c,a.GESTURE_EVENT_TYPES.TAP),a.verbose&&a.log("removing "+c.id),b.removeChild(c)); -for(var h in this.parentChildMap)d[h]||(this.parentChildMap[h]=null)}};a.Timeline.prototype.loadAssetsForSlideAtIndex=function(b){a.verbose&&a.log("loadAssetsForSlideAtIndex "+b);a.movie.pm.loadSlideAssets(b);var c=a.movie.pm.numSlidesToAttemptPreloaded(),d=!1,e=a.D.sgMgr;if(e&&(e=e.sg)&&e.length>b)for(var e=e[b][1],f=e.length,g=0;0=f.GetNumberOfQuizAttempts()&&(f.GetIsAllowReviewMode()&&f.SetIsInReviewMode(!0),f.SetIsQuizCompleted(!0)), -f.GetIsPassed()&&f.SetIsQuizCompleted(!0),f.GetScore()):shouldShowSlide=!1);c.i360qs&&a.ThreeDQuestionHelper&&a.ThreeDQuestionHelper.addQuestionOverlay()}b={};e=[];for(d=d.firstChild;d;d=d.nextSibling)if(d.nodeType==Node.ELEMENT_NODE&&"IMG"!=d.nodeName){f=!1;if("Slide"+c.id==d.id)f=!0;else for(g=0;g=this.slides.length)){a.ThreeDQuestionHelper&&a.ThreeDQuestionHelper.removeQuestionOverlay();a.resetDisplayAndIdMap();var c=this.getSlideNameForIndex(b),d=a.D[c],e=d.from,f=d.to;d.nonAdjustedStartFrame=d.from;d.from=e;d.to=f;_cpInfoCurrentSlide=b+1;_cpInfoCurrentSlideLabel=d.lb;this.currentSlide=d;this.currentSlideName=c;a.adjustProjectHeight(this.currentSlide);this.cStart=e;this.cEnd=f;this.audioCCItems=this.FilterVTMLContent(d.audCC); -this.videoCCItems=this.FilterVTMLContent(d.vidCC);this.ccProperties=d.ccProperties;this.updateCCProps();this.curVidCCItem=this.curAudCCItem=-1;a.movie.PPTXSlide="PPTX Slide"==d.st;this.m_SlideHasEffects=PPTXLib.hasAnimationInfo(d);a.movie.resetMovieElapsedTime(a.movie.PPTXSlide);a.movie.am.changeCurrentSlide(b,e,!0);a.movie.vdm.changeCurrentSlide();d.v=!0;a.D.project_main.currentFrame=e;this.slideEnterAction=d.sea;this.slideExitAction=d.sxa;this.currentOverlaySlideParentFrame=this.currentSlideStartFrame= -e;this.currentSlideStartTime=1E3*this.currentSlideStartFrame/a.getCpInfoOriginalFPS();e=b;d.iols?(this.currentOverlaySlideParentFrame=e=this.getFrameOfOverlaySlide(b),e=this.getSlideIndexForFrame(e),0>e&&(e=b)):d.i360qs&&(this.currentOverlaySlideParentFrame=e=this.getFrameOf360QSlide(b),e=this.getSlideIndexForFrame(e),0>e&&(e=b));this.setAdjacentSlidesStartFrames(this.slides,e);try{this.RemoveEventListeners();var g=document.getElementById("Slide"+d.id);if(!this.pendingOnSlideLayerRemovedAction||!g)this.addFramesetsForSlideAtIndex(b); -else{var j=this.getSlideNameForIndex(b);this.updateAnimationsIfFramesetsExist(j)}this.AddEventListeners(d);this.noSkipFrames={};this.forEachChild(a.updateNoSkipFramesAndUpdateVarText);PPTXLib.updateNoSkipFramesFromEffectData(d);this.updateNoSkipFramesFromOverlaySlideData();this.updateNoSkipFramesFromThreeDSlideData();this.noSkipFrames[this.cEnd]=this.cEnd;this.noSkipFrames[this.cEnd+1]=this.cEnd+1;var i=this.m_interactionManagers[c];if(i){var h=i.PauseAtFrame();-1!=h&&(this.noSkipFrames[h]=h)}}catch(k){a.log(k), -k.stack&&a.log(k.stack)}}};a.Timeline.ReasonForUpdate={};a.Timeline.ReasonForUpdate.PROGRESS=1;a.Timeline.ReasonForUpdate.JUMP=2;a.Timeline.prototype.fallsOutsideCurrentSlide=function(){return this.cEndcpInfoCurrentFrame};a.Timeline.prototype.updateSlideTransition=function(){this.currentSlide&&this.currentTransition&&(this.cStart+15this.lastFrame&&!this.hasOverlaySlide())this.onEndOfMovie();else{if(this.cEnd==cpInfoCurrentFrame){if(a.movie.playbackController&&(c=a.movie.playbackController.GetQuizController())){var d=a.movie.playbackController.GetLMSType();d&&(d=d.toUpperCase());c.GetIsReportingEnabled()&&("EMAIL"!=d&&"ACROBAT"!=d&&"INTERNALSERVER"!=d)&&(a.m_isLMSPreview&&void 0!=a.LMSDriverHolder&& -a.toggleLMSPreviewDebugLogsColor(a.LMSDriverHolder),a.movie.playbackController.SendCourseData(!1))}d=1;cpInfoCurrentSlideIndex&&(d=cpInfoCurrentSlideIndex+1);var e=a.D[this.getSlideNameForIndex(d)];if(e){c=cpInfoCurrentFrame;_cpInfoCurrentFrame=e.from;this.adjustFrameToNextNonOverlayFrameOnLayerZero();var e=this.getSlideIndexForFrame(cpInfoCurrentFrame),f=a.D[this.getSlideNameForIndex(e)];f&&!0==f.dummyResultSlide&&(d=e);_cpInfoCurrentFrame=c}if(d>=this.slides.length&&a.movie.playbackController&& -(c=a.movie.playbackController.GetQuizController())&&c.DoSubmitAll(cpInfoCurrentSlideIndex)){a.movie.pause(a.ReasonForPause.CANNOT_MOVE_AHEAD);return}if(!this.canUpdateToSlide(d)&&d=b){c=e;break}}return c};a.Timeline.prototype.canAdvanceCurrentFrameForEffects=function(b){var c=cpInfoCurrentFrame,d=-1,e;for(e in this.noSkipFrames){var f=this.noSkipFrames[e];if(f>=c){d= -f;break}}c=1E3*(d-a.movie.stage.currentSlideStartFrame)/a.getCpInfoOriginalFPS();return b>c?!1:!0};a.Timeline.prototype.adjustFrameToNextNonOverlayFrameOnLayerZero=function(){if(!this.hasOverlaySlide()){var b=this.overlayslides.concat(this._360questionslides);if(b&&0!=b.length){b.sort(function(b,c){return a.D[b].from-a.D[c].from});var c=cpInfoCurrentFrame,d;for(d in b){var e=a.D[b[d]];c>=e.from&&c<=e.to&&(c=e.to+1)}_cpInfoCurrentFrame=c}}};a.Timeline.prototype.attemptToAdvanceCurrentFrameByOffset= -function(a){if(!(0>=a)){var c=!0,a=cpInfoCurrentFrame+a,d;for(d in this.noSkipFrames){var e=this.noSkipFrames[d];if(cpInfoCurrentFramee){a=e;c=!1;break}}d=a;c&&(d={currFrame:a,smoothAdvance:!0});_cpInfoCurrentFrame=d}};a.Timeline.prototype.updateFrameCurrentOnPause=function(){this.updateToFrame(cpInfoCurrentFrame,!0)};a.Timeline.prototype.pauseAtFrame=function(b){if(!this.paused){this.paused=!1;this.forEachChild(function(c){var e=a.GetDataForElement(c.suppliedElement||c.element,!0);if(e){var f= -a.D[e.mdi].visible;if(b!=a.movie.stage.interactivePauseFrame)if(f&&(c.pa==b||c.rp_pa&&b==c.rp_pa)){if((f=e.handled)&&(a.kCPOTClickBoxItem==e.type||a.kCPOTScorableButtonItem==e.type||a.kCPOTAutoShape==e.type||a.kCPOTImageBoxItem==e.type))f=!1;if(!f&&(!e.iqb&&!e.clickedOnce)&&(void 0==e.enabled||e.enabled))if(a.movie.am.interactiveItemFound=!0,a.D[c.element.id].ssp&&(a.movie.am.ssp=1),a.movie.pause(a.ReasonForPause.INTERACTIVE_ITEM),a.movie.paused&&null!=a.movie.stage.currentSlide)a.movie.stage.currentSlide.topMostObjectInteractiveObject= -c.element.id}else if(c.psv==b&&f&&!e.pausedOnce&&(void 0==e.enabled||e.enabled)){if(c=c.children[0])if(f=c.element)if((f=f.firstChild)&&"VIDEO"==f.tagName&&c.started&&(c.paused||c.ended))return;e.pausedOnce=!0;a.movie.pause(a.ReasonForPause.EVENT_VIDEO_PAUSE)}}});var c=this.m_interactionManagers[this.getCurrentSlideName()];void 0!=c&&b!=a.movie.stage.interactivePauseFrame&&c.CheckInteractionPause(b)&&a.movie.pause(a.ReasonForPause.INTERACTIVE_ITEM)}};a.Timeline.prototype.getCCBreakpointWidth=function(b){if(!b|| -"undefined"==typeof b)b=this.ccProperties;var c=a.getProject(),c=parseInt(c.style.width);if(a.responsive)for(var c=a.ResponsiveProjWidth,d=Object.keys(b),e=a.project.clientWidth,f=0;fm&&(m=40,g=4E3/l);60> -p&&(f=6E3/k);if(a.responsive){switch(b.hasOwnProperty("pos")?b.pos:ccProjPropsElem.pos){case a.CCPosition.TopLeft:j=i=0;break;case a.CCPosition.TopCenter:i=(100-f)/2;j=0;break;case a.CCPosition.TopRight:i=100-f;j=0;break;case a.CCPosition.MiddleLeft:j=(100-g)/2;i=0;break;case a.CCPosition.MiddleCenter:j=(100-g)/2;i=(100-f)/2;break;case a.CCPosition.MiddleRight:j=(100-g)/2;i=100-f;break;case a.CCPosition.BottomLeft:j=100-g;i=0;break;case a.CCPosition.BottomCenter:j=100-g;i=(100-f)/2;break;case a.CCPosition.BottomRight:j= -100-g,i=100-f}100n-5){var o=parseFloat(j*l/100);m+o>n-5&&(d.style.top=n-m+"px")}}var q=a("ccClose");q&&(q.style.right="0px")}catch(r){console.log(r)}}};a.Timeline.prototype.updateAudioCC=function(){if(this.audioCCItems){var b=a.movie.am.slideAudios[a.movie.am.currentSlideAudio];if(b&&b.nativeAudio){var c= -b.nativeAudio.currentTime*a.movie.fps,d=0;0!=c&&(d=c+b.from);this.currentFrameHasVideoCC||this.updateCC(this.audioCCItems,this.curAudCCItem,d,!0)}}};a.Timeline.prototype.updateVideoCC=function(a){this.videoCCItems&&this.updateCC(this.videoCCItems,this.curVidCCItem,a,!1)};a.Timeline.prototype.updateCC=function(b,c,d,e){try{if(!a.CCInfo&&!this.ccVisibility&&cpCmndCC||a.CCInfo&&(!(!a.CCInfo.isUserVisibilityIntentSet&&this.ccVisibility||a.CCInfo.userVisibilityIntent)||!b.length&&!this.currentFrameHasAudioCC&& -!this.currentFrameHasVideoCC&&cpCmndCC))this.showCC(!1);else{e?this.currentFrameHasAudioCC=!1:this.currentFrameHasVideoCC=!1;var f=a.movie.ccText,g=a.movie.cc.style.height;d>parseInt(d)&&(d=parseInt(d)+1);var g="%"==g[g.length-1]?parseFloat(g)*a.project.clientHeight/100:parseFloat(g),d=d-(this.cStart-1),j=b.length-1,i=1,h=this.cEnd-this.cStart+1;0<=j&&(i=b[j].sf,h=b[j].ef);for(a.getProject();0<=j;--j)if(i>b[j].sf&&(i=b[j].sf),h=d){e?this.currentFrameHasAudioCC= -!0:this.currentFrameHasVideoCC=!0;if(c==j)return;var k="",l=this.getCCBreakpointWidth(b[j].t),k=b[j].t.hasOwnProperty(l)?b[j].t[l]:"";""!=k?this.showCC():this.showCC(!1);f.innerHTML=k;var p=$(f).attr("cpAlign"),k=3,m=parseInt($(f).css("height"));switch(parseInt(p)){case a.TextLayoutEnum.kTLBottom:k=g-m;k=3k;){var o=parseInt((n+k)/2);$(f).find("span.cp-actualText").css("font-size",o+"px");if(o==k||o==n||10==o)break;m=parseInt($(f).css("height"));gh)&&!this.currentFrameHasAudioCC&&!this.currentFrameHasVideoCC)f.innerHTML="",this.showCC(!1)}}catch(r){console.log(r)}};a.Timeline.prototype.updateToFrame=function(b,c,d){if(!(b>this.lastFrame)&&(this.currentFrameHasVideoCC=this.currentFrameHasAudioCC=!1,this.updateAudioCC(), -!this.paused&&!this.yield)){var e=this.lastFrame-b;if(this.fadeInAtStart&&b<=this.fadeInAtStart)this.mainSlideDiv.style.opacity=b/this.fadeInAtStart;else if(this.fadeOutAtEnd&&b>this.lastFrame-this.fadeOutAtEnd)this.mainSlideDiv.style.opacity=e/this.fadeOutAtEnd;else if(!this.currentTransition||!(this.currentTransition.type==a.SlideTransitionType.kFTFade||this.currentTransition.type==a.SlideTransitionType.kFTPhoto))this.mainSlideDiv.style.opacity=1;this.updateVideoCC(b);if(!a.movie.waitingForResources()){this.interactivePauseFrame!= -b&&(this.interactivePauseFrame=-1);this.forEachChild(function(a){if(a.considerForUpdate)if(a.isInRange(b)){if(!a.isStarted||c)a.element.style.display="block"}else a.element.style.display="none"});var f=this;this.forEachChild(function(e){if(e.considerForUpdate)if(e.isInRange(b))if(e.isStarted)c?e.start(c,a.ReasonForDrawing.kMoviePaused):(f.overlayslideframes==void 0||!(cpInfoCurrentFrame in f.overlayslideframes))&&e.updateFrame(d);else{e.start(c,a.ReasonForDrawing.kRegularDraw);a.lSameSlideSeek=false}else e.isStarted&& -e.reset()});void 0!=this.m_EffectAnimationManager&&(a.movie.PPTXSlide||this.m_SlideHasEffects)&&PPTXLib.updateAnimationManager()}}};a.Timeline.prototype.onEndOfSlide=function(a){this.forEachChild(function(c){c.onEndOfSlide(a)})};a.Timeline.prototype.onEndOfMovie=function(){void 0!=this.onEndOfMovieExecutedFrame&&this.onEndOfMovieExecutedFrame=cpInfoCurrentFrame&&(_cpInfoCurrentFrame=1);this.updateToFrame(cpInfoCurrentFrame);this.RemoveFeedbacks(a.FeedbackCloseReason.SLIDE_CHANGE); -this.clearParentChildMap()};a.Timeline.prototype.reset=function(){this.paused=!1;this.element.style.display="none";this.m_keyManager.clearHandlers();this.m_clickManager.clearClicks();_cpInfoCurrentFrame=0;this.updateToFrame(cpInfoCurrentFrame);this.RemoveFeedbacks(a.FeedbackCloseReason.SLIDE_CHANGE);this.clearParentChildMap()};a.Timeline.prototype.stop=function(){this.paused=!0};a.Timeline.prototype.FilterVTMLContent=function(a){for(var c=a.length-1;0<=c;c--)for(var d=a[c],e=Object.keys(d.t),c=e.length- -1;0<=c;c--)if(d.t.hasOwnProperty(e[c])){var f=d.t[e[c]],g="",j=/<vtml/i,i=/<\/vtml/i;do{var h=f.search(j);if(0>h){g+=f;break}else{g+=f.substr(0,h);f=f.substr(h+8);h=f.search(">");if(0>h)break;f=f.substr(h+4);h=f.search(i);if(0>h){g+=f.substr(0);break}g+=f.substr(0,h);f=f.substr(h+9);h=f.search(">");if(0>h)break;f=f.substr(h+4);if(!f.length)break}}while(1);d.t[e[c]]=g}return a};a.Timeline.prototype.updateAnimationsIfFramesetsExist=function(b){if(void 0===this.m_EffectAnimationManager&& -(this.m_SlideHasEffects||a.movie.PPTXSlide)){this.m_EffectAnimationManager=PPTXLib.initializeAnimationManagerForCPSlide(a.D[b]);for(b=this.getSlideDiv().firstChild;b;b=b.nextSibling){var c=this.getFrameset(b.id);PPTXLib.instanceManager&&c&&c.children&&0=a?(a/this.duration).toString():13>=a?"0":"1")};a.RotateTransition=function(b){a.RotateTransition.baseConstructor.call(this,b);this.stepsR=90/this.duration;a.applyTransform(this.item,"rotate(-90deg)");this.type=a.SlideTransitionType.kFTRotate}; -a.inherits(a.RotateTransition,a.SlideTransition);a.RotateTransition.prototype.reset=function(){a.applyTransform(this.item,"")};a.RotateTransition.prototype.update=function(b){this.isCompleted(b)||(this.item.style["-ms-transform-origin"]="left top",this.item.style["-moz-transform-origin"]="left top",this.item.style["-webkit-transform-origin"]="left top",this.item.style["-o-transform-origin"]="left top",this.item.style["transform-origin"]="left top",a.applyTransform(this.item,"rotate("+(this.duration- -(b-this.from))*this.stepsR+"deg)"))};a.SqueezeTransition=function(b){a.SqueezeTransition.baseConstructor.call(this,b);this.stepsH=1/this.duration;a.applyTransform(this.item,"scale(0,1)");this.type=a.SlideTransitionType.kFTSqeeze};a.inherits(a.SqueezeTransition,a.SlideTransition);a.SqueezeTransition.prototype.reset=function(){a.applyTransform(this.item,"")};a.SqueezeTransition.prototype.update=function(b){this.isCompleted(b)||a.applyTransform(this.item,"scale("+(b-this.from)*this.stepsH+",1)")};a.ZoomTransition= -function(b){a.ZoomTransition.baseConstructor.call(this,b);this.stepsH=1/this.duration;this.stepsV=1/this.duration;this.item.style["-ms-transform-origin"]="left top";this.item.style["-moz-transform-origin"]="left top";this.item.style["-webkit-transform-origin"]="left top";this.item.style["-o-transform-origin"]="left top";this.item.style["transform-origin"]="left top";a.applyTransform(this.item,"scale(0,0)");this.type=a.SlideTransitionType.kFTZoom};a.inherits(a.ZoomTransition,a.SlideTransition);a.ZoomTransition.prototype.reset= -function(){a.applyTransform(this.item,"")};a.ZoomTransition.prototype.update=function(b){this.isCompleted(b)||a.applyTransform(this.item,"scale("+(b-this.from)*this.stepsH+","+(b-this.from)*this.stepsV+")")};a.BlindsTransition=function(b){a.BlindsTransition.baseConstructor.call(this,b);b=a("div_Slide");this.item=a("slide_transition_canvas");this.item.width=b.clientWidth;this.item.height=b.clientHeight;this.gc=this.item.getContext("2d");this.totalRects=10;this.hsteps=this.item.width;this.vstepsMajor= -this.item.height/this.totalRects;this.vstepsMinor=this.vstepsMajor/this.duration;this.type=a.SlideTransitionType.kFTBlinds};a.inherits(a.BlindsTransition,a.SlideTransition);a.BlindsTransition.prototype.reset=function(){this.gc.fillStyle="rgba(255, 255, 255, 1)";this.gc.fillRect(0,0,this.item.width,this.item.height);this.item.style.display="none"};a.BlindsTransition.prototype.update=function(a){if(this.isCompleted(a))this.item.style.display="none";else{this.item.style.display="block";this.gc.fillStyle= -"rgba(255, 255, 255, 1)";this.gc.fillRect(0,0,this.item.width,this.item.height);for(var a=(a-this.from)*this.vstepsMinor,c=0;cd.length&&(j=!1);c&&j&&(h=f);k=1==a.pfc&&c;a.handled&&(k=!1);e=null;j&&(e=new b.Feedback(d,h,k,b.FeedbackType.SUCCESS,a));(!c||!j)&&g&&b.movie.executeAction(f);j&&e.show();return!0}return!1};b.clickFailureHandler=function(a, -c,g){var d=!1;if(a=t(a)){if(a.handled&&"cpCmndResume = 1;"==a.oca)return!0;var f=a.ofct,d=a.ofc,h=a.ofa;if(!d||2>d.length)g=!1;var j=null;f&&(c&&g)&&(j=h);var e=null;g&&(e=new b.Feedback(d,j,!1,b.FeedbackType.FAILURE,a));d=!0;(!f||!g)&&c?(!1==a.cpa&&(a.clickedOnce=!0),b.movie.executeAction(h)):d=!1;g?e.show():d=!1}return d};b.cbKH=function(a,c,g){if(!a)return!1;var d=a.stl,f=a&&a.enabled&&c&&c.visible;if(!1==f&&d&&0=c);return h};b.qbKH=function(a,c,g){if(!a||!c)return!1;var d=a.stl,f=a.enabled&&c.visible;if(!1==f&&d&&0=d);j&&b.SubmitInteractions(j,b.QuestionStatusEnum.INCORRECT,f-1);return b.clickFailureHandler(a,h,c)};b.ClickData=function(a,c,b){this.m_obj=a;this.m_objc=c;this.m_htmlElem=b;this.m_from=a.from;this.m_to=a.to};b.ClickData.prototype.isValid=function(){return void 0!=this.m_obj&&void 0!=this.m_objc&&void 0!=this.m_htmlElem&&this.m_to>=this.m_from};b.ClickData.prototype.isClickable=function(a){return!this.m_obj||!this.m_obj.enabled||!this.m_objc|| -!this.m_objc.visible?!1:this.m_from<=a&&a<=this.m_to};b.ClickManager=function(){this.m_rightClickArr=[];this.m_doubleClickArr=[]};b.ClickManager.prototype.addRightClick=function(a,c,g){a=new b.ClickData(a,c,g);this.m_rightClickArr.push(a)};b.ClickManager.prototype.addDoubleClick=function(a,c,g){a=new b.ClickData(a,c,g);this.m_doubleClickArr.push(a)};b.ClickManager.prototype.removeRightClick=function(a){for(var c=0,c=0;cj[k].tabIndex&&(e[h++]=j[k]);if(1==b.D.pref.rkt&&9==a.keyCode){for(var l,m,h=!1,k=0;kc)?(c=e[k].tabIndex,d=e[k]):e[k].tabIndex== -c&&(d=e[k])}m=a.target.getAttribute("tabindex");a=a.target.id;m=parseInt(m,10);m==c&&d.id==a&&document.getElementById(f.id).focus()}};b.KeyManager.prototype.handleKeyUp=function(a){this.check(a);a:{this.m_prevKeyCode=!0;var c=!1;a.keyCode==b.SHIFT?(this.m_shift=!1,c=!0):a.keyCode==b.CONTROL?(this.m_ctrl=!1,c=!0):a.keyCode==b.ALT&&(this.m_alt=!1,c=!0);this.m_shift=1==a.shiftKey;this.m_ctrl=1==a.ctrlKey;this.m_alt=1==a.altKey;if(!c)for(c=0;c=g){for(var f=c.m_shortcut,k=!1,l=0;ln){var q=m;m=n;n=q}m=48<=m&&57>=m&&96<=n&&105>=n&&m-48===n-96||109<=m&&111>=m&&189<=n&&191>=n&&m-109===n-189?!0:!1}m&&(k=!0)}f=!k?0==f.m_keyCode&&0==this.m_keys.length&&!this.m_prevKeyCode&&(f.m_isCtrl&&this.m_ctrl&&!this.m_shift&&!this.m_alt||f.m_isShift&&this.m_shift&&!this.m_ctrl&&!this.m_alt)?!0:!1:this.m_ctrl==f.m_isCtrl&&this.m_shift==f.m_isShift&&this.m_alt==f.m_isAlt;1===b.D.pref.acc&&c.m_shortcut.m_keyCode===a.keyCode&&(f=!0);if(f)if(j==b.kCPOTTextEntryBoxItem){if(c.m_name==e){h= -c;if(c.m_handler(f))return!0;break}}else{h=c;if(c.m_handler(f))return!0;break}}for(d=0;d=g&&c.m_handler(!1))return!0;var o;a.keyCode?o=a.keyCode:a.which&&(o=a.which);if(13==o||32==o){var p,h="";a.target?p=a.target:a.srcElement&&(p=a.srcElement);3==p.nodeType&&(p=p.parentNode);p&&(h=p.id);if(""!=h)for(d=0;d=g&&c.m_handler(!0))return!0}return!1};b.KeyManager.prototype.addHandler=function(a){a&&a.isValid()&&this.m_keyHandlers.push(a)};b.KeyManager.prototype.removeHandler=function(a){if(a&&a.isValid()){a=a.m_shortcut;for(i=0;i=k&&s<=m&&o>=l&&o<=n){c=e;break a}}}}c=void 0}void 0!==c&&!1==g.CheckIfCurrMouseOverItemIsHit(c)&&g.DoMouseOutOnCurrMouseOverItem()}}if(b.DESKTOP===b.device)if(void 0===this.m_mouseOverItem)void 0!==this.m_TimerID&&(clearTimeout(this.m_TimerID),this.m_TimerID=void 0);else{var g=this;void 0!==this.m_TimerID&&(clearTimeout(this.m_TimerID), -this.m_TimerID=void 0);this.m_TimerID=setTimeout(c,300)}}})(window.cp); -(function(b){b.Gradient=function(a,f,d){b.Gradient.baseConstructor.call(this,a);this.visible=1;this.parentId=f;if(this.parentObj=b.D[f])this.gradientData=this.parentObj.gf,a=this.gradientData.b,this.bounds={minX:a[0],minY:a[1],maxX:a[2],maxY:a[3]},this.args=d;this.isDrawn=!1};b.inherits(b.Gradient,b.DisplayObject);b.Gradient.prototype.start=function(a,b){this.drawIfNeeded(a,b);if(!this.effectIsStarted||a)this.updateEffects(this.hasEffect),this.effectIsStarted=!0};b.Gradient.prototype.reset=function(){delete b.ropMap[this.element.id]; -this.isDrawn=!1;this.element.width="0";this.element.height="0";this.element.style.width="0px";this.element.style.height="0px";this.element.left="0";this.element.top="0";this.element.style.left="0px";this.element.style.top="0px";this.effectIsStarted=!1};b.Gradient.prototype.drawIfNeeded=function(a,f){if((!b.responsive||!this.drawForResponsive(a,f))&&!this.isDrawn&&this.gradientData){if(void 0==this.canvasElem)for(var d=this.element.firstChild;d;d=d.nextSibling)if(d.nodeType==Node.ELEMENT_NODE&&d.id&& -d.id==this.parentId+"gf"){this.canvasElem=d;break}if(this.canvasElem){var c=this.bounds,e=c.minX,g=c.minY,d=c.maxX-c.minX,c=c.maxY-c.minY;this.canvasElem.style.position="absolute";e=(this.canvas=b.createCanvas(e,g,d,c,this.canvasElem)).gc;e.save();if(g=b.getGradientFill(this.gradientData,e))e.fillStyle=g,e.fillRect(0,0,d,c);e.restore();this.isDrawn=!0}}};b.Gradient.prototype.drawForResponsive=function(a){if(!b.responsive)return!1;if(this.isDrawn&&!a)return!0;if(!this.gradientData)return!1;if(void 0== -this.canvasElem)for(a=this.element.firstChild;a;a=a.nextSibling)if(a.nodeType==Node.ELEMENT_NODE&&a.id&&a.id==this.parentId+"gf"){this.canvasElem=a;break}if(!this.canvasElem)return!1;this.canvasElem.style.width="100%";this.canvasElem.style.height="100%";a=b.createResponsiveStyleObj(void 0,void 0,"0px","0px",void 0,void 0,"100%","100%",void 0);a.ipiv=!0;a=(this.canvas=b.createResponsiveCanvas(a,this.canvasElem.clientWidth,this.canvasElem.clientHeight,this.canvasElem)).gc;a.save();var f=b.getGradientFill(this.gradientData, -a,this.canvasElem.clientWidth/b.D.project.w,this.canvasElem.clientHeight/b.D.project.h);f&&(a.fillStyle=f,a.fillRect(0,0,this.canvasElem.clientWidth,this.canvasElem.clientHeight));a.restore();return this.isDrawn=!0};b.ImageFill=function(a,f,d){b.ImageFill.baseConstructor.call(this,a);this.visible=1;this.parentId=f;if(this.parentObj=b.D[f])this.tileData=this.parentObj.imgf,a=this.tileData.b,this.bounds={minX:a[0],minY:a[1],maxX:a[2],maxY:a[3]},this.args=d;this.isDrawn=!1};b.inherits(b.ImageFill,b.DisplayObject); -b.ImageFill.prototype.start=function(a,b){this.drawIfNeeded(a,b);if(!this.effectIsStarted||a)this.updateEffects(this.hasEffect),this.effectIsStarted=!0};b.ImageFill.prototype.reset=function(){delete b.ropMap[this.element.id];this.isDrawn=!1;this.element.width="0";this.element.height="0";this.element.style.width="0px";this.element.style.height="0px";this.element.left="0";this.element.top="0";this.element.style.left="0px";this.element.style.top="0px"};b.ImageFill.prototype.getTranslationValuesForTiletype= -function(a){var f=a.img.tiletype,d=0,c=0,e=a.b[2]-a.b[0],g=a.b[3]-a.b[1],h=a.img.w,a=a.img.h,i=this.canvasElem.clientWidth/b.D.project.w,j=this.canvasElem.clientHeight/b.D.project.h;b.responsive&&(e=Math.floor(e*i),g=Math.floor(g*j));switch(f){case "t":d=(e-h)/2;break;case "tr":d=e-h;break;case "l":c=(g-a)/2;break;case "c":d=(e-h)/2;c=(g-a)/2;break;case "r":d=e-imageWidthimageWidth;c=(g-a)/2;break;case "bl":c=g-a;break;case "b":d=(e-h)/2;c=g-a;break;case "br":d=e-h,c=g-a}0=b?"NaN":100*a/b},isSlidePartOfCurrentBranch:function(a){return 0a)){for(var b=-1,c=0;cc.slides.length-1)||c.isOverlaySlideIndex(a)){var c=c.getSlideNameForIndex(a),c=cp.D[c],f=cp.D[c.mdi],e=f.ip;if(!e&&(cp.device==cp.IDEVICE||cp.device==cp.ANDROID))e=f.aip;e&&d.push(e);c.imgf&&(c.imgf.img&&c.imgf.img.ip&&c.imgf.img.ip.length>0)&&d.push(c.imgf.img.ip);c=c.si;for(f=0;f0)&&d.push(g.img.ip);(g=e.asbos)&&(g.imgf&&g.imgf.img&&g.imgf.img.ip&&g.imgf.img.ip.length>0)&&d.push(g.imgf.img.ip);(g=e.asbds)&&(g.imgf&&g.imgf.img&&g.imgf.img.ip&&g.imgf.img.ip.length>0)&&d.push(g.imgf.img.ip);if(e=e[cp.kPPTXSlideImagesStr])for(g=0;g0&&d.push(cp.kPPTXSlideImagesDir+e[g].ip)}}cp.movie.im.loadImages(a,d,b)}}function k(){eval('function handlePasswordProtected(){if(cp.D.secret){var a=lMainModelData.pwd,b=lMainModelData.pwdRetryMsg,d=function(){var d=document.getElementById("k333"),c=!0;d&&d.value!=a&&(c=!1);if(c)HideEverything();else if(cp.verbose&&cp.log("incorrect pwd"),d=document.getElementById("a5__px"))d.innerHTML=b};cp.passwordDiv.innerHTML="";cp.registerGestureEvent(document.getElementById("checkPwdButton"),cp.GESTURE_EVENT_TYPES.TAP,d);document.getElementById(lPwdTxtBoxVarName).onkeyup=function(){d()};ShowEverything()}}function handleExpiry(){if(cp.D.expiryDate){var a=new Date;a.setFullYear(lMainModelData.prjExpY,lMainModelData.prjExpM-1,lMainModelData.prjExpD-1);(new Date).getTime()<=a.getTime()||(a=lMainModelData.prjExpMsg,cp("__z_21").style.visibility="hidden",cp("a5__px").style.visibility="hidden",cp("md5").style.visibility="hidden",cp.expiryDiv.innerHTML="
"+a+"
")}else cp.expiryDiv.style.display="none",cp.expiryDiv.style.visibility="hidden"}function handleAutoplay(){var a=cp.D[cp.movie.main.id].autoplay;document.getElementById("playImage");a?cp.autoPlayNeedsUserClick()?(cp.autoplayImage.style.display="none",cp.autoplayImage.style.visibility="hidden"):cp("autoplayDiv").style.display="none":(cp.movie.autoplayimagew=0,cp.movie.autoplayimageh=0,a=cp.D[cp.movie.main.id].autoplayFileName,void 0!=a?(cp.movie.im.getImageDataURI(a,function(a){cp.autoplayImage.src=a}),cp.autoplayImage.style.opacity=0.7,cp.movie.autoplayimagew=cp.D[cp.movie.main.id].autoplayimagew,cp.movie.autoplayimageh=cp.D[cp.movie.main.id].autoplayimageh):(cp.autoplayImage.style.display="none",cp.autoplayImage.style.visibility="hidden"));a=function(a){if(!a.target||!(a.target.tagName.toUpperCase()=="INPUT"||a.target.tagName.toUpperCase()=="SELECT"||a.target.tagName.toUpperCase()=="TEXTAREA")){(cp.isTextInputInFocus()||document.activeElement.tagName.toUpperCase()=="SELECT")&&document.activeElement.blur();a.preventDefault()}};if(cp.D[cp.movie.main.id].pprtd){var b=cp.D[cp.movie.main.id],d=b.ps,f=function(a){if(a){cp("project").style.visibility="visible";cp("playbar").style.visibility="visible";cp("toc").style.visibility="visible";cp.pwdv.parentNode.removeChild(cp.pwdv)}else{cp("project").style.visibility="hidden";cp("playbar").style.visibility="hidden";cp("toc").style.visibility="hidden"}},c=function(){var a=document.getElementById("pwdt"),e=true;if(a){a=(new cp.sha1).HashUTF16Str(a.value);if(d.length==a.length)for(var c=0;c";cp.useg&&Hammer&&Hammer(cp.pwdv,{no_mouseevents:!0,transform_min_scale:1,drag_block_horizontal:!0,drag_block_vertical:!0,drag_min_distance:0});cp.registerGestureEvent(cp.pwdv,"touchstart",a);cp.registerGestureEvent(cp.pwdv,"touchmove",a);cp.registerGestureEvent(cp.pwdv,"touchend",a);cp.registerGestureEvent(cp.pwdv,"touchcancel",a);cp.registerGestureEvent(document.getElementById("checkPwdButton"),cp.GESTURE_EVENT_TYPES.TAP,c);a=document.getElementById("pwdt");a.focus();a.onkeyup=function(a){a.keyCode==13&&c()};f(!1)}else cp.pwdv.style.display="none",cp.pwdv.style.visibility="hidden",cp.passwordAccepted=!0,cp.complete()}function handlePreloader(){var a=cp.D[cp.movie.main.id].preloader,b=cp.D[cp.movie.main.id].preloaderFileName;void 0!=b&&""!=b&&a?(cp.movie.im.getImageDataURI(b,function(a){cp.preloaderImage.src=a}),-1!=b.indexOf("loading.gif")?cp.preloaderImage.defaultImage=!0:cp("loadingString").style.display="none"):cp.preloaderImage.style.display="none";cp.movie.preloadProjectAssets();cp.isExpired=!0;cp.D[cp.movie.main.id].peon?(a=cp.D[cp.movie.main.id],b=new Date,b.setFullYear(a.pey,a.pem-1,a.ped-1),(new Date).getTime()<=b.getTime()?(cp.exdv&&cp.exdv.parentNode.removeChild(cp.exdv),cp.isExpired=!1):(cp("project").style.visibility="hidden",cp("playbar").style.visibility="hidden",cp("toc").style.visibility="hidden",a="
"+a.pems+"
",cp.exdv.style.backgroundColor=cp.D[cp.movie.element.id].prjBgColor,cp.exdv.innerHTML=a)):(cp.exdv.style.display="none",cp.exdv.style.visibility="hidden",cp.isExpired=!1)}function _handleProjOptions(){handleAutoplay();handlePreloader()};_handleProjOptions();')} -function y(a){var b=[],d;for(d in a)b.push(cp.vm.getVariableValue(a[d].name));return b}window.getPageX=function(a){var b=0;cp.m_gestureHandler&&(b=cp.m_gestureHandler.getEventPageX(a));return b};window.getPageY=function(a){var b=0;cp.m_gestureHandler&&(b=cp.m_gestureHandler.getEventPageY(a));return b};cp.CacheView=function(a){this.index=a;if(!cp.CacheView.DIM){cp.CacheView.DIM=20;cp.CacheView.GAP=5;cp.CacheView.LEFT_OFFSET=100;cp.CacheView.TOP_OFFSET=30;cp.CacheView.NUM_CACHE_VIEWS=0}this.view=cp.newElem("div"); -document.body.appendChild(this.view);this.view.style.cssText="z-index:100;display:block; position:fixed; left:"+(cp.CacheView.LEFT_OFFSET+cp.CacheView.NUM_CACHE_VIEWS*(cp.CacheView.DIM+cp.CacheView.GAP))+"px; top:"+cp.CacheView.TOP_OFFSET+"px; width:"+cp.CacheView.DIM+"px; height:"+cp.CacheView.DIM+"px; background-color:#555555;opacity:0.8";this.view.innerHTML="-1";++cp.CacheView.NUM_CACHE_VIEWS};cp.CacheView.prototype={update:function(){var a=cp.movie.pm.cache[this.index]; -this.view.innerHTML=""+a+"";this.view.style.backgroundColor=this.index==cp.movie.pm.tail?"#ffff00":this.index==cp.movie.pm.head?"#0000ff":a!=-1?"#00ff00":"#555555"}};cp.PrefetchManager=function(){cp.movie.pm=this;this.cache=cp.device==cp.DESKTOP?Array(7):Array(4);for(var a=0;a0)&&cp.movie.im.unloadImage(a,c.img.ip);if(f=f[cp.kPPTXSlideImagesStr])for(c=0;c0&&cp.movie.im.unloadImage(a,cp.kPPTXSlideImagesDir+f[c].ip)}}}}this.cache[this.tail]=-1;this.tail=(this.tail+1)%this.cache.length}},isLoading:function(){return this.loading}, -loadSlideAssets:function(a){if(this.loading)return false;this.loading=true;try{cp.movie.im.verbose&&cp.log("loading assets of slide "+a);if(this.ifPrefetchedMakeMRU(a))m(a,true);else{var b=(this.head+1)%this.cache.length;b==this.tail&&this.throwAwayLRUSlide();m(a,true);this.cache[this.head]=a;this.head=b}cp.movie.im.verbose&&this.print()}catch(d){}this.loading=false;this.showCache();return true},preloadSlideAssets:function(a){cp.movie.im.verbose&&cp.log("preloading assets of slide "+a);if(!this.slideWasPrefetched(a)){var b= -(this.head+1)%this.cache.length;b==this.tail&&this.throwAwayLRUSlide();m(a);this.cache[this.head]=a;this.head=b}cp.movie.im.verbose&&this.print();this.showCache()}};cp.Movie=function(a){this.virgin=true;this.element=a;this.symbols={};this.main=null;this.cc=document.getElementById("cc");this.cpInfoLastVisitedSlideStartFrame=0;this.fps=cp.D[a.id].fps;this.hidePlaybarInQuiz=cp.D.quizzingData.hidePlaybarInQuiz;this.offset=(cp.offsetInnerWidth-cp.D[a.id].w+(cp.loadedModules.toc&&!cp.D.tocProperties.overlay? -cp.D.tocProperties.position==1?cp.D.tocProperties.width:-cp.D.tocProperties.width:0))/2;this.paused=true;this._parseElements();this.questions=[];this.questionObjs=[];this.element.style.backgroundColor=cp.D[this.element.id].prjBgColor;this.currAudioType="bg";this.currAudioStopFrame=this.currAudioStartFrame=-1;this.counter=0;this.speed=1;this.playKeyTap=cp.D[a.id].pkt;this.m_hasIsTrackedBeenSet=false;this.MIN_WAIT_TIME_TO_PAUSE_MOVIE=this.waitedForResources=0;this.MIN_WAIT_TIME_TO_BLOCK_UI=2E3;if(cp.device== -cp.ANDROID)this.MIN_WAIT_TIME_TO_BLOCK_UI=4E3;this.MAX_WAIT_TIME=2E4;this.mRequestAnimationFrameFunc=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||null;if(!this.mRequestAnimationFrameFunc){var b=0;this.mRequestAnimationFrameFunc=window.requestAnimationFrame=function(a){var c=(new Date).getTime(),f=Math.max(0,(window.cpInfoFPS?1E3/window.cpInfoFPS:100/3)-(c-b));b=c+f;return window.setTimeout(function(){a(b)}, -f)}}this.m_scaleFactor=1};cp.Movie.prototype={updateMovie:function(){var a=cp.D[this.main.id].questions;if(a){this.questions=a.split(",");this.questionObjs=[]}this.stage.updateTimeline()},handleProjectOptions:function(){k()},preloadProjectAssets:function(){var a=cp.model.projectImages;a&&a.length!=0&&cp.movie.im.loadImages(-1,a,true,true)},rewind:function(){this.stage.handleRewindForFramesets();this.stage.RemoveFeedbacks(cp.FeedbackCloseReason.SLIDE_CHANGE);cp.movie.stage.itemsNotLoaded=[];cp.movie.stage.rewind= -true;_cpInfoLastVisitedSlide=_cpInfoPrevSlide=1;if(cp.ThreeDQuestionHelper){var a=cp.movie.stage.getSlideIndexForFrame(1);cp.movie.stage.isThreeDSlideIndex(a)&&cp.ThreeDQuestionHelper.set360QuizMode(false)}this.jumpToFrame(1);this.play(cp.ReasonForPlay.MOVIE_REWIND)},_parseElements:function(){for(var a=this.element.firstChild;a;a=a.nextSibling)if(a.nodeType==Node.ELEMENT_NODE){var b=(a.className+"").split(" ");if(b.indexOf("cp-timeline")!=-1){var d=b.indexOf("cp-main")!=-1;b.indexOf("cp-symbol")!= --1&&(this.symbols[a.id]=a);if(d)this.main=a}}if(this.main!=null)this.stage=cp.parseTimeline(this.main)},resetFPS:function(){if(cpInfoFPS!=0){this.POLL_INTERVAL=1E3/cpInfoFPS;if(!this.useRequestAnimationFrame||!this.mRequestAnimationFrameFunc){if(this.interval){clearInterval(this.interval);this.interval=0}var a=this;delete a.lastRequestTime;this.step=function(b,d){var c=(new Date).getTime();if(c){var f=a.lastRequestTime?c-a.lastRequestTime:0;if(!a.lastRequestTime||f>a.POLL_INTERVAL){a.lastRequestTime= -c-f%a.POLL_INTERVAL;a._onEnterFrame()}}d||window.requestAnimationFrame(a.step)};window.requestAnimationFrame(a.step)}else{if(this.interval){clearInterval(this.interval);this.interval=0}this.mRequestAnimationFrameFunc.call(window,this.animationLoop)}}},resetMovieElapsedTime:function(a){this.startMovieTime=(new Date).getTime()-cpInfoCurrentFrame*1E3/(cp.movie.fps*cp.movie.speed);if(arguments.length>0&&this.useRequestAnimationFrame!=a){this.useRequestAnimationFrame=a;this.resetFPS()}},animationLoop:function(){cp.movie.useRequestAnimationFrame&& -cp.movie.mRequestAnimationFrameFunc.call(window,cp.movie.animationLoop);cp.movie._onEnterFrame()},startTimer:function(){if(!this.interval){this.stage.start();this.element.style.display="block";this.resetFPS()}},stop:function(){this.stage.reset();this.element.style.display="none";var a=document.getElementById("playbar");a.pause!=void 0&&a.pause()},play:function(a){if(!cp.isBlockedForLMS())if(cp.movie.videoPlayUserInteractionCallback&&a==cp.ReasonForPlay.PLAYBAR_ACTION)cp.movie.videoPlayUserInteractionCallback(); -else{cp.verbose&&cp.log("movie.play deleting pendingPlay");delete this.pendingPlay;var b=this.stage.getSlideDiv();if(this.stage.m_backgroundStyleFilter!=void 0&&!(_cpInfoCurrentFrame+1 in this.stage.overlayslideframes))b.style.filter=this.stage.m_backgroundStyleFilter;this.resetMovieElapsedTime();if(this.virgin){cp.verbose&&cp.log("movie virgin play");this.virgin=false;a=cp.getStartFrameOfMovie();1a.ato)||d){var c=a.ato-a.afrom;if(c!=0){c=c-Math.floor(cpInfoFPS*0.5);c<=0&&(c=0);var f=this.motionPathArgs,e=cp.cloneObject(f.b);if(cp.responsive){e=e[cp.ResponsiveProjWidth];if(!cp.movie.stage.isSlideBGCropped()){e[0]=cp.project.clientWidth*e[0]/cp.ResponsiveProjWidth;e[2]=cp.project.clientWidth*e[2]/cp.ResponsiveProjWidth}}var g=e[2]-e[0],j=e[3]-e[1], -h=b-a.afrom;if(!(h<0)){var b=e[0],d=e[1],n=e[2],e=e[3],i=1;f.s==1&&(i=0.5);var l=n,o=e;if(c>0&&h -0,c=this.vdm&&this.vdm.pendingVideos()>0,f=this.ms&&this.ms.pendingItems()>0;if(a||b||d||c||f){cp.verbose&&cp.log("waiting for "+a+" "+b+" "+d+" "+c+" "+f+" yield = "+this.stage.yield);return true}return false},resetAllWaitingResources:function(){this.im&&this.im.reset();if(this.stage)this.stage.itemsNotLoaded=[];this.am&&this.am.resetAllWaitingAudios();this.vdm&&this.vdm.resetAllWaitingVideos();this.ms&&this.ms.reset();this.waitedForResources=0},_saveStateBeforePushSlideLayer:function(a){this.pendingPushSlideLayerInfo&& -this._restoreStateAfterPushSlideLayerIfNeeded();if(this.pendingPushSlideLayerInfo==void 0){this.pendingPushSlideLayerInfo={};this.pendingPushSlideLayerInfo.frame=cpInfoCurrentFrame;this.pendingPushSlideLayerInfo.audioMuted=this.am.muted;this.pendingPushSlideLayerInfo.videoMuted=this.vdm.muted;this.pendingPushSlideLayerInfo.overlaySlideItemData=a;this.am.mute(true);this.vdm.mute(true)}},_restoreStateAfterPushSlideLayerIfNeeded:function(){if(this.pendingPushSlideLayerInfo&&this.pendingPushSlideLayerInfo.frame!= -cpInfoCurrentFrame){this.am.mute(this.pendingPushSlideLayerInfo.audioMuted);this.vdm.mute(this.pendingPushSlideLayerInfo.videoMuted);this.pendingPushSlideLayerInfo=void 0}},_onEnterFrame:function(){if(!cp.isBlockedForLMS()){var a=void 0;this._restoreStateAfterPushSlideLayerIfNeeded();if(!this.stage.pendingOnSlideLayerRemovedAction)if((a=this.stage.overlayslideframes[cpInfoCurrentFrame])&&a.si>=0){if(this.stage.ignoreOverlayOnFrame!=cpInfoCurrentFrame){this._saveStateBeforePushSlideLayer(a);this.stage.hasOverlaySlide()&& -this.stage.popSlideLayer(true)}}else this._jumpFrame!==cpInfoCurrentFrame&&(!this.stage.hasOverlaySlide()&&cp.ThreeDQuestionHelper&&cp.ThreeDQuestionHelper.isIn360QuizMode()&&cp.ThreeDQuestionHelper.isAssessmentHotspotFrame(cpInfoCurrentFrame))&&cp.ThreeDQuestionHelper.showQuestions();this.am.updateAudioViews();this.vdm.updateVideoViews();if(this.waitingForResources()){this.waitedForResources=this.waitedForResources+this.POLL_INTERVAL;if(this.waitedForResources>=this.MAX_WAIT_TIME){cp.verbose&&cp.log("waited too long...given up waiting! Paused = "+ -this.paused+" reason = "+this.reasonForPause+" pendingPlay = "+this.pendingPlay);this.resetAllWaitingResources();this.unblockUI();if(!this.paused&&this.pendingPause){this.pause(this.pendingReasonForPause);delete this.pendingPause;delete this.pendingReasonForPause}else(this.paused&&this.reasonForPause==cp.ReasonForPause.WAIT_FOR_RESOURCES||this.pendingPlay)&&this.play()}else if(this.waitedForResources>=this.MIN_WAIT_TIME_TO_BLOCK_UI){this.pause(cp.ReasonForPause.WAIT_FOR_RESOURCES);this.blockUI()}else this.waitedForResources>= -this.MIN_WAIT_TIME_TO_PAUSE_MOVIE&&this.pause(cp.ReasonForPause.WAIT_FOR_RESOURCES)}else{this.waitedForResources>0&&cp.verbose&&cp.log("finished waiting! Paused = "+this.paused+" reason = "+this.reasonForPause+" pendingPlay = "+this.pendingPlay);this.waitedForResources=0;this.unblockUI();if(!this.paused&&this.pendingPause){this.pause(this.pendingReasonForPause);delete this.pendingPause;delete this.pendingReasonForPause}else if(this.paused&&this.reasonForPause==cp.ReasonForPause.WAIT_FOR_RESOURCES|| -this.pendingPlay)this.play();else if(a=this.pendingJump){cp.verbose&&cp.log("jumping to pending jump frame "+a);delete this.pendingJump;this.jumpToFrame(a)}else if(this.paused){if(cpInfoCurrentFrame==this._jumpFrame){if(this.stage.fallsOutsideCurrentSlide(cpInfoCurrentFrame)){this.stage.makeLayerZeroSlideMRUIfOnOverlaySlide();this.stage.adjustFrameToNextNonOverlayFrameOnLayerZero();var b=this.stage.getSlideIndexForFrame(cpInfoCurrentFrame);if(b!=-1)if(this.stage.yield)delete this.stage.yield;else{this.stage.loadAssetsForSlideAtIndex(b); -this.stage.yield=1;return}}this._jumpFrame=-1;this.stage.updateFrame(cp.Timeline.ReasonForUpdate.JUMP)}this.stage.UpdateFeedbacks();this.stage.updateFrameCurrentOnPause()}else{this.elapsedMovieTime=((new Date).getTime()-this.startMovieTime)*cp.movie.speed;a=new Date;this.stage.UpdateFeedbacks();if(this.stage.fallsOutsideCurrentSlide(cpInfoCurrentFrame)){this.stage.makeLayerZeroSlideMRUIfOnOverlaySlide();this.stage.adjustFrameToNextNonOverlayFrameOnLayerZero();b=this.stage.getSlideIndexForFrame(cpInfoCurrentFrame); -if(b!=-1)if(this.stage.yield)delete this.stage.yield;else{this.stage.loadAssetsForSlideAtIndex(b);this.stage.yield=1;return}}if(cpInfoCurrentFrame==this._jumpFrame){this._jumpFrame=-1;this.stage.updateFrame(cp.Timeline.ReasonForUpdate.JUMP);b=this.stage.getSlideDiv();if(this.stage.m_backgroundStyleFilter!=void 0&&!(cpInfoCurrentFrame+1 in this.stage.overlayslideframes))b.style.filter=this.stage.m_backgroundStyleFilter}else this.stage.updateFrame(cp.Timeline.ReasonForUpdate.PROGRESS);if(cp.movie.stage.currentSlide&& -cp.movie.stage.GetCurrentSlideType()=="ThreeD Slide")if(b=cp.getDisplayObjFor3DSlideByCP_UID(cp.movie.stage.currentSlide.id))b.onEnterFrame();if(!this.paused)if(this.pendingPushSlideLayerInfo&&this.pendingPushSlideLayerInfo.frame==cpInfoCurrentFrame){this.stage.pushSlideLayer(this.pendingPushSlideLayerInfo.overlaySlideItemData,this.pendingPushSlideLayerInfo.disableAnimation);this.stage.ignoreOverlayOnFrame=cpInfoCurrentFrame;this._restoreStateAfterPushSlideLayerIfNeeded();this._onEnterFrame()}else{if(this.stage.ignoreOverlayOnFrame!= -cpInfoCurrentFrame)this.stage.ignoreOverlayOnFrame=-1;var d=new Date,b=this.now;this.now=d;if(cp.disablePaceMaker)this.framesToSkip=1;else{if(this.elapsedFramesResidue==void 0)this.elapsedFramesResidue=0;var c=0;if(1==this.speed&&this.am.pace)c=this.am.pace-cpInfoCurrentFrame;else{a=d.getTime()-a.getTime();cp.movie.PPTXSlide&&(a=0);c=(this.now.getTime()-b.getTime()-a)*cpInfoFPS/1E3}this.framesToSkipForPlaybar=this.elapsedFramesResidue=this.elapsedFramesResidue+c;this.framesToSkip=Math.floor(this.framesToSkipForPlaybar); -this.elapsedFramesResidue=this.elapsedFramesResidue-this.framesToSkip}cp.verbose&&cp.log("am.pace = "+this.am.pace+" elapsedFramesResidue = "+this.elapsedFramesResidue+" skipping = "+this.framesToSkip);this.stage.preventAdvanceFrame?this.stage.preventAdvanceFrame=false:this.stage.attemptToAdvanceCurrentFrameByOffset(this.framesToSkip)}}}}},registerQuizVariableSetters:function(){if(cp.movie.playbackController){var a=cp.movie.playbackController.GetQuizController();if(a){a.quizInScopeSetter=cp._cpInQuizScope; -a.quizScopeSlideSetter=cp._cpQuizScopeSlide}}},initLMS:function(){if(this.playbackController){this.playbackController.GetLoadingResumeDataBln();if(!this.m_hasIsTrackedBeenSet){this.playbackController.GetIsTrackedFlag()?this.playbackController.SetIsTracked(true):this.playbackController.SetIsTracked(false);this.m_hasIsTrackedBeenSet=true;this.playbackController.GetLoadingResumeDataBln()}typeof cp.LMSDriverHolder=="undefined"&&(!this.playbackController.LMSIsAICC()&&!this.playbackController.IsRunningInConnect())&& -cp.handleVariablesInURLParams();!this.playbackController.IsRunningInConnect()&&(typeof cp.LMSDriverHolder!="undefined"&&cp.LMSDriverHolder&&cp.LMSDriverHolder.GetStudentName)&&cp.vm.setVariableValue("cpQuizInfoStudentName",cp.LMSDriverHolder.GetStudentName(),false)}},resumeMovieSpecificValue:function(){if(this.playbackController){var a=this.playbackController.GetRestoredQuizSlide();a>=0&&(_cpInfoCurrentFrame=a)}}};cp.QuizLibraryInit=function(){cp.g_ShouldRandomize&&cp.NewQuizLibraryInit()};cp.NewQuizLibraryInit= -function(){if(cp.PlaybackController&&!cp.movie.playbackController){cp.movie.playbackController=cp.IsRunningInACAP?new cp.ACAPPlaybackController:new cp.PlaybackController;cp.movie.playbackController.InitializeReportingVariables();cp.movie.playbackController.InitializePlaybackController()}cp.movie.registerQuizVariableSetters();if(cp.g_ShouldRandomize)cp.ContinueQuizLibraryInit();else if(cp.resumeDataChunk!=""&&cp.resumeDataChunk!=void 0&&cp.resumeDataChunk!="0"){var a=cp.movie.playbackController;a&& -a.RestoreQuizState()}cp.movie.initLMS()};cp.ContinueQuizLibraryInit=function(){cp.movie.updateMovie();cp.movie.stage.createQuestionObjs();cp.movie.playbackController&&cp.movie.playbackController.AddQuestionSlideNames();cp.movie.stage.initializeGraphManager()};cp.CPPreInit=function(){cp.CPProjInit();cp.shouldScale=cp.D.project.shc;cp.responsive=cp.D.project_main.useResponsive;cp.responsiveType=cp.D.project_main.responsiveType;if(cp.IsRunningInACAP||cp.IsRunningInALEC){cp.D.playBarProperties.hasPlayBar= -false;cp.D.borderProperties.hasBorder=false;cp.D.project.hasTOC=false}cp.loadedModules={playbar:cp.D.playBarProperties.hasPlayBar&&cp("playbar")!=void 0,border:cp.D.borderProperties.hasBorder,toc:cp.D.project.hasTOC&&cp("toc")!=void 0};if(cp.device==cp.IDEVICE)if(cp.mat==void 0){if(cp.IOSMajor<=cp.IOS5)cp.multiAudioTrack=false}else cp.multiAudioTrack=false;if(cp.device==cp.ANDROID)cp.multiAudioTrack=true;var a=cp.D.project_main.pools;if(a==void 0||a.length<=0)cp.poolManager=void 0;else{cp.poolManager= -new cp.PoolManager;cp.poolManager.loadPools();cp.g_ShouldRandomize&&cp.poolManager.randomizePools()}PPTXLib.initializePPTXLibrary();if(a=cp.D.project_main.slideVideos)for(var b=0,d=1;d=j.to&&++c}a=(cp.D.project_main.slides||"").split(",");b=a.length;for(d=0;d0?a:0)+"px";if(!cp.playImage)cp.playImage=cp("playImage");if(!cp.autoplayImage)cp.autoplayImage=cp("autoplayImage");if(!cp.autoplayDiv)cp.autoplayDiv= -cp("autoplayDiv");if(!cp.gesturesDiv){cp.gesturesDiv=cp("gestureIcon");if(cp.useg){cp.gesturesDiv.style.display="block";cp.registerGestureEvent(cp.gesturesDiv,cp.GESTURE_EVENT_TYPES.TAP,cp.showGesturesHint,true)}else cp.gesturesDiv.style.display="none"}if(cp.autoPlayNeedsUserClick())cp.playImage.className="autoPlayButton";if(cp.device!=cp.DESKTOP){cp.playImage.className="autoPlayButton";if(cp.useg)cp.gesturesDiv.style.display="block"}else{if(!cp.D.project_main.autoplay)cp.playImage.className="autoPlayButton"; -cp.gesturesDiv.style.display="none"}if(!cp.ccdv){cp.ccdv=cp("cc");cp.fixWebkitScaling(cp.ccdv)}if(!cp.pwdv)cp.pwdv=cp("pwdv");if(!cp.exdv)cp.exdv=cp("exdv");if(!cp.preloaderImage)cp.preloaderImage=cp("preloaderImage");if(cp.movie==void 0){cp.movie=new cp.Movie(cp("project"));cp.eventManager=new cp.EventManager;cp.variablesManager=new cp.VariablesManager;cp.movie.audioManager=new cp.AudioManager;cp.movie.videoManager=new cp.VideoManager;cp.movie.mediaSeeker=new cp.MediaSeeker;if(cp.IsRunningInACAP){h= -{Name:"CPGetEvent"};h.cpName=h.Name;h.Data={};h.Data.ask="capiVariable";h.Data.askData="capiStudentName";h.Data.callback=cp.updateStudentNameVariableFromACAP;h.cpData=h.Data;cp.currentWindow.cpAPIEventEmitter.trigger(h)}cp.g_ShouldRandomize||cp.NewQuizLibraryInit();cp.movie.vdm.load();cp.movie.am.load();h=cp.movie.stage.getSlideNameForIndex(0);cp.multiAudioTrack&&h!=""&&cp.movie.am.preload(h);h!=""&&cp.movie.vdm.preload(h);cp.movie.imageManager=new cp.ImageManager;cp.movie.prefetchManager=new cp.PrefetchManager; -cp.movie.handleProjectOptions();cp.movie.pm.preloadSlideAssets(0);cp.movie.topOffset=0;h=cp.getProject();if(!cp.responsive)h.style.left=(cp.loadedModules.toc&&!cp.D.tocProperties.overlay&&cp.D.tocProperties.position==1?cp.D.tocProperties.width:0)+"px"}if(h=cp.movie.stage.getSlideDiv()){h.ondblclick=cp.handleDblClick;h.oncontextmenu=cp.handleRightClick}cp.loadedModules.border&&cp.borderInit(cp.D);cp.loadedModules.playbar?cp.playBarInit(cp.D):cp.setMovieLeftTopRightBottom(0,0,0,0);cp.loadedModules.toc&& -cp.responsive&&cp.tocInit(cp.D,0,0,0,0);cp("project").style.zIndex=1;if(cp.loadedModules.toc)cp("toc").style.zIndex=2;if(cp.loadedModules.playbar)cp("playbar").style.zIndex=3;cp.ccdv=cp("cc");cp.pwdv=cp("pwdv");cp.exdv=cp("exdv");if(cp.ccdv)cp.ccdv.style.zIndex=4;if(cp.gesturesDiv)cp.gesturesDiv.style.zIndex=4;if(cp.pwdv)cp.pwdv.style.zIndex=5;if(cp.exdv)cp.exdv.style.zIndex=6;if(cp.m_isPreview&&!cp.m_isEdgeInspectPreview&&!cp.responsive){h=cp.vm.getGeoVarsInfo();if(h.length>0&&!cp.fakeGeo){cp.fakeGeo= -document.createElement("div");cp.fakeGeo.id="cpFakeGeo";a=document.createElement("div");a.innerHTML=cp.D.geoProps.geoEmul||"Emulate Geolocation";a.id="cpFakeGeoTitle";cp.fakeGeo.appendChild(a);var n=document.createElement("select");n.id="cpFakeGeoList";(a=cp.D.geoProps.geoNone)||(a="nowhere");n.options[0]=new Option("<"+a+">","");for(var i in h)n.options[n.options.length]=new Option(h[i].name,cp.vm.getVariableValue(h[i].name));n.addEventListener("change",function(){cpInfoGeoLocation=n.value});cp.fakeGeo.appendChild(n); -cp.fakeGeo.style.zIndex=7;document.body.appendChild(cp.fakeGeo)}}if(cp.dynamicLogControl){if(cp.consolidateLogs)cp.logArray=[];var l=cp.newElem("div");l.style.cssText="z-index:100;position:absolute;left:0px; top:0px; width:20px; height:20px;display:block;background-image:url(assets/htmlimages/hotspot_correct_answer_normal.png);opacity:"+(cp.consolidateLogs?1:0.5);l.onclick=function(){if(!cp.logArray)cp.logArray=[];if(cp.consolidateLogs){for(var a=0;aconsolidateLogs";document.body.appendChild(l);var o=cp.newElem("div");o.style.cssText="z-index:100;position:absolute;left:0px; top:30px; width:20px; height:20px;display:block;background-image:url(assets/htmlimages/hotspot_correct_answer_normal.png);opacity:"+(cp.movie.im.verbose?1:0.5);o.onclick=function(){cp.movie.im.verbose=!cp.movie.im.verbose; -o.style.opacity=cp.movie.im.verbose?1:0.5};o.innerHTML="imageLogs";document.body.appendChild(o);var k=cp.newElem("div");k.style.cssText="z-index:100;position:absolute;left:60px; top:30px; width:20px; height:20px;display:block;background-image:url(assets/htmlimages/arrow_right.gif);opacity:"+(cp.movie.pm.viewCache?1:0.5);k.onclick=function(){cp.movie.pm.viewCache=!cp.movie.pm.viewCache;if(cp.movie.pm.viewCache){cp.movie.pm.cacheViews=[];for(var a= -0;aview";document.body.appendChild(k);var m=cp.newElem("div");m.style.cssText="z-index:100;position:absolute;left:0px; top:60px; width:20px; height:20px;display:block;background-image:url(assets/htmlimages/hotspot_correct_answer_normal.png);opacity:"+ -(cp.movie.am.verbose?1:0.5);m.onclick=function(){cp.movie.am.verbose=!cp.movie.am.verbose;m.style.opacity=cp.movie.am.verbose?1:0.5};m.innerHTML="audioLogs";document.body.appendChild(m);var p=cp.newElem("div");p.style.cssText="z-index:100;position:absolute;left:60px; top:60px; width:20px; height:20px;display:block;background-image:url(assets/htmlimages/arrow_right.gif);opacity:"+(cp.movie.am.viewAudio?1:0.5);p.onclick=function(){cp.movie.am.viewAudio= -!cp.movie.am.viewAudio;p.style.opacity=cp.movie.am.viewAudio?1:0.5;if(cp.movie.am.viewAudio){cp.movie.am.audioViews=[];for(var a=0;a!Wait";document.body.appendChild(i);var q=cp.newElem("div");q.style.cssText="z-index:100;position:absolute;left:0px; top:90px; width:20px; height:20px;display:block;background-image:url(assets/htmlimages/hotspot_correct_answer_normal.png);opacity:"+ -(cp.movie.vdm.verbose?1:0.5);q.onclick=function(){cp.movie.vdm.verbose=!cp.movie.vdm.verbose;q.style.opacity=cp.movie.vdm.verbose?1:0.5};q.innerHTML="videoLogs";document.body.appendChild(q);var r=cp.newElem("div");r.style.cssText="z-index:100;position:absolute;left:60px; top:90px; width:20px; height:20px;display:block;background-image:url(assets/htmlimages/arrow_right.gif);opacity:"+(cp.movie.vdm.viewVideo?1:0.5);r.onclick=function(){cp.movie.vdm.viewVideo= -!cp.movie.vdm.viewVideo;r.style.opacity=cp.movie.vdm.viewVideo?1:0.5;if(cp.movie.vdm.viewVideo){cp.movie.vdm.videoViews=[];if(cp.device==cp.IDEVICE||cp.device==cp.ANDROID){cp.movie.vdm.slideVideoChannel&&cp.movie.vdm.videoViews.push(new cp.VideoView(cp.movie.vdm.slideVideoChannel));cp.movie.vdm.tocVideoChannel&&cp.movie.vdm.videoViews.push(new cp.VideoView(cp.movie.vdm.tocVideoChannel))}else{cp.movie.vdm.slideVideoChannel0&&cp.movie.vdm.videoViews.push(new cp.VideoView(cp.movie.vdm.slideVideoChannel0)); -cp.movie.vdm.slideVideoChannel1&&cp.movie.vdm.videoViews.push(new cp.VideoView(cp.movie.vdm.slideVideoChannel1));cp.movie.vdm.tocVideoChannel0&&cp.movie.vdm.videoViews.push(new cp.VideoView(cp.movie.vdm.tocVideoChannel0));cp.movie.vdm.tocVideoChannel1&&cp.movie.vdm.videoViews.push(new cp.VideoView(cp.movie.vdm.tocVideoChannel1))}for(var a=0;a!Wait";document.body.appendChild(i);var s=cp.newElem("div");s.style.cssText="z-index:100;position:absolute;left:0px; top:120px; width:20px; height:20px;display:block;background-image:url(assets/htmlimages/hotspot_incorrect_answer_normal.png);opacity:"+(cp.exceptionalLogs?1:0.5);s.onclick=function(){cp.exceptionalLogs=!cp.exceptionalLogs;s.style.opacity=cp.exceptionalLogs?1:0.5};s.innerHTML="ErrorExcpn"; -document.body.appendChild(s);var t=cp.newElem("div");t.style.cssText="z-index:100;position:absolute;left:0px; top:150px; width:20px; height:20px;display:block;background-image:url(assets/htmlimages/hotspot_correct_answer_normal.png);opacity:"+(cp.verbose?1:0.5);t.onclick=function(){cp.verbose=!cp.verbose;t.style.opacity=cp.verbose?1:0.5};t.innerHTML="verbose";document.body.appendChild(t);var u=cp.newElem("div");u.style.cssText="z-index:100;position:absolute;left:0px; top:180px; width:20px; height:20px;display:block;background-image:url(assets/htmlimages/hotspot_correct_answer_normal.png);opacity:"+ -(cp.disablePaceMaker?0.5:1);u.onclick=function(){cp.disablePaceMaker=!cp.disablePaceMaker;u.style.opacity=cp.disablePaceMaker?0.5:1};u.innerHTML="PaceMaker";document.body.appendChild(u);var v=cp.newElem("div");v.style.cssText="z-index:100;position:absolute;left:0px; top:210px; width:20px; height:20px;display:block;background-image:url(assets/htmlimages/hotspot_correct_answer_normal.png);opacity:"+(cp.movie.ms.verbose?1:0.5);v.onclick=function(){cp.movie.ms.verbose= -!cp.movie.ms.verbose;v.style.opacity=cp.movie.ms.verbose?1:0.5};v.innerHTML="seekLogs";document.body.appendChild(v);if(cp.device!=cp.IDEVICE){var w=cp.newElem("div");w.style.cssText="z-index:100;position:absolute;left:0px; top:240px; width:20px; height:20px;display:block;background-image:url(assets/htmlimages/hotspot_correct_answer_normal.png);opacity:"+(cp.device==cp.IDEVICE?0.5:1);w.onclick=function(){if(cp.origDevice){cp.device=cp.origDevice; -delete cp.origDevice}else{cp.origDevice=cp.device;cp.device=cp.IDEVICE}w.style.opacity=cp.device==cp.IDEVICE?0.5:1};w.innerHTML="emulateiDevice";document.body.appendChild(w)}var x=cp.newElem("div");x.style.cssText="z-index:100;position:absolute;left:0px; top:270px; width:20px; height:20px;display:block;background-image:url(assets/htmlimages/hotspot_correct_answer_normal.png);opacity:"+(cp.customConsole?0.5:1);x.onclick=function(){if(cp.customConsole){document.body.removeChild(cp.customConsole); -delete cp.customConsole}else{cp.customConsole=cp.newElem("textarea");cp.customConsole.style.cssText="z-index:100;position:absolute;left:0px; top:300px; width:300px; height:100px;display:block;";cp.customConsole.readonly=true;document.body.appendChild(cp.customConsole);cp.log("navigator.userAgent = "+navigator.userAgent);cp.log("browser = "+cp.browser);cp.log("browserVersion = "+cp.browserVersion);cp.log("device = "+cp.device);if(cp.device==cp.IDEVICE){cp.log("device flavor = "+cp.deviceFlavor);cp.log("IOS Version = "+ -cp.IOSMajor+"_"+cp.IOSMinor+"_"+cp.IOSBuild)}}x.style.opacity=cp.customConsole?0.5:1};x.innerHTML="customConsole";document.body.appendChild(x)}this.m_gestureHandler&&this.m_gestureHandler.addCPEventListeners()};cp.CPPostInit=function(){cp.initObjectFactory();cp.loadedModules.playbar&&cp.setPlaybarCallback(cp.movie);cp.loadedModules.toc&&cp.setTOCCallback(cp.movie,cp.em);typeof cptb!="undefined"&&cptb.PostInit();cp.adjustWindow();setTimeout("window.scrollTo(0,0);", -500);cp.movie.startTimer();window.onorientationchange=window.onresize=cp.adjustWindow;if(cp.responsive&&cp.responsiveType!=cp.kCPPMEVR&&!cp.IsRunningInRoboHelp&&cp.parentWindow&&cp.parentWindow.createSliders)if(cp.responsiveType==cp.kCPPMEAutoResponsive){var a=cp.D.project.w;if(window.innerWidthd.indexOf(b)&&d.push(b)}; -cp.EventEmitterClass.prototype.removeEventListener=function(a,b,c){void 0==a&&(a="Default");var d=[];if(c&&""!=c){if(void 0==this.callbackFns[a]||void 0==this.callbackFns[a][c])return;d=this.callbackFns[a][c]}else{if(void 0==this.callbackFns[a])return;d=this.callbackFns[a]}a=d.indexOf(b);-1a&&(a=1);var b=cp.D.project_main.autoplay;cp.IsRunningInACAP&&!1===b&&!cp.ACAPMovieStarted?cp.ACAPPendingJumpToFrame=a:cp.movie.jumpToFrame(a)},gotoSlide:function(a){cpCmndGotoSlide=a},canNavigateToTime:function(a){a=a*cpInfoFPS/1E3;0<=a&&1>a&&(a=1);return cp.shouldMoveTo(a)},getCurrentFrame:function(){return cpInfoCurrentFrameAtLayerZero},getCurrentFrameAtTopMostLayer:function(){return cpInfoCurrentFrame}, -getCurrentSlideIndex:function(){return cpInfoCurrentSlide},getEventEmitter:function(){void 0==this.m_eventEmitter&&(this.m_eventEmitter=cp.IsRunningInACAP?new cp.ACAPEventEmitterClass:new cp.EventEmitterClass);return this.m_eventEmitter},getVariableValue:function(a){return window[a]},setVariableValue:function(a,b){window[a]=b},close:function(){window.DoCPExit()},setAllowForceQuitContainer:function(a){cp.setAllowForceQuitContainer=a?!0:!1},isSWFOrHTMLContent:function(){return"html"},getCurrentDeviceMode:function(){return cp.ResponsiveProjWidth== -cp.responsiveWidths[0]?"mobile":cp.ResponsiveProjWidth==cp.responsiveWidths[1]?"tablet":"desktop"}}; -cp.ACAPInterfaceClass=function(){this.ReportingCriteriaMap={};this.ReportingCriteriaMap.user_access=cp.ReportingOptionsEnum.access;this.ReportingCriteriaMap.quiz_only=cp.ReportingOptionsEnum.quiz_only;this.ReportingCriteriaMap.slideviews_only=cp.ReportingOptionsEnum.views_only;this.ReportingCriteriaMap.quiz_and_slideviews=cp.ReportingOptionsEnum.quiz_and_views;this.QuizCriteriaMap={};this.QuizCriteriaMap.quiz_passed=cp.QuizCriteriaEnum.QuizIsPassed;this.QuizCriteriaMap.quiz_attempted=cp.QuizCriteriaEnum.QuizIsAttempted; -this.QuizCriteriaMap.quizpassed_or_limitreached=cp.QuizCriteriaEnum.QuizIsPassedOrAttempLimitReached;cp.ACAPTOCVisibility=!1;cp.ACAPMovieStarted=!1};cp.inherits(cp.ACAPInterfaceClass,cp.CPAPIInterfaceClass);cp.ACAPInterfaceClass.prototype.controlVisibility=function(a,b){"playbar"==a?cp.D.playBarProperties.hasPlayBar="function"==typeof cp.playBarInit?b:!1:"toc"==a?(cp.D.project.hasTOC=b?1:0,cp.ACAPTOCVisibility=b):"cc"==a&&(cp.D.playBarProperties.hasCC=b)}; -cp.ACAPInterfaceClass.prototype.navigateToItem=function(a){cp.movie.jumpToFrame(cp.D[a].from)};cp.ACAPInterfaceClass.prototype.canNavigateToItem=function(a){return cp.shouldMoveTo(cp.D[a].from)};cp.ACAPInterfaceClass.prototype.enterReviewMode=function(){setCpInfoCurrentFrame(0)};cp.ACAPInterfaceClass.prototype.prepareForACAPRender=function(){this.controlVisibility("playbar",!1);this.controlVisibility("cc",!1);this.controlVisibility("toc",!1)}; -cp.ACAPInterfaceClass.prototype.stop=function(){cpCmndRewindAndStop=!0};cp.ACAPInterfaceClass.prototype.showTOC=function(a){a?this.setVariableValue("cpCmndTOCVisible",1):this.setVariableValue("cpCmndTOCVisible",0)}; -cp.ACAPInterfaceClass.prototype.setReportingOptions=function(a,b){this.completionCriteria=this.ReportingCriteriaMap[b.criteriaChosen];this.quizCriteriaForCompletion=this.QuizCriteriaMap[b.quizCriteria];this.slideViewsForCompletion=b.slideviewsValue;this.slideViewsTypeForCompletion=cp.SlideViewsTypeEnum.percent;b.isPercentageSlideviews||(this.slideViewsTypeForCompletion=cp.SlideViewsTypeEnum.number);this.successCriteria=this.ReportingCriteriaMap[a.criteriaChosen];this.quizCriteriaForSuccess=this.QuizCriteriaMap[a.quizCriteria]; -this.slideViewsForSuccess=a.slideviewsValue;this.slideViewsTypeForSuccess=cp.SlideViewsTypeEnum.percent;a.isPercentageSlideviews||(this.slideViewsTypeForSuccess=cp.SlideViewsTypeEnum.number)};cp.ConnectInterfaceClass=function(){};cp.inherits(cp.ConnectInterfaceClass,cp.CPAPIInterfaceClass);cp.ConnectInterfaceClass.prototype.goToScrubPosition=function(a){a=a*cpInfoFPS/1E3;0<=a&&1>a&&(a=1);var b=cp.movie.stage.currentSlide,c=b.from,b=b.to;ab?cp.movie.jumpToFrame(b):cp.movie.jumpToFrame(a)}; -cp.ConnectInterfaceClass.prototype.setAllowForceQuitContainer=function(a){cp.setAllowForceQuitContainer=a?!0:!1};cp.ConnectInterfaceClass.prototype.close=function(){window.DoCPExit()}; -cp.ConnectInterfaceClass.prototype.showUI=function(a,b){if("playbar"==a)return b?(this.setVariableValue("cpCmndShowPlaybar",1),cp.disableInteractions=!1):(this.setVariableValue("cpCmndShowPlaybar",0),cp.disableInteractions=!0),!0;if("closeButton"==a){if(!1==cpCmndShowPlaybar)return!1;for(var c=cp.PB.rootObj.firstRowArray,d,e=0;ea.gesture.distance||(a.gesture.stopPropagation(),a.gesture.preventDefault(),cp("div_Slide").scaleFactor&&1!=cp("div_Slide").scaleFactor||cp.shouldDrawCurrentSlideInPannableMode()||cp.togglePlaybarShowHide())}};case cp.GESTURE_EVENT_TYPES.SWIPE_DOWN:return function(a){if(cp.m_gestureHandler.enabled){if(cp.canScroll("down",cp.GESTURE_EVENT_TYPES.SWIPE_DOWN))return!1; -50>a.gesture.distance||(a.gesture.stopPropagation(),a.gesture.preventDefault(),cp("div_Slide").scaleFactor&&1!=cp("div_Slide").scaleFactor||cp.shouldDrawCurrentSlideInPannableMode()||cp.togglePlaybarShowHide())}};case cp.GESTURE_EVENT_TYPES.SWIPE_LEFT:return function(a){if(cp.m_gestureHandler.enabled){if(!cp.responsive&&cp.canScroll("left",cp.GESTURE_EVENT_TYPES.SWIPE_LEFT))return!1;if(!(50>a.gesture.distance)&&(a.gesture.stopPropagation(),a.gesture.preventDefault(),!(cp("div_Slide").scaleFactor&& -1!=cp("div_Slide").scaleFactor)&&!cp.shouldDrawCurrentSlideInPannableMode()&&(!cp.D||!cp.D.baq))){var a=cp.goToNextSlide,c=window;if(cp.movie.stage&&cp.movie.stage.currentSlide){var d=cp.movie.stage.currentSlide;if(!d.useng)return;if("Question Slide"==d.st&&(d=cp.getQuestionObject(cp.D[d.mdi].dn)))a=d.moveForward,c=d}a.call(c,void 0)}}};case cp.GESTURE_EVENT_TYPES.SWIPE_RIGHT:return function(a){if(cp.m_gestureHandler.enabled){if(!cp.responsive&&cp.canScroll("right",cp.GESTURE_EVENT_TYPES.SWIPE_RIGHT))return!1; -if(!(50>a.gesture.distance)&&(a.gesture.stopPropagation(),a.gesture.preventDefault(),!(cp("div_Slide").scaleFactor&&1!=cp("div_Slide").scaleFactor)&&!cp.shouldDrawCurrentSlideInPannableMode()&&(!cp.D||!cp.D.baq))){var a=cp.goToPreviousSlide,c=window;if(cp.movie.stage&&cp.movie.stage.currentSlide){var d=cp.movie.stage.currentSlide;if(!d.useng)return;if("Question Slide"==d.st&&(d=cp.getQuestionObject(cp.D[d.mdi].dn)))a=d.moveBackward,c=d}a.call(c,void 0)}}}}}; -cp.GestureHandler.prototype.initializeDefaultGestureEvents=function(){cp("div_Slide").scaleFactor=1;if(cp.IsGestureSupportedDevice()&&cp.useg){this.changeClickEventsToTouch();var a=cp("div_Slide"),b=cp("main_container");cp.D.project.shc||this.addScaleEvent();this.registerGestureEvent(a,cp.GESTURE_EVENT_TYPES.LONG_TAP,this.getDefaultGestureHandler(cp.GESTURE_EVENT_TYPES.LONG_TAP),!0);cp.isTouchMacOS10_15OrMore&&cp.D.project.shc?(a.addEventListener("dblclick",cp.handleTOCOpenClose),b.addEventListener("dblclick", -cp.handleTOCOpenClose)):this.registerGestureEvent(a,cp.GESTURE_EVENT_TYPES.DOUBLE_TAP,this.getDefaultGestureHandler(cp.GESTURE_EVENT_TYPES.DOUBLE_TAP),!0);this.registerGestureEvent(a,cp.GESTURE_EVENT_TYPES.SWIPE_UP,this.getDefaultGestureHandler(cp.GESTURE_EVENT_TYPES.SWIPE_UP),!0);this.registerGestureEvent(a,cp.GESTURE_EVENT_TYPES.SWIPE_DOWN,this.getDefaultGestureHandler(cp.GESTURE_EVENT_TYPES.SWIPE_DOWN),!0);this.registerGestureEvent(a,cp.GESTURE_EVENT_TYPES.SWIPE_LEFT,this.getDefaultGestureHandler(cp.GESTURE_EVENT_TYPES.SWIPE_LEFT), -!0);this.registerGestureEvent(a,cp.GESTURE_EVENT_TYPES.SWIPE_RIGHT,this.getDefaultGestureHandler(cp.GESTURE_EVENT_TYPES.SWIPE_RIGHT),!0)}};cp.GestureHandler.prototype.resetZoom=function(){};cp.GestureHandler.prototype.resetScroll=function(){};cp.GestureHandler.prototype.initializeProjectGestures=function(){if(cp.useg){var a=cp.D.project.GestureData;if(a)for(var b in a)cp.registerGestureEvent(cp("project"),b,a[b],!0)}}; -cp.GestureHandler.prototype.getEventPageX=function(a){var b=a;a.changedTouches&&0cp.getWindowInnerHeight(window);case "down":return 0>c.top;case "left":return c.right>cp.getWindowInnerWidth(window);case "right":return 0>c.left; -default:return!1}}; -cp.HammerGestureHandler=function(){cp.HammerGestureHandler.baseConstructor.call(this)};cp.inherits(cp.HammerGestureHandler,cp.GestureHandler); -cp.HammerGestureHandler.prototype.scaleMovie=function(a,c){a.gesture.stopPropagation();a.gesture.preventDefault();var b=cp("div_Slide");b.style.webkitTransformOrigin=""+a.gesture.center.pageX+" "+a.gesture.center.pageY+"";b.style.MozTransformOrigin=""+a.gesture.center.pageX+" "+a.gesture.center.pageY+"";b.style.msTransformOrigin=""+a.gesture.center.pageX+" "+a.gesture.center.pageY+"";b.style.webkitTransform="scale("+!c?a.gesture.scale:"1)";b.style.MozTransform="scale("+!c?a.gesture.scale:"1)";b.style.msTransform= -"scale("+!c?a.gesture.scale:"1)"};var hammerVolatileCache={},hammerStaticCache={};cp.__debugHammerCache=function(){return[hammerVolatileCache,hammerStaticCache]}; -cp.HammerGestureHandler.prototype.registerGestureEvent=function(a,c,b,d,h){if(a&&c&&b)if(a.onclick=void 0,h&&c==cp.GESTURE_EVENT_TYPES.TAP)a.addEventListener("touchstart",b,!1);else{var h=!1,f;(f=d?hammerStaticCache[a.id]:hammerVolatileCache[a.id])||(h=!0);a&&("input"==a.tagName.toLowerCase()&&"text"==a.type||"textarea"==a.tagName.toLowerCase()||"select"==a.tagName.toLowerCase()||"toccontent"==a.id.toLowerCase())?(f||(f=Hammer(a)),f.on(cp.GESTURE_EVENT_TYPES.DRAG_END,this.fitMovie)):f||(f=Hammer(a, -{prevent_default:!0}));f.on(c,b);h&&(d?hammerStaticCache[a.id]=f:hammerVolatileCache[a.id]=f)}};cp.HammerGestureHandler.prototype.removeGestureEvent=function(a,c,b,d){a&&c&&(d&&c==cp.GESTURE_EVENT_TYPES.TAP?a.removeEventListener("touchstart",b,!1):((d=hammerVolatileCache[a.id])&&d.off(c,b),(d=hammerStaticCache[a.id])&&d.off(c,b)))}; -cp.HammerGestureHandler.prototype.clearCache=function(a){if(a&&a.id){var c=hammerVolatileCache[a.id];if(c){c.destroy();delete hammerVolatileCache[a.id];return}}if(!a){for(var b in hammerVolatileCache)hammerVolatileCache[b].destroy();hammerVolatileCache={}}}; -cp.GestureHandler.prototype.clearStaticCache=function(a){if(a&&a.id){var c=hammerStaticCache[a.id];if(c){c.destroy();delete hammerStaticCache[a.id];return}}if(!a){for(var b in hammerStaticCache)hammerStaticCache[b].destroy();hammerStaticCache={}}}; -cp.HammerGestureHandler.prototype.fitMovie=function(a){if(!cp.m_gestureHandler.enabled)return!1;if(1==cp("div_Slide").scaleFactor){window.scrollTo(0,0);var c=cp.responsive?cp("project"):cp("main_container"),b=c.getBoundingClientRect();if(a&&a.gesture&&a.gesture.direction)switch(a.gesture.direction){case "up":b.bottomwindow.innerHeight&&(c.style.top=window.innerHeight-b.height+"px");break;case "down":0window.innerHeight&&(c.style.top="0px");break;case "left":b.right< -window.innerWidth&&b.width>window.innerWidth&&(c.style.left=window.innerWidth-b.width+"px");break;case "right":0window.innerWidth&&(c.style.left="0px");break;default:return!1}else cp.responsive&&(c.style.top=b.bottom<=window.innerHeight&&b.height>window.innerHeight?window.innerHeight-b.height+"px":"0px",0<=b.top&&(c.style.top="0px"))}a&&a.stopDetect&&a.stopDetect();return!1}; -cp.HammerGestureHandler.prototype.addScaleEvent=function(){function a(a){if(!a.target||!("INPUT"==a.target.tagName.toUpperCase()||"SELECT"==a.target.tagName.toUpperCase()||"TEXTAREA"==a.target.tagName.toUpperCase()))(cp.isTextInputInFocus()||"SELECT"==document.activeElement.tagName.toUpperCase())&&document.activeElement.blur(),a.preventDefault()}cp("main_container");var c=cp("project"),b=cp("div_Slide");b.scaleFactor=1;Hammer(c,{prevent_default:!0,no_mouseevents:!0,transform_min_scale:1,drag_block_horizontal:!0, -drag_block_vertical:!0,drag_min_distance:0});this.previousScaleFactor=this.scaleFactor=b.scaleFactor=1;var d=0,h=0,f=0,n=0,o=0,p=0,q="",g=this;this.registerGestureEvent(c,"transformstart",function(a){if(!cp.m_gestureHandler.enabled)return!1;a.gesture.stopPropagation();a.gesture.preventDefault();e=a.gesture;d=[e.touches[0].pageX,e.touches[0].pageY];h=[e.touches[1].pageX,e.touches[1].pageY];f=(d[0]+h[0])/2;n=(d[1]+h[1])/2;o=f;p=n;a=b.getBoundingClientRect();q=(-a.left+o)/g.scaleFactor+"px "+(-a.top+ -p)/g.scaleFactor+"px"},!0);this.registerGestureEvent(c,"transform",function(a){if(!cp.m_gestureHandler.enabled)return!1;a.gesture.stopPropagation();a.gesture.preventDefault();g.scaleFactor=g.previousScaleFactor*a.gesture.scale;g.scaleFactor=Math.max(1,Math.min(g.scaleFactor,3));b.scaleFactor=g.scaleFactor;g.transform(b,g.scaleFactor,q)},!0);this.registerGestureEvent(c,"transformend",function(a){if(!cp.m_gestureHandler.enabled)return!1;a.gesture.stopPropagation();a.gesture.preventDefault();b.scaleFactor= -g.scaleFactor;g.previousScaleFactor=g.scaleFactor;a.gesture.stopDetect&&a.gesture.stopDetect()},!0);var k,l,r,s,i,j,t=function(a){if(!cp.m_gestureHandler.enabled)return!1;1==b.scaleFactor&&!cp.shouldDrawCurrentSlideInPannableMode()?(g.fitMovie(a),b.scrollDeltaX=0,b.scrollDeltaY=0):(a.gesture.stopPropagation(),a.gesture.preventDefault(),a=a.gesture.touches||[a.gesture],k={pageX:a[0].pageX,pageY:a[0].pageY},l={pageX:a[0].pageX,pageY:a[0].pageY},r=parseFloat(b.style.left),s=parseFloat(b.style.top))}, -u=function(a){if(!cp.m_gestureHandler.enabled)return!1;var d=cp.shouldDrawCurrentSlideInPannableMode();if(1==b.scaleFactor&&!d)if("up"==a.gesture.direction&&cp.canScroll("up",cp.GESTURE_EVENT_TYPES.DRAG)||"down"==a.gesture.direction&&cp.canScroll("down",cp.GESTURE_EVENT_TYPES.DRAG))g.scrollV(a.gesture.deltaY-b.scrollDeltaY),b.scrollDeltaY=a.gesture.deltaY,g.isScrolling=!0;else{if(!cp.responsive&&("left"==a.gesture.direction&&cp.canScroll("left",cp.GESTURE_EVENT_TYPES.DRAG)||"right"==a.gesture.direction&& -cp.canScroll("right",cp.GESTURE_EVENT_TYPES.DRAG)))g.scrollH(a.gesture.deltaX-b.scrollDeltaX),b.scrollDeltaX=a.gesture.deltaX,g.isScrolling=!0}else a.gesture.stopPropagation(),a.gesture.preventDefault(),c.getBoundingClientRect(),a=a.gesture.touches||[a.gesture],i=r+(a[0].pageX-k.pageX),j=s+(a[0].pageY-k.pageY),l={pageX:a[0].pageX,pageY:a[0].pageY},b.style.left=i+"px",b.style.top=j+"px"},v=function(a){a.gesture.stopDetect&&a.gesture.stopDetect();g.isScrolling=!1;cp.shouldDrawCurrentSlideInPannableMode()|| -g.fitMovie(a);if(1==b.scaleFactor&&l&&k){var d=0.5c&&(cp.fontMap=[],cp.adjustResponsiveItems(cp.ReasonForDrawing.kOrientationChangeOrResize), -cp.rescaleFontSizes());this.previousScaleFactor=this.scaleFactor=1}};cp.HammerGestureHandler.prototype.resetZoom=function(){cp.isTextInputInFocus()||"SELECT"==document.activeElement.tagName.toUpperCase()||this.transform(cp("div_Slide"),1)};cp.HammerGestureHandler.prototype.resetScroll=function(a){cp.device!=cp.DESKTOP&&(cp.responsive?cp("project"):cp("main_container"),cp.m_gestureHandler.fitMovie(a))}; -cp.HammerGestureHandler.prototype.initializeDefaultGestureEvents=function(){var a=cp("div_Slide"),c=cp("cpDocument");Hammer(c,{prevent_default:!0,no_mouseevents:!0});Hammer(a,{prevent_default:!1,no_mouseevents:!0});cp.HammerGestureHandler.superClass.initializeDefaultGestureEvents.call(this)}; -cp.HammerGestureHandler.prototype.getEventPageX=function(a){var c=a.gesture;if(!c||!c.center)return cp.HammerGestureHandler.superClass.getEventPageX.call(this,a);c=c.center;if(c.pageX)return c.pageX;var a=document.documentElement,b=document.body;return c.clientX+(a&&a.scrollLeft||b&&b.scrollLeft||0)-(a&&a.clientLeft||b&&b.clientLeft||0)}; -cp.HammerGestureHandler.prototype.getEventPageY=function(a){var c=a.gesture;if(!c||!c.center)return cp.HammerGestureHandler.superClass.getEventPageY.call(this,a);c=c.center;if(c.pageY)return c.pageY;var a=document.documentElement,b=document.body;return c.clientY+(a&&a.scrollTop||b&&b.scrollTop||0)-(a&&a.clientTop||b&&b.clientTop||0)}; -cp.user_responseIdentifierArr=[];cp.correct_responseIdentifierArr=[];cp.ConvertToInteractionResultConstant=function(a){if(!cp.IsRunningInACAP){var b;switch(a.toLowerCase()){case "correct":b=!0;break;case "wrong":b=!1;break;case "unanticipated":b=cp.LMSDriverHolder.INTERACTION_RESULT_UNANTICIPATED;break;case "neutral":b=cp.LMSDriverHolder.INTERACTION_RESULT_NEUTRAL;break;case "incorrect":b=!1;break;default:cp.verbose&&cp.log("Could not find appropriate token for interaction result! -"+a)}return b}}; -cp.quizContinueButtonClickHandler=function(){cp.ThreeDQuestionHelper&&cp.ThreeDQuestionHelper.set360QuizMode(!1);cp.movie.play()};cp.qcnch=function(a){return cp.quizContinueButtonClickHandler(a)};cp.defaultHandlerForRuntimeMessageBox=function(){var a=cp.movie.playbackController.GetQuizController();a&&a.DefaultHandlerForRuntimeMessageBox()};cp.returnToQuiz=function(){var a=cp.movie.playbackController.GetQuizController();a&&a.ReturnToQuiz()}; -cp.allowQuizResubmit=function(){var a=cp.movie.playbackController.GetQuizController();a&&a.AllowQuizResubmit()};cp.forceSubmitAll=function(){var a=cp.movie.playbackController.GetQuizController();a&&a.ForceSubmitAll()}; -cp.quizReviewButtonClickHandler=function(a){var a=cp.D[a.id],b=cp.movie.playbackController.GetQuizController();b&&cp.movie.playbackController.HasQuiz()&&(b.SetIsInReviewMode(!0),cp.ThreeDQuestionHelper&&cp.ThreeDQuestionHelper.set360QuizMode(!0),a&&(a=cp.getFirstSlideInQuiz(),-1!=a&&(cpCmndGotoSlideAndResume=a)))}; -cp.getFirstSlideInQuiz=function(){var a;if(a=cp.movie.playbackController.GetQuizController()){var b=cp.movie.playbackController.GetSlideNames();if(cp.responsiveType==cp.kCPPMEVR){for(var c=0;c=c)){for(var d=0;dthis.m_mask[this.m_mask.length- -1])this.m_state=this.m_state.concat(this.m_doubleEsc),this.writeNumber(a/(this.m_mask[this.m_mask.length-1]+1)),this.writeNumber(a&this.m_mask[this.m_mask.length-1]);else for(b=0;b>c&63,this.m_state=this.m_state.concat(this.m_to64[d]),c+=6;break}},readNumber:function(){var a=this.m_state.charAt(this.m_curReadPos),b=this.m_state.charCodeAt(this.m_curReadPos++),c,d=0, -e;if(a==this.m_doubleEsc)return d=this.readNumber(),a=this.readNumber(),d*(this.m_mask[this.m_mask.length-1]+1)+a;a=this.m_fromEsc[a];if(0==a||void 0==a)d=this.m_from64[b];else for(b=e=0;b<=a;b++)c=this.m_from64[this.m_state.charCodeAt(this.m_curReadPos++)],d|=c<=a.length?!1:(a=a[0])?a.getIsLastPretestQuestion():!1},GetIsPretestQuestionsDisabled:function(){return this.m_PretestQuestionsDisabled},GetForceAbsoluteProgressType:function(){return this.m_forceAbsoluteProgressType},SetForceAbsoluteProgressType:function(a){this.m_forceAbsoluteProgressType= -a},GetFirstNonPretestQuestionEncountered:function(){return this.m_FirstNonPretestQuestionEncountered},SetFirstNonPretestQuestionEncountered:function(a){this.m_FirstNonPretestQuestionEncountered=a},GetQuestionScoresToSend:function(){var a=[],b=cp.movie.stage.getAllSlideNames();if(!b)return[];for(var c=0;ca||a>=cpInfoSlideCount)cpCmndResume=!0;else if("Question"== -this.GetCurrentSlideType())cpCmndResume=!0;else{var b=!1;this.GetIsInReviewMode()&&(b=!0);b?cpCmndResume=!0:(this.m_GoToQuizScopeActionExecuted=!0,cpCmndGotoSlideAndResume=a)}},EnterCurrentSlide:function(){var a=!1,b=this.GetCurrentSlideType(),c=this.m_playbackController.GetCurrentSlideIndex(),d=this.GetQuizScopeEndSlideIndex();if(cpInfoHasPlaybar&&this.GetHidePlaybarInQuiz()&&!this.GetIsInReviewMode()){var e=!1;"Question"==b?e=!0:0<=c&&(c==d&&"AnyScoreSlide"!=b)&&(e=!0);e&&(this.m_showPlaybar=!1)}cpCmndShowPlaybar= -this.m_showPlaybar;d=!1;if(this.m_playbackController){c=this.m_playbackController.GetCurrentSlideIndex();if(cp.movie.stage.isInvalidSlideIndex(c))return!1;if((e=this.GetQuestionsOnSlide(c))&&0a&&a==d:0<=a&&a==d&&(c=!0);0<=a&&(a==this.GetAnyScoreSlideIndex()&&!this.GetIsInReviewMode())&&(c=!0);var e=this.GetSlideType(a);if("Question"==e){var f=this.GetQuestionsOnSlide(a);if(f)for(var g=0;g=this.GetNumberOfQuizAttempts()&&this.GetIsAllowReviewMode())&&this.SetIsInReviewMode(!0),this.SetQuizInProgress(!1),void 0==b&&f&&(f=this.GetDefaultActionType(),f=this.GetIsPassed()?this.GetPassingGradeAction():this.GetFailingGradeAction(),cp.movie.frameBasedExecuteAction(f)));cpInfoHasPlaybar&&this.GetHidePlaybarInQuiz()&&(f=!1,"Question"==e?f=!0:0<=a&&(a==d&&"AnyScoreSlide"!=e)&&(f=!0),f&& -(this.m_showPlaybar=!0));return c},ExecutePretestAction:function(a){if(this.m_ExecutingPretestAction||void 0==a||cp.movie.stage.isInvalidSlideIndex(a))return!1;var b=this.GetQuestionsOnSlide(a);if(void 0==b||0>=b.length||void 0==b[0])return!1;var c=b[0],b=a+1;b>=cp.movie.stage.slides.length&&!cp.movie.stage.isOverlaySlideIndex(b)&&(b=-1);var d=void 0;-1!=b&&(d=this.GetQuestionsOnSlide(b));var e=!1;void 0!=d&&(0=b.length||void 0==b[0]||!b[0].getIsPretest())break;a-=1}this.m_PretestQuestionsDisabled=!0;a=this.GetPretestAction();void 0!=a&&(this.m_ExecutingPretestAction=!0,cp.movie.executeAction(a),this.m_ExecutingPretestAction=!1);return!0},GetProgressType:function(){return!this.m_QuizzingData?0:this.m_QuizzingData.progressIndicatorType},GetProgressTemplateString:function(){return!this.m_QuizzingData?"":this.m_QuizzingData.progressIndicatorString}, -GetIsReportingEnabled:function(){return!this.m_QuizzingData?!1:this.m_QuizzingData.reportingEnabled},GetParameterValueByName:function(a){if(!this.m_QuizzingData||!this.m_playbackController||!this.m_playbackController.HasQuiz())return"";var b="";switch(a){case "quizInfoPointsScored":b=this.GetScore();break;case "quizInfoTotalQuizPoints":b=this.GetMaxScore();break;case "quizInfoTotalCorrectAnswers":b=this.GetTotalCorrectQuestions();break;case "numQuestionsInQuiz":b=this.GetNumQuestions();if(void 0== -this.GetGraphManager()){var a=0,c=cp.movie.questionObjs,d=0;c&&(d=c.length);for(var e=0;ea||"NaN"==a)a=-1;return a}if(!this.m_QuizzingData)return-1;a=this.m_QuizzingData.firstSlideInQuiz;return void 0!=a?a:-1},GetLastSlideInQuizIndex:function(){var a=this.GetGraphManager();if(void 0!=a){a=a.getLastQuestionSlideIndex(); -if(void 0==a||0>a||"NaN"==a)a=-1;return a}if(!this.m_QuizzingData)return-1;a=this.m_QuizzingData.lastSlideInQuiz;return void 0!=a?a:-1},GetLastQuestionSlideInQuiz:function(){if(!cp.movie||!cp.movie.stage)return-1;var a=-1,b=cp.movie.playbackController.GetSlideNames(),c=this.GetFirstSlideInQuizIndex(),d=this.GetLastSlideInQuizIndex();if(-1==c||-1==d)return-1;for(var e=0;e=c&&e<=d)&&(-1!=a||e>a))a=e;return a},GetNumberOfQuizAttempts:function(){return!this.m_QuizzingData? -0:this.m_QuizzingData.numQuizAttemptsAllowed},GetIsPassed:function(){if(!this.m_QuizzingData)return!1;var a=parseFloat(this.GetScore()),b=parseFloat(this.GetPassingScore());return a>=b},GetScore:function(){if(!this.m_QuizzingData)return 0;var a=this.GetGraphManager(),b=cp.movie.questionObjs,c=0;if(!b)return 0;for(var d=0;d= -this.GetNumberOfQuizAttempts()||this.GetIsPassed()||this.GetIsInReviewMode()?!1:!0},GetQuizAdvanceType:function(){return!this.m_QuizzingData?"optional":this.m_QuizzingData.quizAdvance},GetQuestionAdvanceType:function(){return!this.m_QuizzingData?"optional":this.m_QuizzingData.questionAdvance},GetDefaultActionType:function(){return!this.m_QuizzingData?"":this.m_QuizzingData.defaultActionType},GetDefaultActionArgument:function(){return!this.m_QuizzingData?"":this.m_QuizzingData.defaultActionArg1},GetPassingGradeAction:function(){return!this.m_QuizzingData? -"":this.m_QuizzingData.passingGradeAction},GetFailingGradeAction:function(){return!this.m_QuizzingData?"":this.m_QuizzingData.failingGradeAction},GetTotalCorrectAnswers:function(){return!this.m_QuizzingData?0:this.m_QuizzingData.quizInfoTotalCorrectAnswers},GetNumberOfQuestionsInQuiz:function(){return!this.m_QuizzingData?0:this.m_QuizzingData.numQuestionsInQuiz},GetAllowSkipAnyScoreSlide:function(){return!this.m_QuizzingData?!0:this.m_QuizzingData.allowSkipAnyScoreSlide},GetPassingScore:function(){if(!this.m_QuizzingData)return 0; -if(this.GetPassFailPassingScoreTypeInPrecent()){var a=this.GetGraphManager();if(void 0!=a)return a=a.getMaxQuizScore(),"NaN"==a?"NaN":0>=a?0:this.GetPassFailPassingScoreValue()/100*a}return this.m_QuizzingData.passingScore},GetAllowBackwardMovementInQuiz:function(){return!this.m_QuizzingData?!1:this.m_QuizzingData.allowBackwardMovement},GetIsSlideJudged:function(a){a=this.GetQuestionsOnSlide(a);if(!a||0>=a.length)return!1;for(var b=!0,c=0;c=a.length||""==a)return"";if((lQuestionsOnSlide=a.split(","))&&""!=lQuestionsOnSlide&&0=c)return 0;for(var d= -0;d=this.GetCurrentAttempt()){var a=!1,a=this.GetQuizBranchAware()?this.GetAnyQuestionInBranchAnswered():this.GetAnyQuestionsAnswered();if(!a)return"QUIZ_ERROR_MUST_TAKE_QUIZ"}return""},GetAnyQuestionInBranchAnswered:function(){var a=this.GetGraphManager();if(!a)return!1;a=a.getCompletionBranch();if(void 0==a||0>=a.length)return!1;for(var b=0;b=b)return!1;for(var c=0;c=b)return!1;for(var c=0;c=this.GetNumberOfQuizAttempts())return this.GetIsAllowReviewMode()?"":"QUIZ_ERROR_TOO_MANY_QUIZ_ATTEMPTS";if(!this.quizInProgress||"optional"==this.GetQuestionAdvanceType()&&0=this.GetNumberOfQuizAttempts())return this.GetIsAllowReviewMode()?"":"QUIZ_ERROR_TOO_MANY_QUIZ_ATTEMPTS"; -break;case "AnyScoreSlide":b=!0}if(b&&!this.quizInProgress&&!this.GetIsInReviewMode())return"QUIZ_ERROR_MUST_START_QUIZ_TO_SEE_SCORE_SLIDE"}return""},CanLeavePretestQuestionSlide:function(){return""},CanLeaveQuestionSlide:function(a,b){var c=!1,d=this.GetQuestionsOnSlide(a);if(d)for(var e=0;e=this.GetCurrentAttempt())return"QUIZ_ERROR_MUST_TAKE_QUIZ"}else if(b&&!c&&!this.GetIsInReviewMode()&&!this.GetAllowBackwardMovementInQuiz()&&cpInfoCurrentSlideIndex== -a)return"QUIZ_ERROR_CANNOT_MOVE_BACKWARD_IN_QUIZ";return""},CanLeaveSlide:function(a,b){if(!this.m_playbackController||!this.m_playbackController.HasQuiz())return"";var c="",d=this.GetSlideType(a),e=this.GetQuizScopeEndSlideIndex();if("Question"==d&&(c=this.CanLeaveQuestionSlide(a,b),""!=c))return c;if(0<=a&&a==e){if("AnyScoreSlide"==d&&!this.GetAllowSkipAnyScoreSlide()&&!this.sawAnyScoreSlide&&this.quizInProgress)return"QUIZ_ERROR_MUST_SEE_SCORE_SLIDE";d=this.GetPassingScore();if(!b&&"mustPass"== -this.GetQuizAdvanceType()&&"NaN"!=d&&this.GetScore()b)b=f}-1==b&&(a=d.indexOf(c),0b)b=f}return b},GetNextQuestionSlideNumber:function(a,b){void 0==a&&(a=!1);void 0==b&&(b=!1);var c=-1;if(!cp.movie|| -!cp.movie.stage)return-1;var d=cpInfoCurrentSlideIndex,e=this.GetGraphManager();if(void 0!=e)for(var f=e.getCurrentBranch(),g=0;gd)if(-1==c||ed)if(-1==c||e=a.length)return!1;for(var b=0;ba)return!1;var b=this.GetQuizScopeEndSlideIndex();if(void 0==b||0>b||a!=b||void 0!=this.m_RunTimeMsgBox||this.m_HandledSubmitAll||!0==cp.vm.getVariableValue("cpQuizHandledAll")||!1==this.GetIsSubmitAll())return!1;this.SubmitAllQuestions(!0, -!1);return!0},SubmitAllDialogShown:function(a,b){if(void 0==a||0>a||void 0==b||0>b)return!1;if(void 0!=this.m_RunTimeMsgBox)return!0;if(a>=b||this.m_HandledSubmitAll||!0==cp.vm.getVariableValue("cpQuizHandledAll")||this.GetIsInReviewMode()||!1==this.GetIsSubmitAll())return!1;var c=this.GetAnyScoreSlideIndex(),d=this.GetQuizScopeEndSlideIndex();if(0<=c){if(b==c)return this.SubmitAllQuestions(!0,!1),!0}else if(0<=d&&a==d)return this.SubmitAllQuestions(!0,!1),!0;return!1},ReturnToQuiz:function(){if(void 0!= -this.m_RunTimeMsgBox){this.m_RunTimeMsgBox.hide();this.m_RunTimeMsgBox=void 0;var a=this.m_playbackController.GetCurrentSlideIndex();if(a=this.GetQuestionsOnSlide(a))for(var b=0;b=this.GetNumberOfQuizAttempts()&&this.GetIsAllowReviewMode())&&this.SetIsInReviewMode(!0)}this.m_submittedAllQuestions=!0;this.m_playbackController&&this.m_playbackController.GetSendCourseDataWithInteractionData()&&(this.SendInteractionsForSubmitAll(),this.SendQuestionEventDataForSubmitAll(),a=this.m_playbackController.GetLMSType().toUpperCase(),this.m_playbackController.GetIsTracked()&&"EMAIL"!=a&&"ACROBAT"!=a&&"INTERNALSERVER"!=a?this.m_playbackController.SendCourseData(!0): -"INTERNALSERVER"==a?this.m_playbackController.PostQuizResults():this.m_playbackController.SendCourseData(!1));a=this.GetPassingScore();b=this.GetMaxScore();isNaN(a)||(cpQuizInfoQuizPassPoints=a);0!=b&&(!isNaN(b)&&!isNaN(a))&&(cpQuizInfoQuizPassPercent=100*a/b);cpQuizInfoTotalProjectPoints=b}},DefaultHandlerForRuntimeMessageBox:function(){if(this.m_playbackController&&void 0!=this.m_RunTimeMsgBox){this.m_RunTimeMsgBox.hide();this.m_RunTimeMsgBox=void 0;var a=this.m_playbackController.GetCurrentSlideIndex(), -b=this.GetQuestionsOnSlide(a);if(b)for(var c=0;c=b.to&&(cpCmndGotoSlideAndResume=a))}},SubmitAllQuestions:function(a,b){this.m_HandledSubmitAll=!0;cp.vm.setVariableValue("cpQuizHandledAll",!0,!1);if(!1==a)return ForceSubmitAll();void 0!=this.m_RunTimeMsgBox&& -(this.m_RunTimeMsgBox.hide(),this.m_RunTimeMsgBox=void 0);var c="mustAnswer"==this.GetQuestionAdvanceType(),d=this.m_playbackController.GetCurrentSlideIndex();if(d=this.GetQuestionsOnSlide(d))for(var e=0;e=b.length))for(;a.getReadPos()< -b.length;){var c=a.readString(),d=a.readString();if(c=cp.D[c]){var e=c.stl;if(0=a.toString().length)){for(var b=a.readNumber(),c=0;c=cp.movie.stage.slides.length-1&&(b=!0);var c=cp.movie.playbackController.GetQuizController(),d=!1,e=!1;c&&(d=c.GetIsSlideJudged(a),e=c.GetIsSubmitAll());!b&&(!e&&d)&&(a+=1);b=cp.D.project_main;if(!cp.movie.stage.isInvalidSlideIndex(a)&&b&&(a=cp.movie.stage.getSlideNameForIndex(a)))if(a=cp.D[a])a=a.from,void 0!=a&&(b.currentFrame=a)},AddSlideInfo:function(a){this.m_slideNames||(this.m_slideNames=[]);this.m_slideNames.push(a)},GetNumSlides:function(){return!this.m_slideNames?0:this.m_slideNames.length}, -GetSlideNameAtIndex:function(a){if(this.m_slideNames&&0<=a&&aa||this.currentSlideIndex!=a&&this.m_quizController.LeaveSlide(this.currentSlideIndex,a))},SetCurrentSlide:function(a){this.verbose&&cp.log("CPQuizLibrary :: QuizController :: inside SetCurrentSlide - "+ -a);var b=this.GetSlideNameAtIndex(a);b!=this.currentSlide&&(b!=this.currentSlide&&0<=a&&aa||0>b)return"QUIZ_ERROR_BAD_SLIDE_NUM";var c=b= -a&&(c=!0);break;case this.SlideViewsTypeEnum.number:d>=a&&(c=!0);break;default:this.verbose&&cp.log("Illegal arg to EvaluateViewStatus:"+a+","+b)}return c},EvaluateStatus:function(a){var b=!1,c=this.QuizCriteriaEnum,d=this.SlideViewsTypeEnum,e=0,f=this.ReportingOptionsEnum;if("completion"==a)c=this.m_completionQuizCriteria,d=this.m_completionSlideViewsType,e=this.m_slideViewsForCompletion,f=this.m_completionCriteria;else if("success"==a)c=this.m_successQuizCriteria,d=this.m_successSlideViewsType, -e=this.m_slideViewsForSuccess,f=this.m_successCriteria;else return this.verbose&&cp.log("Illegal status type to evaluateStatus:"+a),!1;switch(f){case this.ReportingOptionsEnum.quiz_only:b=this.EvaluateQuizStatus(c);break;case this.ReportingOptionsEnum.quiz_and_views:this.EvaluateQuizStatus(c)&&this.EvaluateViewStatus(e,d)&&(b=!0);break;case this.ReportingOptionsEnum.views_only:b=this.EvaluateViewStatus(e,d);break;case this.ReportingOptionsEnum.access:b=1<=this.GetNumberOfSlidesSeen();break;default:this.verbose&& -cp.log("Illegal value of criteria in evaluateStatus():"+a)}return b},IsSlideVisited:function(a){if(a=cp.D[a])return a.v},ShouldSendSuccessStatus:function(){var a=!1;if(this.m_successCriteria==this.ReportingOptionsEnum.access)a=1<=this.GetNumberOfSlidesSeen();else if(this.m_successCriteria==this.ReportingOptionsEnum.quiz_only){if(a=!0,this.m_quizController){var b=this.m_slideNames[this.m_quizController.GetLastSlideInQuizIndex()];this.IsSlideVisited(b)||(a=!1)}}else if(this.m_successCriteria==this.ReportingOptionsEnum.quiz_and_views){if(this.m_quizController&& -(b=this.m_slideNames[this.m_quizController.GetLastSlideInQuizIndex()],!this.IsSlideVisited(b)))return a;if(!this.GetAllQuizzesPassed()||this.IsSlideVisited(this.m_slideNames[this.m_slideNames.length-1]))a=!0}else this.m_successCriteria==this.ReportingOptionsEnum.views_only&&(a=this.IsSlideVisited(this.m_slideNames[this.m_slideNames.length-1]));return a},GetTotalQuizStatusAll:function(){var a={isPassed:!1,isCompleted:!1,sendCompletion:!0,sendNothing:!1},b=this.ReportingOptionsEnum,b=this.LMSIsBreeze()? -this.ReportingOptionsEnum.breeze:this.GetReportingOption();switch(b){case this.ReportingOptionsEnum.breeze:this.HasQuiz(!0)?this.GetAllQuizAttemptsFinished()?(a.isPassed=this.GetAllQuizzesPassed()?!0:!1,a.isCompleted=!0,a.sendCompletion=!1):(a.isPassed=!1,a.isCompleted=!1,a.sendCompletion=!0):(this.GetAllSlidesSeen()?(a.isPassed=!0,a.isCompleted=!0):(a.isPassed=!1,a.isCompleted=!1),a.sendCompletion=!0);break;case this.ReportingOptionsEnum.completion_success:a.sendCompletion=!1;a.isCompleted=this.EvaluateStatus("completion"); -a.isPassed=this.EvaluateStatus("success");break;case this.ReportingOptionsEnum.completion_only:a.sendCompletion=!0;a.isCompleted=this.EvaluateStatus("completion");break;case this.ReportingOptionsEnum.incompleteToPassedOrFailed:a.isPassed=this.EvaluateStatus("success");this.m_beginSendingSuccessStatus=this.ShouldSendSuccessStatus();break;case this.ReportingOptionsEnum.access:break;default:1>this.GetNumberOfSlidesSeen()?(a.isPassed=!1,a.isCompleted=!1):(a.isPassed=!0,a.isCompleted=!0),a.sendCompletion= -!0}return a},GetTotalQuizPassed:function(){return this.GetTotalQuizStatusAll().isPassed?"passed":"failed"},GetTotalQuizCompleted:function(){return this.GetTotalQuizStatusAll().isCompleted?"completed":"incomplete"},GetTotalQuizSendCompletion:function(){var a=!0;switch(this.m_completionValueToSend){case "completion":a=!0;break;case "passed":a=!1;break;default:a=this.GetTotalQuizStatusAll().sendCompletion}return a},GetTotalQuizState:function(){return""},GetProgressMeasure:function(){return 0==this.m_slideNames.length? -0:this.GetNumberOfSlidesSeen()/this.m_slideNames.length},ShouldFlushCourseData:function(a,b){a?a.printCourseData():this.verbose&&cp.log("lastData is undefined");b?(this.verbose&&cp.log("thisData "),b.printCourseData()):this.verbose&&cp.log("thisData is undefined");if("EMAIL"==this.m_lmsType.toUpperCase()||"ACROBAT"==this.m_lmsType.toUpperCase()||"INTERNALSERVER"==this.m_lmsType.toUpperCase())return this.verbose&&cp.log("return false0"),!1;if(void 0==b)return this.verbose&&cp.log("return false1"), -!1;if(void 0==a)return this.verbose&&cp.log("return true0"),!0;if(b.quizMinScore!=a.quizMinScore||b.quizMaxScore!=a.quizMaxScore||b.sendScoreAsPercent!=a.sendScoreAsPercent||b.quizSendCompletion!=a.quizSendCompletion)return this.verbose&&cp.log("return true1"),!0;if(b.quizScore!=a.quizScore||b.quizCompleted!=a.quizCompleted||b.quizPassed!=a.quizPassed)return this.verbose&&cp.log("return true2"),!0;this.verbose&&cp.log("return false2");return!1},ShouldSendCourseData:function(a,b){a?(this.verbose&& -cp.log("lastData "),a.printCourseData()):this.verbose&&cp.log("lastData is undefined");b?(this.verbose&&cp.log("thisData "),b.printCourseData()):this.verbose&&cp.log("thisData is undefined");if("EMAIL"==this.m_lmsType.toUpperCase()||"ACROBAT"==this.m_lmsType.toUpperCase()||"INTERNALSERVER"==this.m_lmsType.toUpperCase())return this.verbose&&cp.log("return false -2"),!1;if(void 0==b)return this.verbose&&cp.log("return false -1"),!1;if(void 0==a)return this.verbose&&cp.log("return true0"),!0;this.verbose&& -cp.log("function shouldSendCourseData 33");if(b.slideCount>=a.slideCount+10)return this.verbose&&cp.log("return true1"),!0;if(b.quizMinScore!=a.quizMinScore||b.quizMaxScore!=a.quizMaxScore||b.sendScoreAsPercent!=a.sendScoreAsPercent||b.quizSendCompletion!=a.quizSendCompletion)return this.verbose&&cp.log("return true2"),!0;if(b.quizScore!=a.quizScore||b.quizCompleted!=a.quizCompleted||b.quizPassed!=a.quizPassed)return this.verbose&&cp.log("return true3"),!0;if(b.quizLocation!=a.quizLocation)return!0; -this.verbose&&cp.log("return false4");return!1},SendSuspendDataOnly:function(){this.verbose&&cp.log("PlaybackController::SendSuspendDataOnly()");var a=cp.createAndGetDataChunk();this.GetIsTracked()&&this.m_trackingAdapter&&(cp.m_isLMSPreview&&void 0!=cp.LMSDriverHolder&&cp.toggleLMSPreviewDebugLogsColor(cp.LMSDriverHolder),this.m_trackingAdapter.SendSuspendData(a));cp.IsRunningInACAP&&cp.fireResumeDataEvent(a)},CanSendCourseData:function(){return!0},GetCourseData:function(){var a={printCourseData:function(){}}; -a.slideCount=this.GetCurrentSlideIndex();a.quizScore=this.GetTotalQuizScore();a.quizMinScore=this.GetTotalQuizMinScore();a.quizMaxScore=this.GetTotalQuizMaxScore();a.sendScoreAsPercent=this.GetSendScoreAsPercent();a.quizLocation=""+this.GetTotalQuizLocation()+"";a.quizCompleted=this.GetTotalQuizCompleted();a.quizPassed=this.GetTotalQuizPassed();a.quizSendCompletion=this.GetTotalQuizSendCompletion();a.quizTime=void 0;a.quizState=this.GetTotalQuizState();a.progressMeasure=this.GetProgressMeasure(); -a.sendIncompleteToPassedOrFailed=this.m_sendIncompleteToPassedOrFailed;a.beginSendingSuccessStatus=this.m_beginSendingSuccessStatus;return a},SendCourseData:function(a){var b=this.GetQuizController();b&&b.GetIsSubmitAll()&&b.quizInProgress&&!b.m_submittedAllQuestions?this.SendSuspendDataOnly():this.CanSendCourseData()&&(this.SetBreezeDefaults(),this.m_trackingAdapter&&this.GetIsTracked()&&(b=this.GetCourseData(),a=a||this.ShouldFlushCourseData(this.m_lastCourseDataSent,b),this.verbose&&cp.log("sendCourseData flush "+ -a),a||this.ShouldSendCourseData(this.m_lastCourseDataSent,b)?(this.m_lastCourseDataSent=b,this.verbose&&cp.log("sending course data flush "+a),this.m_trackingAdapter.SendTrackingData(b.quizScore,b.quizMinScore,b.quizMaxScore,b.sendScoreAsPercent,b.quizLocation,b.quizCompleted,b.quizPassed,b.quizSendCompletion,b.quizTime,b.quizState,b.progressMeasure,b.sendIncompleteToPassedOrFailed,b.beginSendingSuccessStatus),a&&this.m_trackingAdapter.Flush()):this.verbose&&cp.log("NOT sending course data")))},SendQuestionEventData:function(a){this.verbose&& -cp.log("PlaybackController::SendQuestionData()");var b=0,c=this.GetQuizController();c&&(b=c.GetMaxScore());b={slideNumber:a.getslideNum(),questionNumber:a.getquestionNumInQuiz(),questionScoringType:a.getQuestionScoringType(),interactionType:a.getinteractionType(),weighting:a.getWeighting(),questionAnswered:!1==a.getanswersIncomplete(),questionAnsweredCorrectly:a.getansweredCorrectly(),questionMaxScore:b,questionScore:a.getscoredPoints(),questionMaxAttempts:a.getmaxTries(),infiniteAttempts:9999==a.getmaxTries(), -questionAttempts:a.getnumTries(),interactionID:a.getinteractionID(),quizName:"QuizName",objectiveID:a.getobjectiveID(),selectedAnswer:a.m_chosenAnswersAsString};cp.IsRunningInACAP&&(b.descriptionData=a.m_descriptionTexts);cp.em.fireEvent("CPQuestionSubmit",b)},SetBreezeDefaults:function(){this.LMSIsBreeze()&&(this.m_completionValueToSend="default",this.m_completionTrigger=this.ReportingOptionsEnum.breeze,this.m_completionSlideViewPercentage=100,this.m_sendScoreAsPercent=!1,this.m_trackingLevel="interactions", -this.m_trackingUrlEncodeVersionAndSession=!0,this.m_trackingCharsToNotUrlEncode="",this.m_trackingSendResumeData=!0)},SendInteractionData:function(a,b){this.verbose&&cp.log("PlaybackController::SendInteraction()");this.SetBreezeDefaults();if(this.GetIsTracked()&&"interactions"==this.m_trackingLevel){var c=this.GetQuizController();c&&c.GetScore();if(this.LMSIsAICC()||this.IsRunningInConnect())this.m_trackingAdapter&&this.m_trackingAdapter.SendInteractionData(a.m_interactionID,a.m_objectiveID,a.m_interactionType, -a.m_correctAnswersAsString,a.m_chosenAnswersAsString,a.m_isCorrectAsString,a.m_weighting,a.m_latencyAsSeconds,a.m_curDateAsString2,a.m_curTimeAsSecondsSinceMidnight,a.m_scoredPoints,a.m_negativeWeight,b);else{this.LMSIsAlternateReporting()&&(escapeAnswers=!1);var d=a.m_correctAnswersAsString;if(this.LMSIsAlternateReporting()&&c){var e=c.GetQuestionsOnSlide(this.currentSlide);e&&0!=e.length&&(e=e[0])&&e.GetIsSurvey()&&(d=" ");this.m_trackingAdapter&&this.m_trackingAdapter.SetCurrentAttempt(c.quizNumStarts)}this.m_trackingAdapter&& -this.m_trackingAdapter.SendInteractionData(a.m_interactionID,a.m_objectiveID,a.m_interactionType,d,a.m_chosenAnswersAsString,a.m_isCorrectAsString,a.m_weighting,a.m_latencyAsSeconds,a.m_curDateAsString,a.m_curTimeAsSecondsSinceMidnight,a.m_scoredPoints,a.m_negativeWeight,b)}}},OnEndQuiz:function(){this.GetIsTracked()&&("EMAIL"!=this.m_lmsType.toUpperCase()&&"ACROBAT"!=this.m_lmsType.toUpperCase()&&"INTERNALSERVER"!=this.m_lmsType.toUpperCase())&&this.SendCourseData(!0)},SendEmailResults:function(){this.GetIsTracked()&& -"EMAIL"==this.m_lmsType.toUpperCase()&&(this.verbose&&cp.log("sending course data from sendEmailResults"),this.SendCourseData(!0))},PostQuizResults:function(){if(this.GetIsTracked()&&("ACROBAT"==this.m_lmsType.toUpperCase()||"INTERNALSERVER"==this.m_lmsType.toUpperCase()))this.verbose&&cp.log("sending course data from PostQuizResults"),this.CanPostResults()&&this.SendCourseData(!0)},CanPostResults:function(){return this.GetAllQuizzesPassed()||this.m_quizController&&(this.m_quizController.m_numStarts>= -this.m_quizController.m_numQuizAttemptsAllowed||this.m_quizController.GetIsInReviewMode())?!0:!1},DoSendLMSTrackingData:function(){this.GetIsTracked()&&"EMAIL"!=this.m_lmsType.toUpperCase()&&"ACROBAT"!=this.m_lmsType.toUpperCase()&&"INTERNALSERVER"!=this.m_lmsType.toUpperCase()?this.SendCourseData(!this.LMSIsAICC()||!this.m_playbackController.IsRunningInConnect()):this.SendCourseData(!1)},RestoreQuizState:function(){this.verbose&&cp.log("PlaybackController :: RestoreQuizState()");var a=this.GetQuizController(); -a&&a.GetIsReportingEnabled()&&(cp.resumeValuesFromDataChunk(),cp.movie.resumeMovieSpecificValue())},GetRestoredQuizSlide:function(){this.verbose&&cp.log("PlaybackController :: GoToRestoredQuizSlide()");var a=cp.D.project_main.currentFrame;this.verbose&&cp.log("Restoring frame :: "+a);return a},DoPollLMSGetTrackingDataLoaded:function(){this.GetIsTracked()&&(this.m_trackingAdapter?this.m_trackingAdapter.IsTrackingDataLoaded()&&(this.m_trackingAdapter.GetLessonLocation(),this.m_trackingAdapter.GetLessonData()): -(this.verbose&&cp.log("_doPollLMSGetTrackingDataLoaded else"),turnOffTracking()))},ExitCourse:function(){this.verbose&&cp.log("function exitCourse 1 "+isTracked);this.m_trackingAdapter&&this.GetIsTracked()?(this.verbose&&cp.log("function exitCourse isTracked "),"EMAIL"!=this.m_lmsType.toUpperCase()&&("ACROBAT"!=this.m_lmsType.toUpperCase()&&"INTERNALSERVER"!=this.m_lmsType.toUpperCase())&&(this.verbose&&cp.log("function exitCourse sendCourseData "),this.SendCourseData(!0)),this.m_trackingAdapter.Finish()): -this.verbose&&cp.log("doFinalExit();")},GetSendCourseDataWithInteractionData:function(){return this.m_sendCourseDataWithInteractionData},GetLMSType:function(){return this.m_lmsType},SetLMSType:function(){this.verbose&&cp.log("SetLMSType");switch(this.m_QuizReportingData.lmsType){case 1:this.m_lmsType="SCORM2004";break;case 2:this.m_lmsType="SCORM12";break;case 3:this.m_lmsType="Authorware";break;case 4:this.m_lmsType="AICC";break;case 5:this.m_lmsType="Questionmark";break;case 6:this.m_lmsType="email"; -break;case 7:this.m_lmsType="AICC";break;case 8:this.m_lmsType="Acrobat";break;case 9:this.m_lmsType="InternalServer";break;default:this.m_lmsType=""}},SetAuthorwareDelimeter:function(){this.verbose&&cp.log("SetAuthorwareDelimeter");this.m_AuthorwareDelimeter=this.m_QuizReportingData.authorwareDelimeter},SetSendScoreAsPercent:function(){this.verbose&&cp.log("SetSendScoreAsPercent");this.m_sendScoreAsPercent=this.m_QuizReportingData.sendScoreAsPercent?!0:!1},GetSendScoreAsPercent:function(){return this.IsRunningInConnect()? -!1:this.m_sendScoreAsPercent},SetSendCompletionFlag:function(){this.m_completionValueToSend=this.m_QuizReportingData.sendCompletionFlag?"completion":"passed"},GetSendCompletionFlag:function(){return this.m_completionValueToSend},SetTrackingLevel:function(){this.verbose&&cp.log("SetTrackingLevel");switch(this.m_QuizReportingData.trackingLevel){case 0:this.m_trackingLevel="interactions";break;case 2:this.m_trackingLevel="score"}},SetSlideViewPercentage:function(){this.verbose&&cp.log("SetSlideViewPercentage"); -this.m_completionSlideViewPercentage=this.m_QuizReportingData.slideViewPercentage},SetReportingOption:function(){this.verbose&&cp.log("SetReportingOption");switch(this.m_QuizReportingData.reportingOption){case 0:this.m_reportingOption=this.ReportingOptionsEnum.completion_success;break;case 1:this.m_reportingOption=this.ReportingOptionsEnum.completion_only;break;case 2:this.m_reportingOption=this.ReportingOptionsEnum.incompleteToPassedOrFailed;this.m_sendIncompleteToPassedOrFailed=!0;break;case 4:this.m_reportingOption= -this.ReportingOptionsEnum.breeze;break;default:this.m_reportingOption=""}this.m_completionTrigger=this.m_reportingOption},GetReportingOption:function(){return this.m_reportingOption},SetSlideViewsForSuccess:function(){this.verbose&&cp.log("SetSlideViewsForSuccess");this.m_slideViewsForSuccess=this.m_QuizReportingData.slideViewsForSuccess;switch(this.m_QuizReportingData.slideViewsTypeForSuccess){case 0:this.m_successSlideViewsType=this.SlideViewsTypeEnum.percent;break;case 1:this.m_successSlideViewsType= -this.SlideViewsTypeEnum.number;break;default:this.m_successSlideViewsType=this.SlideViewsTypeEnum.percent}},SetSlideViewsForCompletion:function(){this.verbose&&cp.log("SetSlideViewsForCompletion");this.m_slideViewsForCompletion=this.m_QuizReportingData.slideViewsForCompletion;switch(this.m_QuizReportingData.slideViewsTypeForCompletion){case 0:this.m_completionSlideViewsType=this.SlideViewsTypeEnum.percent;break;case 1:this.m_completionSlideViewsType=this.SlideViewsTypeEnum.number;break;default:this.m_completionSlideViewsType= -this.SlideViewsTypeEnum.percent}},SetQuizCriteriaForCompletion:function(){this.verbose&&cp.log("SetQuizCriteriaForCompletion");switch(this.m_QuizReportingData.quizCriteriaForCompletion){case 0:this.m_completionQuizCriteria=this.QuizCriteriaEnum.QuizIsPassed;break;case 1:this.m_completionQuizCriteria=this.QuizCriteriaEnum.QuizIsAttempted;break;case 2:this.m_completionQuizCriteria=this.QuizCriteriaEnum.QuizIsPassedOrAttempLimitReached;break;default:this.verbose&&cp.log("Value of quizCriteria not valid in setQuizCriteriaForCompletion()!"), -this.m_completionQuizCriteria=this.QuizCriteriaEnum.QuizIsPassed}},SetQuizCriteriaForSuccess:function(){this.verbose&&cp.log("SetQuizCriteriaForSuccess");switch(this.m_QuizReportingData.quizCriteriaForSuccess){case 0:this.m_successQuizCriteria=this.QuizCriteriaEnum.QuizIsPassed;break;case 1:this.m_successQuizCriteria=this.QuizCriteriaEnum.QuizIsAttempted;break;case 2:this.m_successQuizCriteria=this.QuizCriteriaEnum.QuizIsPassedOrAttempLimitReached;break;default:this.verbose&&cp.log("Value of quizCriteria not valid in setQuizCriteriaForSuccess()!"), -this.m_successQuizCriteria=this.QuizCriteriaEnum.QuizIsPassed}},SetCompletionCriteria:function(){this.verbose&&cp.log("SetCompletionCriteria");switch(this.m_QuizReportingData.completionCriteria){case 0:this.m_completionCriteria=this.ReportingOptionsEnum.breeze;break;case 1:this.m_completionCriteria=this.ReportingOptionsEnum.quiz_only;break;case 2:this.m_completionCriteria=this.ReportingOptionsEnum.quiz_and_views;break;case 3:this.m_completionCriteria=this.ReportingOptionsEnum.views_only;break;case 4:this.m_completionCriteria= -this.ReportingOptionsEnum.access;break;case 5:this.m_completionCriteria=this.ReportingOptionsEnum.completion_success;break;case 6:this.m_completionCriteria=this.ReportingOptionsEnum.incompleteToPassedOrFailed;break;default:this.verbose&&cp.log("Invalid criteria recd in setOnlySuccessCriteria")}},SetSuccessCriteria:function(){this.verbose&&cp.log("SetSuccessCriteria");switch(this.m_QuizReportingData.successCriteria){case 0:this.m_successCriteria=this.ReportingOptionsEnum.breeze;break;case 1:this.m_successCriteria= -this.ReportingOptionsEnum.quiz_only;break;case 2:this.m_successCriteria=this.ReportingOptionsEnum.quiz_and_views;break;case 3:this.m_successCriteria=this.ReportingOptionsEnum.views_only;break;case 4:this.m_successCriteria=this.ReportingOptionsEnum.access;break;case 5:this.m_successCriteria=this.ReportingOptionsEnum.completion_success;break;case 6:this.m_successCriteria=this.ReportingOptionsEnum.incompleteToPassedOrFailed;break;default:this.verbose&&cp.log("Invalid criteria recd in setOnlySuccessCriteria")}}, -SetEmailAddress:function(){this.verbose&&cp.log("SetEmailAddress");this.m_emailAddress=this.m_QuizReportingData.emailAddress},SetInternalServerURL:function(){this.verbose&&cp.log("SetInternalServerURL");this.m_internalServerURL=this.m_QuizReportingData.internalServerURL},SetDirectory:function(){this.verbose&&cp.log("SetDirectory");this.m_companyName=this.m_QuizReportingData.companyName;this.m_departmentName=this.m_QuizReportingData.departmentName;this.m_courseName=this.m_QuizReportingData.courseName}, -SetCourseNode:function(){this.verbose&&cp.log("SetCourseNode");this.m_courseNode=this.m_QuizReportingData.courseNode},GetIsTrackedFlag:function(){return this.m_isTrackedFlag},SetIsTrackedFlag:function(){this.verbose&&cp.log("SetIsTrackedFlag");this.m_isTrackedFlag=this.m_QuizReportingData.isTrackedFlag},SetTrackingUrlEncodeVersionAndSession:function(){this.verbose&&cp.log("SetTrackingUrlEncodeVersionAndSession");this.m_trackingSendResumeData=this.m_QuizReportingData.trackingUrlEncodeVersionAndSession? -!0:!1},SetTrackingCharsToNotUrlEncode:function(){this.verbose&&cp.log("SetTrackingCharsToNotUrlEncode");this.m_trackingCharsToNotUrlEncode=this.m_QuizReportingData.trackingCharsToNotUrlEncode},SetCommitDataOnEverySlide:function(){this.verbose&&cp.log("SetOptimizeCommitData");this.m_commitDataOnEverySlide=this.m_QuizReportingData.commitDataOnEverySlide?!0:!1},SetTrackingSendResumeData:function(){this.verbose&&cp.log("SetTrackingSendResumeData");this.m_trackingSendResumeData=this.m_QuizReportingData.trackingSendResumeData? -!0:!1},SetCmiExitNormalAfterCompletion:function(){this.verbose&&cp.log("SetCmiExitNormalAfterCompletion");this.m_CmiExitNormalAfterCompletion=this.m_QuizReportingData.cmiExitNormalAfterCompletion},ResetReportingOptions:function(){this.m_sendCourseDataWithInteractionData=!1;this.m_completionValueToSend="default";this.m_completionTrigger=cp.ReportingOptionsEnum.completion_success;this.m_slideViewsForCompletion=this.m_slideViewsForSuccess=0;this.m_successCriteria=this.m_completionCriteria=cp.ReportingOptionsEnum.access; -this.m_completionQuizCriteria=this.m_successQuizCriteria=cp.QuizCriteriaEnum.QuizIsPassed;this.m_successSlideViewsType=this.m_completionSlideViewsType=cp.SlideViewsTypeEnum.percent;this.m_UseRusticiAdapter=this.m_beginSendingSuccessStatus=this.m_sendIncompleteToPassedOrFailed=!1;this.m_lmsType="";this.m_sendScoreAsPercent=!1;this.m_trackingLevel=0;this.m_completionSlideViewPercentage=100;this.m_reportingOption=cp.ReportingOptionsEnum.completion_success;this.m_courseNode=this.m_courseName=this.m_departmentName= -this.m_companyName=this.m_internalServerURL=this.m_emailAddress="";this.m_isTrackedFlag=!1;this.m_trackingUrlEncodeVersionAndSession=!0;this.m_trackingCharsToNotUrlEncode="";this.m_isTracked=this.m_loadingResumeData=this.m_trackingIsOn=this.m_CmiExitNormalAfterCompletion=this.m_trackingSendResumeData=this.m_commitDataOnEverySlide=!1}};cp.ACAPPlaybackController=function(){cp.ACAPPlaybackController.baseConstructor.call(this);this.ResetReportingOptions()};cp.inherits(cp.ACAPPlaybackController,cp.PlaybackController); -cp.ACAPPlaybackController.prototype.ResetReportingOptions=function(){this.m_sendCourseDataWithInteractionData=!0;this.m_completionValueToSend="default";this.m_completionTrigger=cp.ReportingOptionsEnum.completion_success;this.m_slideViewsForSuccess=window.cpAPIInterface.slideViewsForSuccess;this.m_slideViewsForCompletion=window.cpAPIInterface.slideViewsForCompletion;this.m_completionCriteria=window.cpAPIInterface.completionCriteria;this.m_successCriteria=window.cpAPIInterface.successCriteria;this.m_successQuizCriteria= -window.cpAPIInterface.quizCriteriaForSuccess;this.m_completionQuizCriteria=window.cpAPIInterface.quizCriteriaForCompletion;this.m_completionSlideViewsType=window.cpAPIInterface.slideViewsTypeForCompletion;this.m_successSlideViewsType=window.cpAPIInterface.slideViewsTypeForSuccess;this.m_sendIncompleteToPassedOrFailed=!1;this.m_beginSendingSuccessStatus=!0;this.m_UseRusticiAdapter=!1;this.m_lmsType="";this.m_sendScoreAsPercent=!1;this.m_trackingLevel=0;this.m_completionSlideViewPercentage=100;this.m_reportingOption= -cp.ReportingOptionsEnum.completion_success;this.m_courseNode=this.m_courseName=this.m_departmentName=this.m_companyName=this.m_internalServerURL=this.m_emailAddress="";this.m_trackingUrlEncodeVersionAndSession=this.m_isTrackedFlag=!0;this.m_trackingCharsToNotUrlEncode="";this.m_isTracked=this.m_loadingResumeData=this.m_trackingIsOn=this.m_CmiExitNormalAfterCompletion=this.m_commitDataOnEverySlide=!0}; -cp.TrackingAdapter=function(){this.m_trackingAdapterType={};this.m_trackingDataLoaded_bln=this.m_initialized=!1;this.m_escapeAICCvs_bln=this.m_lessonDataTracked_bln=this.m_interactionDataTracked_bln=!0;this.m_ignoreEscapeList_str="";this.m_timer_int=this.m_currentAttempt=0;this.m_timer_str="";this.m_score_tot=this.m_score_pass=this.m_score_scaled_cp=this.m_score_max=this.m_score_min=this.m_score_raw=0;this.m_success_status=this.m_time="";this.m_statusType_int=1;this.m_exit=this.m_entry=this.m_credit= -this.m_student_name=this.m_student_id=this.m_lesson_mode="";this.m_progressMeasure=0;this.m_interaction_ary=[];this.m_comments=this.m_comments_from_lms=this.m_launch_data=this.m_vendor_data=this.m_suspend_data=this.m_lesson_data=this.m_lessonLocation="";this.m_lesson_status=void 0;this.m_lesson_status_array=[];this.m_score_array=[];this.m_mastery_score=0;this.m_time_limit_action=this.m_max_time_allowed="";this.m_isRDStandAlone=this.m_isRDPreview=!1;this.m_adapterReportingVariables=cp.ReportingVariables.split(","); -this.verbose=!1}; -cp.TrackingAdapter.prototype={GetInteractionArray:function(){return this.m_interaction_ary},GetCurrentAttempt:function(){return this.m_currentAttempt},SetCurrentAttempt:function(a){this.m_currentAttempt=a},Initialize:function(){this.IsInitialized()||this.SetInitialized("true")},SetInitialized:function(a){"true"==a?a=!0:"false"==a&&(a=!1);this.m_initialized=a},IsInitialized:function(){return this.m_initialized},IsInteractionDataTracked:function(){return this.m_interactionDataTracked_bln},IsLessonDataTracked:function(){return this.m_lessonDataTracked_bln}, -IsTrackingDataLoaded:function(){return this.m_trackingDataLoaded_bln},IsAICCvsEscaped:function(){return this.m_escapeAICCvs_bln},GetTrackingAdapterType:function(){return this.m_trackingAdapterType},SetTrackingAdapterType:function(a,b){this.m_trackingAdapterType.type_int=a;this.m_trackingAdapterType.type_str=b},Flush:function(){},Finish:function(){},GetInteractionDataTracked:function(){return this.m_interactionDataTracked_bln},GetLessonDataTracked:function(){return this.m_lessonDataTracked_bln},GetEscapeAICCvs:function(){return this.m_escapeAICCvs_bln}, -GetIgnoreEscapeList:function(){return this.m_ignoreEscapeList_str},SetInteractionDataTracked:function(a){this.m_interactionDataTracked_bln=a},SetLessonDataTracked:function(a){this.m_lessonDataTracked_bln=a},SetEscapeAICCvs:function(a){this.m_escapeAICCvs_bln=a},SetIgnoreEscapeList:function(a){this.m_ignoreEscapeList_str=a},SetTrackingDataLoaded:function(a){return this.m_trackingDataLoaded_bln=a},SetTrackingFinished:function(){this.SetInitialized(!1);this.SetTrackingDataLoaded(!1)},SetStatusType:function(a){this.m_statusType_int= -a},GetStatusType:function(){return this.m_statusType_int},GetScore:function(a){var b=this.GetScoreRaw();""==b&&(b=" ");if(void 0==a||!1==a)""!=this.GetScoreMax()&&""!=this.GetScoreMin()&&(b=b+","+this.GetScoreMax()+","+this.GetScoreMin());return b},GetScoreRaw:function(){void 0==this.m_score_raw&&(this.m_score_raw="");return this.m_score_raw},GetScoreMax:function(){if(void 0==this.m_score_max||""==this.m_score_max||" "==this.m_score_max)this.m_score_max="";return this.m_score_max},GetScoreMin:function(){if(void 0== -this.m_score_min||""==this.m_score_min||" "==this.m_score_min)this.m_score_min="";return this.m_score_min},GetScoreScaled:function(){if(void 0==this.m_score_scaled_cp||""==this.m_score_scaled_cp||" "==this.m_score_scaled_cp)this.m_score_scaled_cp=1;return this.m_score_scaled_cp},GetScorePass:function(){return this.m_score_pass},GetScoreTot:function(){return this.m_score_tot},GetTimeInSession:function(){return this.m_time},GetLessonLocation:function(){if(void 0==this.m_lessonLocation||""==this.m_lessonLocation)this.m_lessonLocation= -" ";return this.m_lessonLocation},GetLessonStatus:function(){void 0==this.m_lesson_status&&(this.m_lesson_status="incomplete");return this.m_lesson_status},GetSuccessStatus:function(){return this.m_success_status},GetLessonMode:function(){return this.m_lesson_mode},GetStudentID:function(){return this.m_student_id},GetStudentName:function(){return this.m_student_name},GetCredit:function(){return this.m_credit},GetEntry:function(){return this.m_entry},GetProgressMeasure:function(){return this.m_progressMeasure}, -SetScore:function(a,b,c){void 0!=a&&this.SetScoreRaw(a);void 0!=b&&this.SetScoreMin(b);void 0!=c&&this.SetScoreMax(c);void 0!=c&&0!=c&&void 0!=a?this.SetScoreScaled(a/c):void 0!=a&&this.SetScoreScaled(a/100)},ValidateScore:function(a){switch(typeof a){case "null":a=void 0;break;case "string":a=Number(a)==a?Number(a):void 0;break;case "number":a=isNaN(a)?void 0:a;break;default:a=void 0}void 0!=a?(a=this.RoundDecimals(a,2),a=a.toString()):a=" ";return a},SetScoreRaw:function(a){this.m_score_raw=this.ValidateScore(a)}, -SetScoreMax:function(a){this.m_score_max=this.ValidateScore(a)},SetScoreMin:function(a){this.m_score_min=this.ValidateScore(a)},SetScoreScaled:function(a){this.m_score_scaled_cp=this.ValidateScore(a)},SetScorePass:function(a){this.m_score_pass=a},SetScoreTot:function(a){this.m_score_tot=a},SetProgressMeasure:function(a){0>a||1b))for(d=1;d<=b-e.length;d++)c+="0";return c+a},FormatTime:function(a,b,c){var d;d=b="00";c=this.FormatNum(Math.floor(a),2);59=this.AICCQueue.length)){this.AICCLMSCallTimer=void 0;clearInterval(this.AICCLMSCallTimer);for(var a=this.AICCQueue.length,b=0;b\r\t';this.m_resultXML+='\r\t';this.m_resultXML+='\r\t'; -this.m_resultXML+='\r\t';this.m_resultXML+='\r\t';var a=cpInfoProjectName;""==a&&(a=cp.D.project.pN);this.m_resultXML+='\r\t';this.m_resultXML+='\r\t';this.m_resultXML+='\r\t';0\r\t')}return a+"\r\t"};cp.InternalServerAdapter.prototype.BuildResultXML=function(){var a;a="\r\t"+this.BuildResultXMLBodyCore();a+=this.BuildResultXMLBodyInteraction();return a+"\r\t"}; -cp.InternalServerAdapter.prototype.BuildResultXMLBodyCore=function(){var a;a="\r\t"+('\r\t');a+='\r\t';this.m_sendScoreAsPercent?a+='\r\t':(a+='\r\t',a+='\r\t',a+='\r\t');a+='\r\t';return a+"\r\t"};cp.InternalServerAdapter.prototype.BuildResultXMLBodyInteraction=function(){var a="\r\t";if(this.IsInteractionDataTracked()&&0\r\t"}; -cp.InternalServerAdapter.prototype.BuildInteractionsNode=function(a){var b;b="\r\t"+('\r\t');b+='\r\t';b+='\r\t';b+='\r\t';b+='\r\t';b+='\r\t';b+='\r\t';b+='\r\t';b+='\r\t';b+='\r\t';b+='\r\t';return b+"\r\t"}; -cp.AnswerScore=function(){this.m_correctAnswer=this.m_chosenAnswer=this.m_answerID=""};cp.ChoiceQuestionSpecificScore=function(){this.m_answerOrderArrayAsString=""};cp.ChoiceQuestionSpecificScore.prototype={saveState:function(a){void 0==this.m_answerOrderArrayAsString||""==this.m_answerOrderArrayAsString?a.writeString(""):a.writeString(this.m_answerOrderArrayAsString)},restoreState:function(a){this.m_answerOrderArrayAsString=a.readString()},reset:function(){this.m_answerOrderArrayAsString=""}}; -cp.HotSpotQuestionSpecificScore=function(){this.m_BreakPointWidth=this.m_hotSpotIsCorrect=this.m_hotSpot_ychordsAsString=this.m_hotSpot_xchordsAsString=this.m_hotSpotNamesArrayAsString=""}; -cp.HotSpotQuestionSpecificScore.prototype={saveState:function(a){void 0==this.m_hotSpotNamesArrayAsString||""==this.m_hotSpotNamesArrayAsString?a.writeString("nil"):a.writeString(this.m_hotSpotNamesArrayAsString);void 0==this.m_hotSpot_xchordsAsString||""==this.m_hotSpot_xchordsAsString?a.writeString("nil"):a.writeString(this.m_hotSpot_xchordsAsString);void 0==this.m_hotSpot_ychordsAsString||""==this.m_hotSpot_ychordsAsString?a.writeString("nil"):a.writeString(this.m_hotSpot_ychordsAsString);cp.responsive&& -(void 0==this.m_hotSpotIsCorrect||""==this.m_hotSpotIsCorrect?a.writeString("nil"):a.writeString(this.m_hotSpotIsCorrect),a.writeString(this.m_BreakPointWidth))},restoreState:function(a){this.m_hotSpotNamesArrayAsString=a.readString();"nil"==this.m_hotSpotNamesArrayAsString&&(this.m_hotSpotNamesArrayAsString="");this.m_hotSpot_xchordsAsString=a.readString();"nil"==this.m_hotSpot_xchordsAsString&&(this.m_hotSpot_xchordsAsString="");this.m_hotSpot_ychordsAsString=a.readString();"nil"==this.m_hotSpot_ychordsAsString&& -(this.m_hotSpot_ychordsAsString="");cp.responsive&&(this.m_hotSpotIsCorrect=a.readString(),"nil"==this.m_hotSpotIsCorrect&&(this.m_hotSpotIsCorrect=""),this.m_BreakPointWidth=a.readString())},reset:function(){this.m_answerOrderArrayAsString=""}}; -cp.QuestionScore=function(){this.m_weighting=this.m_interactionID=this.m_objectiveID=this.m_interactionType=this.m_endTime=this.m_startTime=this.m_slideNum=void 0;this.m_negativeWeight=0;this.m_answerScores=[];this.m_numTries=0;this.m_answersIncomplete=!0;this.m_answeredCorrectly=!1;this.m_pausedMsecs=0;this.m_questionNumInQuiz=-1;this.m_wasJudged=void 0;this.m_isKnowledgeCheck=this.m_isPretestQuestion=!1;this.m_escapeAnswers=!0;this.m_questionSpecificScore=void 0;this.m_restoredFromLMS=!1;this.m_scoringType= -this.m_scoredPoints=0;this.m_maxTries=-1;this.m_descriptionTexts=this.m_isCorrectAsString=this.m_correctAnswersAsString=this.m_chosenAnswersAsString="";this.m_latencyAsSeconds=0;this.m_curDateAsString=this.m_latencyAsString="";this.m_curTimeAsSecondsSinceMidnight=0;this.m_partiallyCorrect=this.m_isShuffled=!1}; -cp.QuestionScore.prototype={getdescriptionText:function(){return this.m_descriptionTexts},getrestoredFromLMS:function(){return this.m_restoredFromLMS},setrestoredFromLMS:function(a){this.m_restoredFromLMS=a},getslideNum:function(){return this.m_slideNum},setslideNum:function(a){this.m_slideNum=a},getstartTime:function(){return this.m_startTime},setstartTime:function(a){this.m_startTime=a},getendTime:function(){return this.m_endTime},getQuestionScoringType:function(){return this.m_scoringType},setendTime:function(a){this.m_endTime= -a},getpausedMsecs:function(){return this.m_pausedMsecs},setpausedMsecs:function(a){this.m_pausedMsecs=a},getinteractionType:function(){return this.m_interactionType},setinteractionType:function(a){this.m_interactionType=a;this.createQuestionSpecificScore()},getobjectiveID:function(){return this.m_objectiveID},setobjectiveID:function(a){this.m_objectiveID=a},getquestionNumInQuiz:function(){return this.m_questionNumInQuiz},setquestionNumInQuiz:function(a){this.m_questionNumInQuiz=a},getlatency:function(){return(startTime? -this.m_endTime.getTime()-this.m_startTime.getTime()-this.m_pausedMsecs:0)/1E3},getanswerScores:function(){return this.m_answerScores},setanswerScores:function(a){this.m_answerScores=a},getanswersIncomplete:function(){return this.m_answersIncomplete},setanswersIncomplete:function(a){this.m_answersIncomplete=a},getescapeAnswers:function(){return this.m_escapeAnswers},setescapeAnswers:function(a){this.m_escapeAnswers=a},setquestionSpecificScore:function(a){this.m_questionSpecificScore=a},getquestionSpecificScore:function(){return this.m_questionSpecificScore}, -answersAsString:function(){},getcorrectAnswersAsString:function(){return this.answersAsString("correctAnswer",!1)},getchosenAnswersAsString:function(){return this.answersAsString("chosenAnswer",!1)},getcorrectAnswersForReview:function(){return this.answersAsString("correctAnswer",!0)},getchosenAnswersForReview:function(){return this.answersAsString("chosenAnswer",!0)},getansweredCorrectly:function(){return this.m_answeredCorrectly},setansweredCorrectly:function(a){this.m_answeredCorrectly=a},getisCorrectAsString:function(){return this.m_answeredCorrectly? -"C":"W"},getnumTries:function(){return this.m_numTries},getmaxTries:function(){return this.m_maxTries},setnumTries:function(a){this.m_numTries=a},getweighting:function(){return this.m_weighting},setweighting:function(a){this.m_weighting=a},getnegativeWeight:function(){return this.m_negativeWeight},setnegativeWeight:function(a){this.m_negativeWeight=a},getscoredPoints:function(){return this.m_scoredPoints},setscoredPoints:function(a){this.m_scoredPoints=a},addLeadingZero:function(a){return 10>a?"0"+ -String(a):String(a)},getlatencyAsString:function(){return addLeadingZero(Math.round(latency/3600))+":"+addLeadingZero(Math.round(latency%3600/60))+":"+addLeadingZero(Math.round(latency)%60)},getlatencyAsSeconds:function(){return latency},getcurDateAsString:function(){var a=new Date;return addLeadingZero(a.getMonth()+1)+"/"+addLeadingZero(a.getDate())+"/"+a.getFullYear()},getcurDateAsString2:function(){var a=new Date;return a.getFullYear()+"/"+addLeadingZero(a.getMonth()+1)+"/"+addLeadingZero(a.getDate())}, -getcurTimeAsString:function(){var a=new Date;return addLeadingZero(a.getHours())+":"+addLeadingZero(a.getMinutes())+":"+addLeadingZero(a.getSeconds())},getcurTimeAsSecondsSinceMidnight:function(){return 3600*(void 0).getHours()+60*(void 0).getMinutes()+(void 0).getSeconds()},getscore:function(){return this.m_wasJudged?this.m_scoredPoints:0},getwasJudged:function(){return this.m_wasJudged},setwasJudged:function(a){this.m_wasJudged=a},getisPretestQuestion:function(){return this.m_isPretestQuestion}, -setisPretestQuestion:function(a){this.m_isPretestQuestion=a},getisKnowledgeCheck:function(){return this.m_isKnowledgeCheck},setisKnowledgeCheck:function(a){this.m_isKnowledgeCheck=a},saveState:function(a){a.writeNumber(this.m_slideNum);a.writeNumber(this.m_questionNumInQuiz);void 0!=this.m_startTime&&0!=this.m_startTime?a.writeNumber(this.m_startTime.getTime()):a.writeNumber(0);void 0!=this.m_endTime&&0!=this.m_endTime?a.writeNumber(this.m_endTime.getTime()):a.writeNumber(0);a.writeBoolean(this.m_wasJudged); -a.writeBoolean(this.m_partiallyCorrect);a.writeBoolean(this.m_answeredCorrectly);a.writeBoolean(this.m_answersIncomplete);a.writeNumber(this.m_numTries);a.writeBoolean(this.m_isShuffled);var b=!1,c=this.m_scoredPoints;0>c&&(b=!0,c=-c);a.writeBoolean(b);a.writeNumber(c);a.writeNumber(this.m_answerScores.length);b=0;switch(this.m_interactionType){case "choice":b=0;break;case "true-false":b=1;break;case "fill-in":b=2;break;case "matching":b=4;break;case "sequencing":b=5;break;case "hotspot":b=6;break; -case "likert":b=7;break;case "widget":b=8}a.writeNumber(b);this.m_questionSpecificScore&&this.m_questionSpecificScore.saveState(a);for(b=0;bthis.m_questionNumInQuiz||this.m_questionNumInQuiz>=cp.movie.questionObjs.length)){var a=cp.movie.questionObjs[this.m_questionNumInQuiz];a&&(a.questionNumberInQuiz=this.m_questionNumInQuiz,a.startTime=this.m_startTime,a.endTime=this.m_endTime,a.wasJudged=this.m_wasJudged,a.currentAttempt=this.m_numTries,a.setScore(this.m_scoredPoints),a.m_isShuffled=this.m_isShuffled,a.m_QuestionStatus=this.m_partiallyCorrect?a.QuestionStatusEnum.PARTIAL_CORRECT:this.m_answersIncomplete?a.QuestionStatusEnum.INCOMPLETE: -this.m_answeredCorrectly?a.QuestionStatusEnum.CORRECT:a.QuestionStatusEnum.INCORRECT,a.restoreFromQuestionSpecificScoreProperties(this.m_questionSpecificScore),a.resumeSelectedAnswers(this.m_answerScores.slice(0)),a.m_questionScore=this)}},getinteractionID:function(){return this.m_interactionID},setinteractionID:function(a){this.m_interactionID=a},setQuestionDatafromQuestion:function(a,b,c,d){this.m_objectiveID=a;this.m_interactionID=b;this.m_weighting=c;this.m_negativeWeight=d},createQuestionSpecificScore:function(){this.m_questionSpecificScore|| -(this.m_questionSpecificScore="hotspot"==this.m_interactionType?new cp.HotSpotQuestionSpecificScore:new cp.ChoiceQuestionSpecificScore)},getSlideNum:function(){return this.m_slideNum},setSlideNum:function(a){this.m_slideNum=a},getStartTime:function(){return this.m_startTime},setStartTime:function(a){this.m_startTime=a},getEndTime:function(){return this.m_endTime},setEndTime:function(a){this.m_endTime=a},getInteractionTypeForLMS:function(){var a;switch(this.m_interactionType){case cpInteractionTypeEnum.Choice:case cpInteractionTypeEnum.HotSpot:a= -"choice";break;case cpInteractionTypeEnum.TrueFalse:a="true-false";break;case cpInteractionTypeEnum.FillIn:a="fill-in";break;case cpInteractionTypeEnum.LongFillIn:a="long-fill-in";break;case cpInteractionTypeEnum.Matching:a="matching";break;case cpInteractionTypeEnum.Sequence:a="sequencing";break;case cpInteractionTypeEnum.Likert:a="likert";break;case cpInteractionTypeEnum.Widget:a="widget"}return a},getInteractionType:function(){var a;switch(this.m_interactionType){case cpInteractionTypeEnum.Choice:a= -"choice";break;case cpInteractionTypeEnum.TrueFalse:a="true-false";break;case cpInteractionTypeEnum.FillIn:a="fill-in";break;case cpInteractionTypeEnum.LongFillIn:a="long-fill-in";break;case cpInteractionTypeEnum.Matching:a="matching";break;case cpInteractionTypeEnum.Sequence:a="sequencing";break;case cpInteractionTypeEnum.Likert:a="likert";break;case cpInteractionTypeEnum.HotSpot:a="hotspot";break;case cpInteractionTypeEnum.Widget:a="widget"}return a},setInteractionType:function(a){var b;switch(a){case "choice":b= -cpInteractionTypeEnum.Choice;break;case "true-false":b=cpInteractionTypeEnum.TrueFalse;break;case "fill-in":b=cpInteractionTypeEnum.FillIn;break;case "long-fill-in":b=cpInteractionTypeEnum.LongFillIn;break;case "matching":b=cpInteractionTypeEnum.Matching;break;case "sequencing":b=cpInteractionTypeEnum.Sequence;break;case "hotspot":b=cpInteractionTypeEnum.HotSpot;break;case "likert":b=cpInteractionTypeEnum.Likert;break;case "widget":b=cpInteractionTypeEnum.Widget}this.m_interactionType=b},getObjectiveID:function(){return this.m_objectiveID}, -setObjectiveID:function(a){this.m_objectiveID=a},getInteractionID:function(){return this.m_interactionID},setInteractionID:function(a){this.m_interactionID=a},getWeighting:function(){return this.m_weighting},setWeighting:function(a){this.m_weighting=a},getNegativeWeight:function(){return this.m_negativeWeight},setNegativeWeight:function(a){this.m_negativeWeight=a},getAnswerScores:function(){return this.m_answerScores},setAnswerScores:function(a){this.m_answerScores=a},getNumTries:function(){return this.m_numTries}, -setNumTries:function(a){this.m_numTries=a},getAnswersIncomplete:function(){return this.m_answersIncomplete},setAnswersIncomplete:function(a){this.m_answersIncomplete=a},getAnsweredCorrectly:function(){return this.m_answeredCorrectly},setAnsweredCorrectly:function(a){this.m_answeredCorrectly=a},getPausedMsecs:function(){return this.m_pausedMsecs},setPausedMsecs:function(a){this.m_pausedMsecs=a},getQuestionNumInQuiz:function(){return this.m_questionNumInQuiz},setQuestionNumInQuiz:function(a){this.m_questionNumInQuiz= -a},getWasJudged:function(){return this.m_wasJudged},setIsPretest:function(a){this.m_isPretestQuestion=a},getIsPretest:function(){return this.m_isPretestQuestion},setIsKnowledgeCheck:function(a){this.m_isKnowledgeCheck=a},getIsKnowledgeCheck:function(){return this.m_isKnowledgeCheck},setWasJudged:function(a){this.m_wasJudged=a},resetScore:function(){this.m_answerScores=[];this.m_numTries=0;this.m_endTime=this.m_startTime=void 0;this.m_answeredCorrectly=this.m_answersIncomplete=!1;this.m_pausedMsecs= -0;this.m_wasJudged=!1;this.m_questionSpecificScore&&this.m_questionSpecificScore.reset()}};cp.QuizSlideGraphManager=function(){cp.QuizSlideGraphManager.baseConstructor.call(this);this.m_CompletionBranchMinQuizScore=this.m_CompletionBranchMaxQuizScore=0;this.m_CompletionBranchMinQuizScoreSet=this.m_CompletionBranchMaxQuizScoreSet=!1;this.m_SlideNumToQuestionNumMap={};this.m_progressNumber=0;this.m_startSlideIndex=-1};cp.inherits(cp.QuizSlideGraphManager,cp.SlideGraphManager); -cp.QuizSlideGraphManager.prototype.getPlaybackController=function(){return cp.movie.playbackController};cp.QuizSlideGraphManager.prototype.countQuizSlides=function(a){for(var b={},c=0,d=0;d=b?"NaN":100*a/b}; -cp.QuizSlideGraphManager.prototype.getNextAttemptFirstQuestionSlideIndex=function(){return this.findFirstNonPretestQuestionSlide()};cp.QuizSlideGraphManager.prototype.getReviewFirstQuestionSlideIndex=function(){return this.findFirstNonPretestQuestionSlide()};cp.QuizSlideGraphManager.prototype.getNumQuestions=function(){!this.m_CompletionBranchSet&&!this.m_CompletionBranchMaxQuizScoreSet&&this.findCompletionBranch();return!this.m_CompletionBranchSet&&!this.m_CompletionBranchMaxQuizScoreSet?"NaN":this.countQuizSlides(this.m_CompletionBranch)}; -cp.QuizSlideGraphManager.prototype.getQuestionSlideProgressNumber=function(a){return this.m_SlideNumToQuestionNumMap&&void 0!=this.m_SlideNumToQuestionNumMap[a]?this.m_SlideNumToQuestionNumMap[a]:"NaN"};cp.QuizSlideGraphManager.prototype.setQuestionSlideProgressNumber=function(a){this.m_SlideNumToQuestionNumMap||(this.m_SlideNumToQuestionNumMap={});void 0==this.m_SlideNumToQuestionNumMap[a]&&(this.m_SlideNumToQuestionNumMap[a]=++this.m_progressNumber)}; -cp.QuizSlideGraphManager.prototype.getLastQuestionSlideIndex=function(){if(!this.getPlaybackController())return-1;this.m_CompletionBranchSet||this.findCompletionBranch();if(!this.m_CompletionBranchSet)return-1;for(var a=-1,b=this.m_CompletionBranch.length,c=0;ca&&(a=d)}return a}; -cp.QuizSlideGraphManager.prototype.resetCurrentBranch=function(a){if(!(0>a)){for(var b=-1,c=0;ca)){var b=this.getPlaybackController();if(b&&((b=b.GetQuizController())||!b.GetIsInReviewMode())){for(var c=this.m_CurrentBranch.length,d=-1,e=0;e=e.length)){var e=e.split(","),f=e[a],g=cp.D[f];g.w=b.w;g.oca=b.oca;g.ofa=b.ofa;g.v=b.v;this.updateQuestionData(g.qs,b);var i=g.to-g.from+1;this.m_framesAddedSoFar+=i;var h=-1;0==a?(c=1,d=g.to,h=0):(h=cp.D[e[a-1]],c=h.to+1,d=h.to+i,h=h.to);cp.poolVerbose&& -cp.log("Slide Name : "+f+", from : "+g.from+", pauseAt : "+g.pa+", to : "+g.to);g.from=c;g.pa+=c-1;g.to=d;g.audioName&&(d=cp.D[g.audioName],cp.poolVerbose&&cp.log("Random : "+g.audioName+" : "+d.from+", "+d.to+". Adding : "+(c-1)),d.from+=c-1,d.to+=c-1,cp.poolVerbose&&cp.log("Random : "+g.audioName+" after addition : "+d.from+", "+d.to));cp.poolVerbose&&cp.log("Slide Name : "+f+", from : "+g.from+", pauseAt : "+g.pa+", to : "+g.to);this.updateStartEndFramesForSlideItems(h,f,g.to);cp.poolVerbose&& -cp.log("Adding : "+i);c=void 0;for(f=a+1;f=e.length)){for(var f in e){var g=cp.D[e[f].n];if(void 0!=g&&(!0==g.immo?g.to=c:1!=g.rp&&1!=g.rpa||g.apsn== -b?(g.from+=a,g.pa&&(g.pa+=a),g.to+=a):g.to=c,void 0!=g.ia)){var i=cp.D[g.ia];i&&(1!=g.rp&&1!=g.rpa&&g.apsn==b)&&(i.from+=a-1,i.to+=a)}}if((b=d.iph)&&0=a.length))for(var b=0;b=c.length||(c=c.split(","),b>c.length-1||(c[b]=a,cp.D.project_main.slides=c.toString()))},updateQuestionNameAtIndex:function(a,b){var c=cp.D.project_main.questions;0>=c.length||(c=c.split(","),b>c.length-1||(c[b]=a,cp.movie&&(cp.movie.questions=c),cp.D.project_main.questions=c.toString()))},removeAllReferences:function(a){var b=cp.D.project_main.questions;if(0=a.length))if(a=cp.D.project_main.slides,!(void 0==a||0>=a.length)){for(var a=a.split(","),b=0,c=0;c=g.length){this.removeAllReferences(d); -b++;continue}void 0==f.sindex?f.sindex=0:f.sindex++;i=Number(g[f.sindex])}else{g=g.rgqs;if(0>=g.length){this.removeAllReferences(d);b++;continue}void 0==f.gindex?f.gindex=0:f.gindex++;i=Number(g[f.gindex])}f=f[i];this.updateSlideNameAtIndex(f,c-b);e.qnq-=b;this.updateSlideDataFromRandomSlideData(f,e);this.updateModelDataForSlides(c-b,e);-1!=d.indexOf("rq")&&(d=d.split("rq")[1],""!=d&&(cp.D[d]=cp.D[f]))}}this.updateMainMovieData()}},updateMainMovieData:function(){var a=cp.D.project_main.slides;0>= -a.length||(a=a.split(","),cp.D.project_main.to=cp.D[a[a.length-1]].to)},updateSlideData:function(a,b,c){this.updateSlideNameAtIndex(a,b);this.updateSlideDataFromRandomSlideData(a,c);this.updateModelDataForSlides(b,c)},randomizePools:function(){if(!(""!=cp.resumeDataChunk&&void 0!=cp.resumeDataChunk&&"0"!=cp.resumeDataChunk)){var a=cp.D.project_main.pools;if(a){var b=a.length;if(!(0>=b)){cp.poolVerbose&&cp.log("Randomizing");for(var c=0;c=d)return 0;this.currDiv.ontouchstart=this.onMouseOver;cp.clearStaticGestureCache(this.currDiv);cp.registerGestureEvent(this.currDiv,cp.GESTURE_EVENT_TYPES.TAP,this.onClick,!0,!0);this.currDiv.ontouchend=this.onMouseOut;this.currDiv.onkeydown=this.onKeyDown;d=a?0:parseFloat(window.getComputedStyle(this.currDiv).marginLeft.replace("px",""));this.currDiv.style.marginLeft=d+b+"px";b=parseFloat(window.getComputedStyle(this.currDiv).marginTop.replace("px", -""));this.currDiv.style.marginTop=b+(a?0:c)+"px";this.refresh();return cp.PB.kBtnMargin},setIcon:function(a){var b=cp.PB.loadedAssetArr[a];b.parentElem=this.currDiv;b.isGlow=!1;b.imageName=a;cp.PB.isVertical&&cp.applyTransform(b,"matrix(0,1,-1,0,0,0)");this.currDiv.toggleimgElemArray[this.currDiv.toggleimgElemArray.length]=b;this.currDiv.currImageName=a;this.currDiv.title=cp.PB.MP.PBP.noToolTips?"":cp.localizeToolTips(this.currDiv.toggleimgElemArray[this.currDiv.curIcon].imageName)},onClick:function(a){cp.isCurrentSlideThreeDSlide()? -a&&a.currentTarget&&("Backward"==a.currentTarget.id||"Play"==a.currentTarget.id||"Forward"==a.currentTarget.id||"FastForward"==a.currentTarget.id)?cp.ThreeDSlide.m_threeDMain.m_hotspotManager.shouldAllowToPerformNavigationAction()&&(this.parentObj.toggleImage(a),void 0!=this.parentObj.clickHandler&&this.parentObj.clickHandler()):(this.parentObj.toggleImage(a),void 0!=this.parentObj.clickHandler&&this.parentObj.clickHandler()):(this.parentObj.toggleImage(a),void 0!=this.parentObj.clickHandler&&this.parentObj.clickHandler())}, -onKeyDown:function(a){var b;a.keyCode?b=a.keyCode:a.which&&(b=a.which);32==b&&(this.parentObj.toggleImage(a),void 0!=this.parentObj.clickHandler&&this.parentObj.clickHandler())},toggleImage:function(a){var b=this.currDiv;null==b&&(b=this);b.curIcon=(b.curIcon+1)%b.toggleimgElemArray.length;var c=cp.localizeToolTips(b.toggleimgElemArray[b.curIcon].imageName);b.title=cp.PB.MP.PBP.noToolTips?"":c;cp.modifyAlternativeAccessibleText(b,c);if("tap"==a.type)b.parentObj.onMouseOut(a);else b.parentObj.onMouseOver(a)}, -changeImage:function(a){var b=this.currDiv;null==b&&(b=this);this.currDiv.currImageName=a;for(var c=0;c=d)return 0;this.currDiv.width=d;this.currDiv.style.width=d+"px";d=a?0:parseFloat(window.getComputedStyle(this.currDiv).marginLeft.replace("px",""));this.currDiv.style.marginLeft=d+b+2*cp.PB.kBtnMargin+"px";b=a?0:parseFloat(window.getComputedStyle(this.currDiv).marginTop.replace("px",""));a||(this.currDiv.style.marginTop=b+c+"px");this.init(a); -this.refresh(a);this.currDiv.style.display="inline";return 2*cp.PB.kBtnMargin},getWidth:function(){void 0==this.actualClientWidth&&(this.actualClientWidth=this.currDiv.clientWidth+this.progressDiv.thumbDiv.clientWidth);return this.actualClientWidth},destroy:function(){this.currDiv&&(this.currDiv.style.display="none",this.currDiv.parentElement&&this.currDiv.parentElement.removeChild(this.currDiv))},init:function(){this.thumbDiv.width=this.thumbDiv.clientWidth;this.thumbDiv.height=this.thumbDiv.clientHeight; -var a=cp.PB.loadedAssetArr[this.thumbBase];this.progressDiv.parentObj=this;cp.clearStaticGestureCache(this.progressDiv);cp.registerGestureEvent(this.progressDiv,cp.GESTURE_EVENT_TYPES.TAP,this.moveSlider,!0,!0);this.progressDiv.updateSlider=this.updateSlider;this.progressDiv.thumbBasePattern=this.progressDiv.getContext("2d").createPattern(a,"repeat");a=cp.PB.loadedAssetArr[this.progress];this.progressDiv.progressPattern=this.progressDiv.getContext("2d").createPattern(a,"repeat");this.progressDiv.width= -this.currDiv.width;this.progressDiv.height=a.height;this.progressDiv.style.marginTop="0px";this.progressDiv.style.marginLeft=this.thumbDiv.width/2+"px";this.progressDiv.maxFrameWidth=this.progressDiv.width;this.progressDiv.maxFrameHeight=this.progressDiv.height;this.progressDiv.style.marginTop=0==cp.PB.MP.PBP.tworow?(this.playBarDiv.height-this.progressDiv.height)/2+"px":(this.playBarDiv.height/2-this.progressDiv.height)/2+"px";this.currDiv.width+=this.thumbDiv.width;this.currDiv.style.width=this.currDiv.width+ -"px";this.currDiv.height=this.playBarDiv.height;cp.device==cp.IDEVICE?this.thumbDiv.ontouchstart=this.onMouseDown:this.thumbDiv.onmousedown=this.onMouseDown;a=parseFloat(window.getComputedStyle(this.thumbDiv).top.replace("px",""));if(1==cp.PB.MP.PBP.tworow){var b=0;cp.responsive&&(b=-this.thumbDiv.clientHeight/2);this.thumbDiv.style.top=a+b+this.playBarDiv.height/2+(this.playBarDiv.height/2-this.progressDiv.height)/2+"px"}else this.thumbDiv.style.top=a+(this.playBarDiv.height-this.progressDiv.height)/ -2+"px";cp.pg||cp.createAlternativeAccessibleText(this.thumbDiv,"Progress, Slide "+(cpInfoCurrentSlideIndex+1)+" of "+cp.movie.stage.slides.length,"slider")},refresh:function(){cp.responsive?this.updateSlider(cpInfoCurrentFrameAtLayerZero):this.updateSlider(1)},onMouseDown:function(a){this.underDrag=!0;cp.em&&cp.em.fireEvent("CPStartPlaybarScrubbing");this.style.position="absolute";var b=document.getElementById("playbarSliderThumb").progressDiv,c=b.progLen,d=document.onmousemove,f=document.onmouseup; -cp.device==cp.IDEVICE&&(d=document.ontouchmove,f=document.ontouchend);var g=a;cp.device==cp.IDEVICE&&(g=a.touches[0]);a=function(a){cp.playbarMoved();a.stopPropagation();var d=a;if(cp.device==cp.IDEVICE){d=a.touches[0];a.preventDefault()}a=0;a=cp.PB.isVertical?d.clientY-g.clientY:d.clientX-g.clientX;if(a!=0){d=Math.round((c+a)*cp.PB.MP.project_main.to/b.width);if(d<1)d=1;else if(cp.frame>cp.PB.MP.project_main.to)d=cp.PB.MP.project_main.to;if(cp.PB.mainMovie&&!cp.PB.mainMovie.virgin){cp.PB.mainMovie.pause(cp.ReasonForPause.PLAYBAR_ACTION); -cp.PB.mainMovie.jumpToFrame(d)}}};cp.device==cp.IDEVICE?document.ontouchmove=a:document.onmousemove=a;a=function(){if(cp.device==cp.IDEVICE){document.ontouchmove=d;document.ontouchend=f}else{document.onmousemove=d;document.onmouseup=f}cp.em&&cp.em.fireEvent("CPEndPlaybarScrubbing")};cp.device==cp.IDEVICE?document.ontouchend=a:document.onmouseup=a;return!1},moveSlider:function(a){if(!cp.movie.stage.hasOverlaySlide()){cp.playbarMoved();var b=void 0==a.offsetX?a.layerX-a.currentTarget.offsetLeft:a.offsetX; -isNaN(b)&&("tap"===a.type&&a.gesture&&a.gesture.center)&&(b=a.gesture.center.pageX-a.currentTarget.offsetLeft);a=Math.round(b*cp.PB.MP.project_main.to/this.width);1>a?a=1:a>cp.PB.MP.project_main.to&&(a=cp.PB.MP.project_main.to);cp.PB.mainMovie&&!cp.PB.mainMovie.virgin&&(cp.PB.mainMovie.pause(cp.ReasonForPause.PLAYBAR_ACTION),cp.PB.mainMovie.jumpToFrame(a))}},updateSlider:function(a){a>cp.PB.MP.project_main.to&&(a=cp.PB.MP.project_main.to);var b=this.progressDiv;null==b&&(b=this);var c=b.getContext("2d"); -c.clearRect(0,0,b.width,b.height);c.fillStyle=b.thumbBasePattern;c.fillRect(0,0,b.width,b.height);c.fillStyle=b.progressPattern;c.fillRect(0,0,b.width*a/cp.PB.MP.project_main.to,b.height);b.progLen=b.width*a/cp.PB.MP.project_main.to;b.thumbDiv.style.marginLeft=b.progLen+"px";b.thumbDiv.title=cpInfoCurrentSlideIndex+1+"/"+cp.movie.stage.slides.length;cp.modifyAlternativeAccessibleText(this.thumbDiv,"Progress, Slide "+(cpInfoCurrentSlideIndex+1)+" of "+cp.movie.stage.slides.length)}}; -cp.PB.playBarConstruct=function(a){this.playBarDiv=a;this.slider=this.bkGrndDiv=null;this.firstRowArray=[];this.secondRowArray=[];this.btnMap={};this.secondRowMinWidth=this.firstRowMinWidth=this.minWidth=0;this.logo=null}; -cp.PB.playBarConstruct.prototype={createSlider:function(a,b,c){this.slider&&cp.responsive&&this.slider.destroy();if(void 0==cp.PB.MP.playBarProperties.hasSlider||0==cp.PB.MP.playBarProperties.hasSlider)return 0;this.slider=new cp.PB.PlayBarSlider(this.bkGrndDiv);if(this.slider.getWidth()+4*cp.PB.kBtnMargin+c+2*cp.PB.kIndentMargin>cp.PB.playBarDim)return this.slider.destroy(),0;b[b.length]=this.slider;this.slider.expectedWidth=this.slider.getWidth();return this.slider.expectedWidth+4*cp.PB.kBtnMargin}, -createBackground:function(){var a=document.getElementById("playbarBkGrnd");a.height=a.clientHeight;this.bkGrndDiv=a},setBackGroundWidth:function(a){this.bkGrndDiv.width=a;this.bkGrndDiv.style.width=a+"px";a=cp.PB.loadedAssetArr.BackGround.src;if(cp.PB.MP.PBP.applyColors){var b=document.createElement("canvas");b.width=this.bkGrndDiv.width;b.height=this.bkGrndDiv.height;a=b.getContext("2d");a.clearRect(0,0,this.bkGrndDiv.width,this.bkGrndDiv.height);a.globalAlpha=cp.PB.MP.PBP.alpha/100;cp.setFillStrokeStyle(cp.PB.MP.PBP.BkColor, -b);a.fillRect(0,0,this.bkGrndDiv.width,this.bkGrndDiv.height);""==this.bkGrndDiv.style.backgroundImage&&(a=b.toDataURL("image/png"),this.bkGrndDiv.style.backgroundImage='url("'+a+'")');this.bkGrndDiv.style.backgroundSize="100% 100%"}else b=document.createElement("canvas"),this.bkGrndDiv.insertBefore(b,this.bkGrndDiv.firstChild),b.width=this.bkGrndDiv.width,b.height=this.bkGrndDiv.height,b.style.position="absolute",b.style.display="block",a=b.getContext("2d"),a.clearRect(0,0,this.bkGrndDiv.width,this.bkGrndDiv.height), -a.globalAlpha=cp.PB.MP.PBP.alpha/100,a.drawImage(cp.PB.loadedAssetArr.BackGround,0,0,this.bkGrndDiv.width,this.bkGrndDiv.height),b.style.zIndex=-10},createButton:function(a,b,c,d,f,g){var e,h;if(cp.responsive&&(e=this.btnMap[b[0]]))e.currDiv&&(h=e.currDiv.currImageName),e.destroy();if(b[0]!=cp.PB.Btns.kBtnInfo&&b[0]!=cp.PB.Btns.kBtnPrint){if(void 0==cp.PB.MP.playBarProperties["has"+b[0]]||0==cp.PB.MP.playBarProperties["has"+b[0]])return 0}else if(b[0]==cp.PB.Btns.kBtnInfo&&!1==cp.PB.playbarHasInfo|| -b[0]==cp.PB.Btns.kBtnPrint&&!1==cp.PB.playbarHasPrint)return 0;if(void 0==cp.PB.loadedAssetArr[b[0]])return 0;e=new cp.PB.PlayBarButton(b[0],this.bkGrndDiv,d);if(e.getWidth()+cp.PB.kBtnMargin+f+2*cp.PB.kIndentMargin>cp.PB.playBarDim)return e.destroy(),0;e.setImage("Shadow");e.setImage("Stroke");e.setImage("Color");e.setImage("Shade");e.setImage("InnerStroke");e.setImage("Glow");e.setImage("InnerShade");a&&(e.currDiv.style.display="block");for(d=0;dcp.PB.playBarDim)return this.bkGrndDiv.removeChild(c),0;this.logo=c;return c.clientWidth+cp.PB.kBtnMargin},initComponents:function(a){var b=cp.D.quizzingData.quizBranchAware;if(0==cp.PB.MP.PBP.tworow){for(var c=cp.PB.kIndentMargin,d=0,d=void 0==this.slider&&!b?1=this.firstRowArray[b].expectedWidth||(c=this.firstRowArray[b].setPosNWidth(a,c,0,this.firstRowArray[b].expectedWidth),c+=d);null!=this.logo&&(this.logo.style.marginLeft=c+"px")}else{for(var c=cp.PB.kIndentMargin,d=1a||a>=cp.responsiveAllBPWidths.length)){var a=cp.responsiveAllBPWidths.length-1-a,b;for(b in cp.responsiveButtons){if(void 0===cp.PB.MP.PBPO["has"+b]||"undefined"===cp.PB.MP.PBPO["has"+b])cp.PB.MP.PBPO["has"+b]=cp.PB.MP.PBP["has"+b];cp.PB.MP.PBPO["has"+b]&&(cp.PB.MP.PBP["has"+b]=cp.responsiveButtons[b][a])}}}}, -refreshPlaybarButtons:function(){if(0==cp.PB.MP.PBP.tworow)for(var a=0;a -window.innerWidth?cp.PB.playBarDim=window.innerWidth:cp.PB.MP.PBP.showOnHover?(b=document.body.style.overflow,document.body.style.overflow="hidden",cp.PB.playBarDim=cp("project").clientWidth,document.body.style.overflow=b):cp.PB.playBarDim=cp("project").clientWidth):cp.PB.playBarDim=cp.PB.isVertical?cp.PB.MP.project.h:cp.PB.MP.project.w;cp.PB.playBarOtherDim=!1==cp.PB.isVertical?cp.PB.MP.project.h:cp.PB.MP.project.w;this.createBackground(cp.PB.playBarDim);cp.IDEVICE!==cp.device&&cp.device!==cp.ANDROID&& -cp.PB.MP.playBarProperties&&(cp.PB.MP.playBarProperties.hasEnterVR=!1);if(cp.PB.MP.PBP.tworow)c+=this.createButton(a,[cp.PB.Btns.kBtnRewind],this.firstRowArray,this.rewindHandler,c),c+=this.createButton(a,[cp.PB.Btns.kBtnBackward],this.firstRowArray,this.backwardHandler,c),c+=this.createButton(a,[cp.PB.Btns.kBtnPlay,cp.PB.Btns.kBtnPause],this.firstRowArray,this.playPauseHandler,c),c+=this.createButton(a,[cp.PB.Btns.kBtnVR],this.firstRowArray,this.enterVRHandler,c),c+=this.createButton(a,[cp.PB.Btns.kBtnForward], -this.firstRowArray,this.forwardHandler,c),c+=this.createButton(a,[cp.PB.Btns.kBtnFastForward,cp.PB.Btns.kBtnFastForward1,cp.PB.Btns.kBtnFastForward2],this.firstRowArray,this.fastForwardHandler,c),this.firstRowMinWidth=c+=2*cp.PB.kIndentMargin,c=-cp.PB.kBtnMargin,c+=this.createButton(a,[cp.PB.Btns.kBtnTOC],this.secondRowArray,this.tocHandler,c),c+=this.createButton(a,[cp.PB.Btns.kBtnPrint],this.secondRowArray,this.printHandler,c),c+=this.createButton(a,[cp.PB.Btns.kBtnExit],this.secondRowArray,this.exitHandler, -c),d=this.createSlider(a,this.secondRowArray,c),cp.device!=cp.IDEVICE&&(c+=this.createButton(a,[cp.PB.Btns.kBtnAudioOn,cp.PB.Btns.kBtnAudioOff],this.secondRowArray,this.audioOnOffHandler,c)),c+=this.createButton(a,[cp.PB.Btns.kBtnCC],this.secondRowArray,this.ccHandler,c),c+=this.createButton(a,[cp.PB.Btns.kBtnInfo],this.secondRowArray,this.showInfoHandler,c),c+=this.createLogo(a,c),c+=2*cp.PB.kIndentMargin,this.secondRowMinWidth=c+d,this.minWidth=this.firstRowMinWidth>this.secondRowMinWidth?this.firstRowMinWidth: -this.secondRowMinWidth,3==cp.PB.MP.PBP.layout?(b=cp.PB.playBarDim,void 0!=this.slider&&(d=b-c-4*cp.PB.kBtnMargin,this.slider.expectedWidth=d,cp.responsive&&58>=this.slider.expectedWidth&&(this.slider.destroy(),this.slider=void 0))):b=this.minWidth;else{if(0===cp.D.pref.rkt){var c=c+this.createButton(a,[cp.PB.Btns.kBtnRewind],this.firstRowArray,this.rewindHandler,c,10001),c=c+this.createButton(a,[cp.PB.Btns.kBtnPlay,cp.PB.Btns.kBtnPause],this.firstRowArray,this.playPauseHandler,c,10002),c=c+this.createButton(a, -[cp.PB.Btns.kBtnVR],this.firstRowArray,this.enterVRHandler,c,10003),c=c+this.createButton(a,[cp.PB.Btns.kBtnBackward],this.firstRowArray,this.backwardHandler,c,10004),c=c+this.createButton(a,[cp.PB.Btns.kBtnForward],this.firstRowArray,this.forwardHandler,c,10005),c=c+this.createButton(a,[cp.PB.Btns.kBtnFastForward,cp.PB.Btns.kBtnFastForward1,cp.PB.Btns.kBtnFastForward2],this.firstRowArray,this.fastForwardHandler,c,10006),d=this.createSlider(a,this.firstRowArray,c);cp.device!=cp.IDEVICE&&(c+=this.createButton(a, -[cp.PB.Btns.kBtnAudioOn,cp.PB.Btns.kBtnAudioOff],this.firstRowArray,this.audioOnOffHandler,c,10008));c+=this.createButton(a,[cp.PB.Btns.kBtnCC],this.firstRowArray,this.ccHandler,c,10009);c+=this.createButton(a,[cp.PB.Btns.kBtnTOC],this.firstRowArray,this.tocHandler,c,10010);c+=this.createButton(a,[cp.PB.Btns.kBtnPrint],this.firstRowArray,this.printHandler,c,10011);c+=this.createButton(a,[cp.PB.Btns.kBtnExit],this.firstRowArray,this.exitHandler,c,10012);c+=this.createButton(a,[cp.PB.Btns.kBtnInfo], -this.firstRowArray,this.showInfoHandler,c,10013)}else c+=this.createButton(a,[cp.PB.Btns.kBtnRewind],this.firstRowArray,this.rewindHandler,c,-1),c+=this.createButton(a,[cp.PB.Btns.kBtnPlay,cp.PB.Btns.kBtnPause],this.firstRowArray,this.playPauseHandler,c,-1),c+=this.createButton(a,[cp.PB.Btns.kBtnVR],this.firstRowArray,this.enterVRHandler,c,-1),c+=this.createButton(a,[cp.PB.Btns.kBtnBackward],this.firstRowArray,this.backwardHandler,c,-1),c+=this.createButton(a,[cp.PB.Btns.kBtnForward],this.firstRowArray, -this.forwardHandler,c,-1),c+=this.createButton(a,[cp.PB.Btns.kBtnFastForward,cp.PB.Btns.kBtnFastForward1,cp.PB.Btns.kBtnFastForward2],this.firstRowArray,this.fastForwardHandler,c,-1),d=this.createSlider(a,this.firstRowArray,c),cp.device!=cp.IDEVICE&&(c+=this.createButton(a,[cp.PB.Btns.kBtnAudioOn,cp.PB.Btns.kBtnAudioOff],this.firstRowArray,this.audioOnOffHandler,c,-1)),c+=this.createButton(a,[cp.PB.Btns.kBtnCC],this.firstRowArray,this.ccHandler,c,-1),c+=this.createButton(a,[cp.PB.Btns.kBtnTOC],this.firstRowArray, -this.tocHandler,c,-1),c+=this.createButton(a,[cp.PB.Btns.kBtnPrint],this.firstRowArray,this.printHandler,c,-1),c+=this.createButton(a,[cp.PB.Btns.kBtnExit],this.firstRowArray,this.exitHandler,c,-1),c+=this.createButton(a,[cp.PB.Btns.kBtnInfo],this.firstRowArray,this.showInfoHandler,c,-1);c+=this.createLogo(a,c);this.minWidth=this.firstRowMinWidth=c+=2*cp.PB.kIndentMargin;3==cp.PB.MP.PBP.layout?(b=cp.PB.playBarDim,void 0!=this.slider&&(d=b-c-4*cp.PB.kBtnMargin,this.slider.expectedWidth=d,cp.responsive&& -58>=this.slider.expectedWidth&&(this.slider.destroy(),this.slider=void 0))):b=c+d}this.setBackGroundWidth(b);this.initComponents(a);cp.responsive||this.transformPlaybar();this.playBarDiv.constrObj=this;this.playBarDiv.play=this.onMovieResume;this.playBarDiv.pause=this.onMoviePaused;this.playBarDiv.mute=this.onAudioOff;this.playBarDiv.unmute=this.onAudioOn;cp.handleSpecialForPlaybar(this);cp.PB.MP.PBP.showOnHover&&!cp("playbar").animator&&(a=new cp.PB.playbarAnimator(this.playBarDiv),a.init(cp.PB.playBarHeight), -this.playBarDiv.animator=a)},morphImages:function(){for(var a=0;a=b.totalSteps?(clearInterval(b.intervalId),b.currStep=0,b.isAnimating=!1,a.style[b.param]=b.endVal+"px"):a.style[b.param]=b.easeOut(b.startVal,b.endVal)+"px"):(b.currStep++,b.currStep>=b.totalSteps?(clearInterval(b.intervalId),b.currStep=0,b.isAnimating=!1,a.style[b.param]=b.startVal+"px"):a.style[b.param]=b.easeOut(b.endVal,b.startVal)+"px")}}, -hidePlaybar:function(){var a=document.getElementById("playbar");a&&(clearTimeout(a.animator.timeoutId),a.animator.direction=1,a.animator.isAnimating=!0,clearInterval(a.animator.intervalId),a.animator.playbarHidden=!0,a.animator.intervalId=setInterval(a.animator.beginAnim,20))},showPlaybar:function(a){var b=document.getElementById("playbar");if(b&&(clearTimeout(b.animator.timeoutId),a||(b.animator.timeoutId=setTimeout(b.animator.hidePlaybar,2E3)),!(b.animator.isAnimating&&0==b.animator.direction)&& -parseFloat(window.getComputedStyle(b)[b.animator.param].replace("px",""))!=this.startVal))b.animator.direction=0,b.animator.isAnimating=!0,clearInterval(b.animator.intervalId),b.animator.playbarHidden=!1,b.animator.intervalId=setInterval(b.animator.beginAnim,20)}}; -cp.playBarInit=function(a,b){if(!cp.PB.playbarCreated){cp.PB.movieProperties=a;cp.PB.MP=cp.PB.movieProperties;cp.PB.MP.PBP=cp.PB.MP.playBarProperties;cp.PB.MP.PBP.locale&&(cp.PB.toolTipLocaleIndex=cp.PB.MP.PBP.locale);var c=document.getElementById("playbar");cp.PB.MP.PBP.hasPlayBar||(c.style.display="none",cp.setMovieLeftTopRightBottom(0,0,0,0));cp.PB.rootObj=new cp.PB.playBarConstruct(c);for(var d=0;d",f="Adobe Captivate",e="OK";if(cp&&cp.model&&cp.model.data){var g=cp.model.data.rtDialog;g&&(a=g.rtUnsupportedBowser,-1!=a.indexOf("@FFVERSION")&&(a=a.replace("@FFVERSION",cp.FF_MIN_SUPPORTED_VERSION)),f=g.rtWarningTitle,e=g.rtokb)}RuntimeBrowserDetect.init(a,f,e)}cp.initiated=!1;var a=cp.model.uidToDataMap={},f=cp.model.data,d;for(d in f)e=f[d],e.hasOwnProperty("uid")&&(a[e.uid]=e);cp.LMSTypes={};cp.LMSTypes.NONE=0;cp.LMSTypes.SCORM2004=1;cp.LMSTypes.SCORM12=2;cp.LMSTypes.Authorware= -3;cp.LMSTypes.AICC=4;cp.LMSTypes.QuestionMark=5;cp.LMSTypes.Email=6;cp.LMSTypes.Breeze=7;cp.LMSTypes.Acrobat=8;cp.LMSTypes.InternalServer=9;cp.LMSTypes.TinCan=10;cp.PIBy180=Math.PI/180;var c=cp.ContinueCPInit;d=function(){jQuery(window).on("unload",function(){cp.UnloadActivties()})};cp.currentWindow=window;cp.parentWindow=window.parent;cp.topWindow=window.top;cp.setAllowForceQuitContainer=!0;try{cp.parentWindow.document&&cp.verbose&&console.log("tring to access document of parent window")}catch(h){cp.parentWindow= -cp.currentWindow}try{cp.topWindow.document&&cp.verbose&&console.log("tring to access document of top window")}catch(i){cp.topWindow=cp.currentWindow;try{for(;cp.topWindow.parent.document;)cp.topWindow=cp.topWindow.parent}catch(j){}}cp.IsRunningInACAP=1==cp.getParameterByName("capi_player");cp.IsRunningInALEC=1==cp.getParameterByName("CPinsideAlec");cp.IsRunningInRoboHelp="true"==cp.getParameterByName("CPinsideRH");cp.ACAPVideoStreamingURLMap={};cp.ACAPStreamingURLsLoaded=!1;cp.currentWindow.cpAPIInterface= -cp.IsRunningInACAP?new cp.ACAPInterfaceClass:cp.IsRunningInConnect()?new cp.ConnectInterfaceClass:new cp.CPAPIInterfaceClass;cp.currentWindow.cpAPIEventEmitter=cp.currentWindow.cpAPIInterface.getEventEmitter();if(cp.IsRunningInACAP)cp.fireModuleReadyEvent(cp.parentWindow),a={Name:"CPGetEvent"},a.cpName=a.Name,a.Data={},a.Data.ask="VideoManifest",a.Data.callback=cp.handleACAPStreamingURLs,a.cpData=a.Data,cp.currentWindow.cpAPIEventEmitter.trigger(a),a={Name:"CPGetEvent"},a.cpName=a.Name,a.Data={}, -a.Data.ask="resumeData",a.Data.callback=cp.handleACAPResumeData,a.cpData=a.Data,cp.currentWindow.cpAPIEventEmitter.trigger(a),a={Name:"CPGetEvent"},a.cpName=a.Name,a.Data={},a.Data.ask="capiVariable",a.Data.askData="capiStudentName",a.Data.callback=cp.updateStudentNameVariableFromACAP,a.cpData=a.Data,cp.currentWindow.cpAPIEventEmitter.trigger(a),d();else{if(!cp.IsRunningInACAP&&cp.D&&cp.D.quizReportingData)switch(a=cp.D.quizReportingData.lmsType,cp.LMSDriverHolder=void 0,a){case cp.LMSTypes.SCORM2004:case cp.LMSTypes.SCORM12:cp.LMSDriverHolder= -window;c=cp.LoadActivities;d();break;case cp.LMSTypes.TinCan:a=cp.D.project_main.useResponsive;cp.LMSDriverHolder=cp.m_isLMSPreview&&a?window.parent.parent:cp.m_isLMSPreview?window.parent:window;c=cp.LoadActivities;d();cp.D.quizReportingData.lmsType=cp.LMSTypes.SCORM2004;break;case cp.LMSTypes.AICC:a=cp.D.project_main.useResponsive;cp.LMSDriverHolder=cp.m_isLMSPreview&&a?window.parent.parent:window.parent;cp.LMSDriverHolder.blockedForLMS||(cp.LMSDriverHolder.blockedForLMS=!0,cp("blockUserInteraction").style.display= -"block",cp("blockUserInteraction").style.width="100%",cp("blockUserInteraction").style.height="100%");c=cp.LMSDriverHolder.HTMLContentLoadedCallback;d();break;default:cp.LMSDriverHolder=void 0}c=cp.IsRunningInConnect()?cp.LoadActivities:c;c||(c=cp.ContinueCPInit,cp.NotRunningInLMS=!0);cp.pg&&window.device&&"iOS"===window.device.platform&&StatusBar&&StatusBar.overlaysWebView(!1);cp.pg&&window.device&&"Android"===window.device.platform?cp.Phonegap.loadResources(b):b()}}; -cp.ContinueCPInit=function(){cp.CPPreInit();cp.QuizLibraryInit();cp.CPPostInit();"undefined"!=typeof CPAutomator&&CPAutomator.init();document.getElementById("playImage").focus();cp.initiated=!0;cp.complete()}; -window.DoCPExit=function(){try{cp.em.fireEvent("CPMovieExit");if(cp.IsRunningInACAP||cp.IsRunningInALEC||cp.m_isLMSPreview){cp.currentWindow.open("goodbye.html","_self");return}if(cp.IsRunningInRoboHelp){var b=cp.currentWindow.open("","_self");b.close();return}cp.currentWindow!=cp.parentWindow&&cp.parentWindow&&cp.parentWindow.hasOwnProperty("DoCPExit")?cp.setAllowForceQuitContainer?cp.parentWindow.DoCPExit():cp.currentWindow.close():cp.IsRunningInConnect()?cp.setAllowForceQuitContainer?cp.parentWindow.close(): -cp.currentWindow.close():cp.topWindow==self?(b=window.open("","_self"),b.close()):cp.setAllowForceQuitContainer?(b=cp.topWindow.open("","_self"),b.top.close()):(b=window.open("","_self"),b.close())}catch(a){}cp.pg&&navigator&&navigator.app&&"function"===typeof navigator.app.exitApp&&navigator.app.exitApp();cp.win8&&(window&&window.parent)&&window.parent.postMessage({name:"WIN8APPCLOSE",data:{}},"*");cp.currentWindow.open("goodbye.html","_self")}; -cp.Automate=function(){"undefined"!=typeof CPAutomator&&CPAutomator.CPRunSuite.model.workflow&&setTimeout(function(){CPAutomator.Replay.init()},1E4)}; -(function(k){function h(j){if(e[j])return e[j].exports;var f=e[j]={i:j,l:!1,exports:{}};k[j].call(f.exports,f,f.exports,h);f.l=!0;return f.exports}var e={};h.m=k;h.c=e;h.d=function(e,f,l){h.o(e,f)||Object.defineProperty(e,f,{configurable:!1,enumerable:!0,get:l})};h.n=function(e){var f=e&&e.__esModule?function(){return e["default"]}:function(){return e};h.d(f,"a",f);return f};h.o=function(e,f){return Object.prototype.hasOwnProperty.call(e,f)};h.p="";return h(h.s=3)})([function(k,h,e){var j,f;!(j=[e, -h],f=function(e,d){var a=d.Direction||(d.Direction={});a[a.COLUMN=0]="COLUMN";a[a.COLUMN_REVERSE=1]="COLUMN_REVERSE";a[a.ROW=2]="ROW";a[a.ROW_REVERSE=3]="ROW_REVERSE";a=d.AlignItems||(d.AlignItems={});a[a.START=0]="START";a[a.CENTER=1]="CENTER";a[a.END=2]="END";a[a.SPACE_BETWEEN=3]="SPACE_BETWEEN";a[a.SPACE_AROUND=4]="SPACE_AROUND";a[a.STRETCH=5]="STRETCH";a=d.SelfAlign||(d.SelfAlign={});a[a.AUTO=0]="AUTO";a[a.START=1]="START";a[a.END=2]="END";a[a.CENTER=3]="CENTER";a[a.STRETCH=4]="STRETCH";a=d.ChildAlign|| -(d.ChildAlign={});a[a.AUTO=0]="AUTO";a[a.START=1]="START";a[a.END=2]="END";a[a.CENTER=3]="CENTER";a[a.STRETCH=4]="STRETCH";a=d.CSSPosition||(d.CSSPosition={});a[a.POSITION_RELATIVE=0]="POSITION_RELATIVE";a[a.POSITION_ABSOLUTE=1]="POSITION_ABSOLUTE";a=d.Wrap||(d.Wrap={});a[a.WRAP=0]="WRAP";a[a.ALL_OR_ONE=1]="ALL_OR_ONE";a[a.SYMMETRY=2]="SYMMETRY";a[a.NO_WRAP=3]="NO_WRAP";a=d.LayoutMode||(d.LayoutMode={});a[a.FIXED_HEIGHT=0]="FIXED_HEIGHT";a[a.DYNAMIC_HEIGHT=1]="DYNAMIC_HEIGHT"}.apply(h,j),void 0!== -f&&(k.exports=f))},function(k,h,e){var j,f;!(j=[e,h],f=function(e,d){var a=function(){this.height=this.width=0};a.prototype.isDefined=function(){return 0!==this.width&&0!==this.height};a.prototype.isWidthDefined=function(){return 0!==this.width};a.prototype.isHeightDefined=function(){return 0!==this.height};a.MAX_HEIGHT_SUPPORTED=4294967296;d.Size=a;var f;f=function(){this.m_bottom=this.m_right=this.m_left=this.m_top=0};d.Rect=f;var g=function(a,g){this.x=a;this.y=g};g.prototype.set=function(a,g){this.x= -a;this.y=g};g.prototype.copy=function(a){this.set(a.x,a.y)};d.Position=g;g=function(){this.m_size=new a;this.m_rect=new f;this.m_ignore=!1};g.prototype.getleft=function(){return this.m_rect.m_left};g.prototype.getright=function(){return this.m_rect.m_right};g.prototype.getbottom=function(){return this.m_rect.m_bottom};g.prototype.gettop=function(){return this.m_rect.m_top};g.prototype.getwidth=function(){return this.m_size.width};g.prototype.getheight=function(){return this.m_size.height};d.Layout= -g}.apply(h,j),void 0!==f&&(k.exports=f))},function(k,h,e){var j,f;!(j=[e,h,e(0)],f=function(f,d,a){var e=function(){};e.isRowDirection=function(g){return g===a.Direction.ROW||g===a.Direction.ROW_REVERSE};e.isColumnDirection=function(g){return g===a.Direction.COLUMN||g===a.Direction.COLUMN_REVERSE};e.getSimplifiedDirection=function(g){return e.isRowDirection(g)?a.Direction.ROW:a.Direction.COLUMN};e.round=function(a){var d=0;return d=Math.floor(a+0.5)};d.Utils=e}.apply(h,j),void 0!==f&&(k.exports=f))}, -function(k,h,e){var j,f;!(j=[e,h,e(4),e(5),e(6),e(1),e(0)],f=function(e,d,a,f,g,m,h){e=function(){};e.prototype.createNodeRecursive=function(a,i){var b=new f.InputStyle,c;for(c in a.style)a.style.hasOwnProperty(c)&&(b[c]=a.style[c]);b=new g.Node(b,i);b.init();if(a.children)for(c=0;cb&&(b=0);this.m_paddedSize.width= -b;this.setPosition(this.m_paddedPosition.x,this.m_paddedPosition.y)};i.prototype.setComputedHeight=function(b){var c=b-2*this.getProportionalCrossAxisPadding(b,h.Direction.ROW);j.prototype.setComputedHeight.call(this,c);0>b&&(b=0);this.m_paddedSize.height=b;this.setPosition(this.m_paddedPosition.x,this.m_paddedPosition.y)};i.prototype.getComputedCrossSize=function(b){var c=0;return c=h.Direction.ROW===b?this.m_paddedSize.height:this.m_paddedSize.width};i.prototype.getComputedMainSize=function(b){var c= -0;return c=h.Direction.ROW===b?this.m_paddedSize.width:this.m_paddedSize.height};i.prototype.getHypotheticalMainSize=function(b){return j.prototype.getHypotheticalMainSize.call(this,b)+2*this.getMainAxisPadding(b)};i.prototype.getHypotheticalCrossSize=function(b){return j.prototype.getHypotheticalCrossSize.call(this,b)+2*this.getCrossAxisPadding(b)};i.prototype.getProportionalMainAxisPadding=function(b,c){var a=this.getMainAxisPadding(c);ba)&&(c=a);void 0!==b&&(0c&&(c=0);a.Direction.ROW===b?this.setComputedHeight(c):this.setComputedWidth(c)};b.prototype.setComputedMainSize=function(c,b){0>c&&(c=0);a.Direction.ROW===b?this.setComputedWidth(c):this.setComputedHeight(c)};b.prototype.setSize=function(c,b){this.m_dimension.width=c;this.m_dimension.height=b};b.prototype.grow=function(c, -b,a,i){var d=0,d=h.Utils.round(this.m_flexChildProps.grow*c),c=this.getHypotheticalMainSize(b),e=c+d,d=this.getHypotheticalCrossSize(b),g=0,g=i?this.getComputedCrossSize(b):d;this.m_flexChildProps.keepAspectRatio&&(i=e/c,g=a/d,a=i,gd?e=this.getHypotheticalMainSize(b)-d:(d=c-1,e=1);this.getHypotheticalMainSize(b);this.m_flexChildProps.keepAspectRatio&&(i=e/=this.getHypotheticalMainSize(b),d=0,this.getHypotheticalCrossSize(b)&&(d=a/this.getHypotheticalCrossSize(b)),dthis.getComputedMainSize(this.m_flexContainerProps.direction))for(var j=b.length/this.getAccomadableChildCount(b.length,c),m=0,e=0,d=new g.LineInfo(this.getNode(),this.m_flexContainerProps.direction,i,this.m_computedDimensions),c=0;cd&&(d=0);var e=this.getFlexContainerProps().justifyContentCrossAxis;this.getFlexContainerProps();var g=0,f=this.getCrossSizeOffsetForLines(),j=0,k=0,k=0;if(this.m_crossAxisStretch)f=a.Direction.ROW===this.m_flexContainerProps.direction?this.m_position.y: -this.m_position.x,g=h.Utils.round(d/i.length);else switch(e){case a.AlignItems.START:f=a.Direction.ROW===this.m_flexContainerProps.direction?this.m_position.y:this.m_position.x;break;case a.AlignItems.CENTER:f=a.Direction.ROW===this.m_flexContainerProps.direction?this.m_position.y:this.m_position.x;f+=h.Utils.round(d/2);break;case a.AlignItems.END:f=a.Direction.ROW===this.m_flexContainerProps.direction?this.m_position.y:this.m_position.x,f+=d}for(d=0;dk){b=(j+k)/j;k=this.getCrossSizeOffsetForLines();for(d=0;db?c=this.shrinkChildren(a):this.setChildrenInputSize();return c};d.prototype.isMixtureOfNonGrowNGrow=function(){for(var a=0,b=0,c=this.m_flexChildren.getFirst();c;)c.getNode().getInputStyle().flexGrow?a++:b++,c=c.getNext();return 0/g, ">").replace(/"/g, """).replace(/'/g, "'").replace(/\//g, "/"); else return str; - } - function unescapeXmlChars(str) { - return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"').replace(/'/g, "'").replace(///g, "/"); - } - function parseDOMChildren(node) { - if (node.nodeType == DOMNodeTypes.DOCUMENT_NODE) { - var result, child = node.firstChild, i, len; - for (i = 0, len = node.childNodes.length; i < len; i += 1) { - if (node.childNodes[i].nodeType !== DOMNodeTypes.COMMENT_NODE) { - child = node.childNodes[i]; - break; - } - } - if (ignoreRoot) { - result = parseDOMChildren(child); - } else { - result = {}; - var childName = getNodeLocalName(child); - result[childName] = parseDOMChildren(child); - } - return result; - } else if (node.nodeType == DOMNodeTypes.ELEMENT_NODE) { - var result = new Object(); - result.__cnt = 0; - var nodeChildren = node.childNodes; - for (var cidx = 0; cidx < nodeChildren.length; cidx++) { - var child = nodeChildren.item(cidx); - var childName = getNodeLocalName(child); - result.__cnt++; - if (result[childName] == null) { - result[childName] = parseDOMChildren(child); - result[childName + "_asArray"] = new Array(1); - result[childName + "_asArray"][0] = result[childName]; - } else { - if (result[childName] != null) { - if (!(result[childName] instanceof Array)) { - var tmpObj = result[childName]; - result[childName] = new Array(); - result[childName][0] = tmpObj; - result[childName + "_asArray"] = result[childName]; - } - } - var aridx = 0; - while (result[childName][aridx] != null) aridx++; - result[childName][aridx] = parseDOMChildren(child); - } - } - for (var aidx = 0; aidx < node.attributes.length; aidx++) { - var attr = node.attributes.item(aidx); - result.__cnt++; - var value2 = attr.value; - for (var m = 0, ml = matchers.length; m < ml; m++) { - var matchobj = matchers[m]; - if (matchobj.test.call(this, attr)) value2 = matchobj.converter.call(this, attr.value); - } - result[attrPrefix + attr.name] = value2; - } - var nodePrefix = getNodePrefix(node); - if (nodePrefix != null && nodePrefix != "") { - result.__cnt++; - result.__prefix = nodePrefix; - } - if (result.__cnt == 1 && result["#text"] != null) { - result = result["#text"]; - } - if (result["#text"] != null) { - result.__text = result["#text"]; - if (escapeMode) result.__text = unescapeXmlChars(result.__text); - delete result["#text"]; - delete result["#text_asArray"]; - } - if (result["#cdata-section"] != null) { - result.__cdata = result["#cdata-section"]; - delete result["#cdata-section"]; - delete result["#cdata-section_asArray"]; - } - if (result.__text != null || result.__cdata != null) { - result.toString = function() { - return (this.__text != null ? this.__text : "") + (this.__cdata != null ? this.__cdata : ""); - }; - } - return result; - } else if (node.nodeType == DOMNodeTypes.TEXT_NODE || node.nodeType == DOMNodeTypes.CDATA_SECTION_NODE) { - return node.nodeValue; - } else if (node.nodeType == DOMNodeTypes.COMMENT_NODE) { - return null; - } - } - function startTag(jsonObj, element, attrList, closed) { - var resultStr = "<" + (jsonObj != null && jsonObj.__prefix != null ? jsonObj.__prefix + ":" : "") + element; - if (attrList != null) { - for (var aidx = 0; aidx < attrList.length; aidx++) { - var attrName = attrList[aidx]; - var attrVal = jsonObj[attrName]; - resultStr += " " + attrName.substr(1) + "='" + attrVal + "'"; - } - } - if (!closed) resultStr += ">"; else resultStr += "/>"; - return resultStr; - } - function endTag(jsonObj, elementName) { - return ""; - } - function endsWith(str, suffix) { - return str.indexOf(suffix, str.length - suffix.length) !== -1; - } - function jsonXmlSpecialElem(jsonObj, jsonObjField) { - if (endsWith(jsonObjField.toString(), "_asArray") || jsonObjField.toString().indexOf("_") == 0 || jsonObj[jsonObjField] instanceof Function) return true; else return false; - } - function jsonXmlElemCount(jsonObj) { - var elementsCnt = 0; - if (jsonObj instanceof Object) { - for (var it in jsonObj) { - if (jsonXmlSpecialElem(jsonObj, it)) continue; - elementsCnt++; - } - } - return elementsCnt; - } - function parseJSONAttributes(jsonObj) { - var attrList = []; - if (jsonObj instanceof Object) { - for (var ait in jsonObj) { - if (ait.toString().indexOf("__") == -1 && ait.toString().indexOf("_") == 0) { - attrList.push(ait); - } - } - } - return attrList; - } - function parseJSONTextAttrs(jsonTxtObj) { - var result = ""; - if (jsonTxtObj.__cdata != null) { - result += ""; - } - if (jsonTxtObj.__text != null) { - if (escapeMode) result += escapeXmlChars(jsonTxtObj.__text); else result += jsonTxtObj.__text; - } - return result; - } - function parseJSONTextObject(jsonTxtObj) { - var result = ""; - if (jsonTxtObj instanceof Object) { - result += parseJSONTextAttrs(jsonTxtObj); - } else if (jsonTxtObj != null) { - if (escapeMode) result += escapeXmlChars(jsonTxtObj); else result += jsonTxtObj; - } - return result; - } - function parseJSONArray(jsonArrRoot, jsonArrObj, attrList) { - var result = ""; - if (jsonArrRoot.length == 0) { - result += startTag(jsonArrRoot, jsonArrObj, attrList, true); - } else { - for (var arIdx = 0; arIdx < jsonArrRoot.length; arIdx++) { - result += startTag(jsonArrRoot[arIdx], jsonArrObj, parseJSONAttributes(jsonArrRoot[arIdx]), false); - result += parseJSONObject(jsonArrRoot[arIdx]); - result += endTag(jsonArrRoot[arIdx], jsonArrObj); - } - } - return result; - } - function parseJSONObject(jsonObj) { - var result = ""; - var elementsCnt = jsonXmlElemCount(jsonObj); - if (elementsCnt > 0) { - for (var it in jsonObj) { - if (jsonXmlSpecialElem(jsonObj, it)) continue; - var subObj = jsonObj[it]; - var attrList = parseJSONAttributes(subObj); - if (subObj == null || subObj == undefined) { - result += startTag(subObj, it, attrList, true); - } else if (subObj instanceof Object) { - if (subObj instanceof Array) { - result += parseJSONArray(subObj, it, attrList); - } else { - var subObjElementsCnt = jsonXmlElemCount(subObj); - if (subObjElementsCnt > 0 || subObj.__text != null || subObj.__cdata != null) { - result += startTag(subObj, it, attrList, false); - result += parseJSONObject(subObj); - result += endTag(subObj, it); - } else { - result += startTag(subObj, it, attrList, true); - } - } - } else { - result += startTag(subObj, it, attrList, false); - result += parseJSONTextObject(subObj); - result += endTag(subObj, it); - } - } - } - result += parseJSONTextObject(jsonObj); - return result; - } - this.parseXmlString = function(xmlDocStr) { - var xmlDoc; - if (window.DOMParser) { - var parser = new window.DOMParser(); - xmlDoc = parser.parseFromString(xmlDocStr, "text/xml"); - } else { - if (xmlDocStr.indexOf("") + 2); - } - xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); - xmlDoc.async = "false"; - xmlDoc.loadXML(xmlDocStr); - } - return xmlDoc; - }; - this.xml2json = function(xmlDoc) { - return parseDOMChildren(xmlDoc); - }; - this.xml_str2json = function(xmlDocStr) { - var xmlDoc = this.parseXmlString(xmlDocStr); - return this.xml2json(xmlDoc); - }; - this.json2xml_str = function(jsonObj) { - return parseJSONObject(jsonObj); - }; - this.json2xml = function(jsonObj) { - var xmlDocStr = this.json2xml_str(jsonObj); - return this.parseXmlString(xmlDocStr); - }; - this.getVersion = function() { - return VERSION; - }; - this.escapeMode = function(enabled) { - escapeMode = enabled; - }; -} - -function ObjectIron(map) { - var lookup; - lookup = []; - for (i = 0, len = map.length; i < len; i += 1) { - if (map[i].isRoot) { - lookup.push("root"); - } else { - lookup.push(map[i].name); - } - } - var mergeValues = function(parentItem, childItem) { - var name, parentValue, childValue; - if (parentItem === null || childItem === null) { - return; - } - for (name in parentItem) { - if (parentItem.hasOwnProperty(name)) { - if (!childItem.hasOwnProperty(name)) { - childItem[name] = parentItem[name]; - } - } - } - }, mapProperties = function(properties, parent, child) { - var i, len, property, parentValue, childValue; - if (properties === null || properties.length === 0) { - return; - } - for (i = 0, len = properties.length; i < len; i += 1) { - property = properties[i]; - if (parent.hasOwnProperty(property.name)) { - if (child.hasOwnProperty(property.name)) { - if (property.merge) { - parentValue = parent[property.name]; - childValue = child[property.name]; - if (typeof parentValue === "object" && typeof childValue === "object") { - mergeValues(parentValue, childValue); - } else { - if (property.mergeFunction != null) { - child[property.name] = property.mergeFunction(parentValue, childValue); - } else { - child[property.name] = parentValue + childValue; - } - } - } - } else { - child[property.name] = parent[property.name]; - } - } - } - }, mapItem = function(obj, node) { - var item = obj, i, len, v, len2, array, childItem, childNode, property; - if (item.children === null || item.children.length === 0) { - return; - } - for (i = 0, len = item.children.length; i < len; i += 1) { - childItem = item.children[i]; - if (node.hasOwnProperty(childItem.name)) { - if (childItem.isArray) { - array = node[childItem.name + "_asArray"]; - for (v = 0, len2 = array.length; v < len2; v += 1) { - childNode = array[v]; - mapProperties(item.properties, node, childNode); - mapItem(childItem, childNode); - } - } else { - childNode = node[childItem.name]; - mapProperties(item.properties, node, childNode); - mapItem(childItem, childNode); - } - } - } - }, performMapping = function(source) { - var i, len, pi, pp, item, node, array; - if (source === null) { - return source; - } - if (typeof source !== "object") { - return source; - } - for (i = 0, len = lookup.length; i < len; i += 1) { - if (lookup[i] === "root") { - item = map[i]; - node = source; - mapItem(item, node); - } - } - for (pp in source) { - if (source.hasOwnProperty(pp)) { - pi = lookup.indexOf(pp); - if (pi !== -1) { - item = map[pi]; - if (item.isArray) { - array = source[pp + "_asArray"]; - for (i = 0, len = array.length; i < len; i += 1) { - node = array[i]; - mapItem(item, node); - } - } else { - node = source[pp]; - mapItem(item, node); - } - } - performMapping(source[pp]); - } - } - return source; - }; - return { - run: performMapping - }; -} - -(function(scope) { - "use strict"; - var dijon = { - VERSION: "0.5.3" - }; - dijon.System = function() { - this._mappings = {}; - this._outlets = {}; - this._handlers = {}; - this.strictInjections = true; - this.autoMapOutlets = false; - this.postInjectionHook = "setup"; - }; - dijon.System.prototype = { - _createAndSetupInstance: function(key, Clazz) { - var instance = new Clazz(); - this.injectInto(instance, key); - return instance; - }, - _retrieveFromCacheOrCreate: function(key, overrideRules) { - if (typeof overrideRules === "undefined") { - overrideRules = false; - } - var output; - if (this._mappings.hasOwnProperty(key)) { - var config = this._mappings[key]; - if (!overrideRules && config.isSingleton) { - if (config.object == null) { - config.object = this._createAndSetupInstance(key, config.clazz); - } - output = config.object; - } else { - if (config.clazz) { - output = this._createAndSetupInstance(key, config.clazz); - } else { - output = config.object; - } - } - } else { - throw new Error(1e3); - } - return output; - }, - mapOutlet: function(sourceKey, targetKey, outletName) { - if (typeof sourceKey === "undefined") { - throw new Error(1010); - } - targetKey = targetKey || "global"; - outletName = outletName || sourceKey; - if (!this._outlets.hasOwnProperty(targetKey)) { - this._outlets[targetKey] = {}; - } - this._outlets[targetKey][outletName] = sourceKey; - return this; - }, - getObject: function(key) { - if (typeof key === "undefined") { - throw new Error(1020); - } - return this._retrieveFromCacheOrCreate(key); - }, - mapValue: function(key, useValue) { - if (typeof key === "undefined") { - throw new Error(1030); - } - this._mappings[key] = { - clazz: null, - object: useValue, - isSingleton: true - }; - if (this.autoMapOutlets) { - this.mapOutlet(key); - } - if (this.hasMapping(key)) { - this.injectInto(useValue, key); - } - return this; - }, - hasMapping: function(key) { - if (typeof key === "undefined") { - throw new Error(1040); - } - return this._mappings.hasOwnProperty(key); - }, - mapClass: function(key, clazz) { - if (typeof key === "undefined") { - throw new Error(1050); - } - if (typeof clazz === "undefined") { - throw new Error(1051); - } - this._mappings[key] = { - clazz: clazz, - object: null, - isSingleton: false - }; - if (this.autoMapOutlets) { - this.mapOutlet(key); - } - return this; - }, - mapSingleton: function(key, clazz) { - if (typeof key === "undefined") { - throw new Error(1060); - } - if (typeof clazz === "undefined") { - throw new Error(1061); - } - this._mappings[key] = { - clazz: clazz, - object: null, - isSingleton: true - }; - if (this.autoMapOutlets) { - this.mapOutlet(key); - } - return this; - }, - instantiate: function(key) { - if (typeof key === "undefined") { - throw new Error(1070); - } - return this._retrieveFromCacheOrCreate(key, true); - }, - injectInto: function(instance, key) { - if (typeof instance === "undefined") { - throw new Error(1080); - } - if (typeof instance === "object") { - var o = []; - if (this._outlets.hasOwnProperty("global")) { - o.push(this._outlets["global"]); - } - if (typeof key !== "undefined" && this._outlets.hasOwnProperty(key)) { - o.push(this._outlets[key]); - } - for (var i in o) { - var l = o[i]; - for (var outlet in l) { - var source = l[outlet]; - if (!this.strictInjections || outlet in instance) { - instance[outlet] = this.getObject(source); - } - } - } - if ("setup" in instance) { - instance.setup.call(instance); - } - } - return this; - }, - unmap: function(key) { - if (typeof key === "undefined") { - throw new Error(1090); - } - delete this._mappings[key]; - return this; - }, - unmapOutlet: function(target, outlet) { - if (typeof target === "undefined") { - throw new Error(1100); - } - if (typeof outlet === "undefined") { - throw new Error(1101); - } - delete this._outlets[target][outlet]; - return this; - }, - mapHandler: function(eventName, key, handler, oneShot, passEvent) { - if (typeof eventName === "undefined") { - throw new Error(1110); - } - key = key || "global"; - handler = handler || eventName; - if (typeof oneShot === "undefined") { - oneShot = false; - } - if (typeof passEvent === "undefined") { - passEvent = false; - } - if (!this._handlers.hasOwnProperty(eventName)) { - this._handlers[eventName] = {}; - } - if (!this._handlers[eventName].hasOwnProperty(key)) { - this._handlers[eventName][key] = []; - } - this._handlers[eventName][key].push({ - handler: handler, - oneShot: oneShot, - passEvent: passEvent - }); - return this; - }, - unmapHandler: function(eventName, key, handler) { - if (typeof eventName === "undefined") { - throw new Error(1120); - } - key = key || "global"; - handler = handler || eventName; - if (this._handlers.hasOwnProperty(eventName) && this._handlers[eventName].hasOwnProperty(key)) { - var handlers = this._handlers[eventName][key]; - for (var i in handlers) { - var config = handlers[i]; - if (config.handler === handler) { - handlers.splice(i, 1); - break; - } - } - } - return this; - }, - notify: function(eventName) { - if (typeof eventName === "undefined") { - throw new Error(1130); - } - var argsWithEvent = Array.prototype.slice.call(arguments); - var argsClean = argsWithEvent.slice(1); - if (this._handlers.hasOwnProperty(eventName)) { - var handlers = this._handlers[eventName]; - for (var key in handlers) { - var configs = handlers[key]; - var instance; - if (key !== "global") { - instance = this.getObject(key); - } - var toBeDeleted = []; - var i, n; - for (i = 0, n = configs.length; i < n; i++) { - var handler; - var config = configs[i]; - if (instance && typeof config.handler === "string") { - handler = instance[config.handler]; - } else { - handler = config.handler; - } - if (config.oneShot) { - toBeDeleted.unshift(i); - } - if (config.passEvent) { - handler.apply(instance, argsWithEvent); - } else { - handler.apply(instance, argsClean); - } - } - for (i = 0, n = toBeDeleted.length; i < n; i++) { - configs.splice(toBeDeleted[i], 1); - } - } - } - return this; - } - }; - scope.dijon = dijon; -})(this); - -if (typeof utils == "undefined") { - var utils = {}; -} - -if (typeof utils.Math == "undefined") { - utils.Math = {}; -} - -utils.Math.to64BitNumber = function(low, high) { - var highNum, lowNum, expected; - highNum = new goog.math.Long(0, high); - lowNum = new goog.math.Long(low, 0); - expected = highNum.add(lowNum); - return expected.toNumber(); -}; - -goog = {}; - -goog.math = {}; - -goog.math.Long = function(low, high) { - this.low_ = low | 0; - this.high_ = high | 0; -}; - -goog.math.Long.IntCache_ = {}; - -goog.math.Long.fromInt = function(value) { - if (-128 <= value && value < 128) { - var cachedObj = goog.math.Long.IntCache_[value]; - if (cachedObj) { - return cachedObj; - } - } - var obj = new goog.math.Long(value | 0, value < 0 ? -1 : 0); - if (-128 <= value && value < 128) { - goog.math.Long.IntCache_[value] = obj; - } - return obj; -}; - -goog.math.Long.fromNumber = function(value) { - if (isNaN(value) || !isFinite(value)) { - return goog.math.Long.ZERO; - } else if (value <= -goog.math.Long.TWO_PWR_63_DBL_) { - return goog.math.Long.MIN_VALUE; - } else if (value + 1 >= goog.math.Long.TWO_PWR_63_DBL_) { - return goog.math.Long.MAX_VALUE; - } else if (value < 0) { - return goog.math.Long.fromNumber(-value).negate(); - } else { - return new goog.math.Long(value % goog.math.Long.TWO_PWR_32_DBL_ | 0, value / goog.math.Long.TWO_PWR_32_DBL_ | 0); - } -}; - -goog.math.Long.fromBits = function(lowBits, highBits) { - return new goog.math.Long(lowBits, highBits); -}; - -goog.math.Long.fromString = function(str, opt_radix) { - if (str.length == 0) { - throw Error("number format error: empty string"); - } - var radix = opt_radix || 10; - if (radix < 2 || 36 < radix) { - throw Error("radix out of range: " + radix); - } - if (str.charAt(0) == "-") { - return goog.math.Long.fromString(str.substring(1), radix).negate(); - } else if (str.indexOf("-") >= 0) { - throw Error('number format error: interior "-" character: ' + str); - } - var radixToPower = goog.math.Long.fromNumber(Math.pow(radix, 8)); - var result = goog.math.Long.ZERO; - for (var i = 0; i < str.length; i += 8) { - var size = Math.min(8, str.length - i); - var value = parseInt(str.substring(i, i + size), radix); - if (size < 8) { - var power = goog.math.Long.fromNumber(Math.pow(radix, size)); - result = result.multiply(power).add(goog.math.Long.fromNumber(value)); - } else { - result = result.multiply(radixToPower); - result = result.add(goog.math.Long.fromNumber(value)); - } - } - return result; -}; - -goog.math.Long.TWO_PWR_16_DBL_ = 1 << 16; - -goog.math.Long.TWO_PWR_24_DBL_ = 1 << 24; - -goog.math.Long.TWO_PWR_32_DBL_ = goog.math.Long.TWO_PWR_16_DBL_ * goog.math.Long.TWO_PWR_16_DBL_; - -goog.math.Long.TWO_PWR_31_DBL_ = goog.math.Long.TWO_PWR_32_DBL_ / 2; - -goog.math.Long.TWO_PWR_48_DBL_ = goog.math.Long.TWO_PWR_32_DBL_ * goog.math.Long.TWO_PWR_16_DBL_; - -goog.math.Long.TWO_PWR_64_DBL_ = goog.math.Long.TWO_PWR_32_DBL_ * goog.math.Long.TWO_PWR_32_DBL_; - -goog.math.Long.TWO_PWR_63_DBL_ = goog.math.Long.TWO_PWR_64_DBL_ / 2; - -goog.math.Long.ZERO = goog.math.Long.fromInt(0); - -goog.math.Long.ONE = goog.math.Long.fromInt(1); - -goog.math.Long.NEG_ONE = goog.math.Long.fromInt(-1); - -goog.math.Long.MAX_VALUE = goog.math.Long.fromBits(4294967295 | 0, 2147483647 | 0); - -goog.math.Long.MIN_VALUE = goog.math.Long.fromBits(0, 2147483648 | 0); - -goog.math.Long.TWO_PWR_24_ = goog.math.Long.fromInt(1 << 24); - -goog.math.Long.prototype.toInt = function() { - return this.low_; -}; - -goog.math.Long.prototype.toNumber = function() { - return this.high_ * goog.math.Long.TWO_PWR_32_DBL_ + this.getLowBitsUnsigned(); -}; - -goog.math.Long.prototype.toString = function(opt_radix) { - var radix = opt_radix || 10; - if (radix < 2 || 36 < radix) { - throw Error("radix out of range: " + radix); - } - if (this.isZero()) { - return "0"; - } - if (this.isNegative()) { - if (this.equals(goog.math.Long.MIN_VALUE)) { - var radixLong = goog.math.Long.fromNumber(radix); - var div = this.div(radixLong); - var rem = div.multiply(radixLong).subtract(this); - return div.toString(radix) + rem.toInt().toString(radix); - } else { - return "-" + this.negate().toString(radix); - } - } - var radixToPower = goog.math.Long.fromNumber(Math.pow(radix, 6)); - var rem = this; - var result = ""; - while (true) { - var remDiv = rem.div(radixToPower); - var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt(); - var digits = intval.toString(radix); - rem = remDiv; - if (rem.isZero()) { - return digits + result; - } else { - while (digits.length < 6) { - digits = "0" + digits; - } - result = "" + digits + result; - } - } -}; - -goog.math.Long.prototype.getHighBits = function() { - return this.high_; -}; - -goog.math.Long.prototype.getLowBits = function() { - return this.low_; -}; - -goog.math.Long.prototype.getLowBitsUnsigned = function() { - return this.low_ >= 0 ? this.low_ : goog.math.Long.TWO_PWR_32_DBL_ + this.low_; -}; - -goog.math.Long.prototype.getNumBitsAbs = function() { - if (this.isNegative()) { - if (this.equals(goog.math.Long.MIN_VALUE)) { - return 64; - } else { - return this.negate().getNumBitsAbs(); - } - } else { - var val = this.high_ != 0 ? this.high_ : this.low_; - for (var bit = 31; bit > 0; bit--) { - if ((val & 1 << bit) != 0) { - break; - } - } - return this.high_ != 0 ? bit + 33 : bit + 1; - } -}; - -goog.math.Long.prototype.isZero = function() { - return this.high_ == 0 && this.low_ == 0; -}; - -goog.math.Long.prototype.isNegative = function() { - return this.high_ < 0; -}; - -goog.math.Long.prototype.isOdd = function() { - return (this.low_ & 1) == 1; -}; - -goog.math.Long.prototype.equals = function(other) { - return this.high_ == other.high_ && this.low_ == other.low_; -}; - -goog.math.Long.prototype.notEquals = function(other) { - return this.high_ != other.high_ || this.low_ != other.low_; -}; - -goog.math.Long.prototype.lessThan = function(other) { - return this.compare(other) < 0; -}; - -goog.math.Long.prototype.lessThanOrEqual = function(other) { - return this.compare(other) <= 0; -}; - -goog.math.Long.prototype.greaterThan = function(other) { - return this.compare(other) > 0; -}; - -goog.math.Long.prototype.greaterThanOrEqual = function(other) { - return this.compare(other) >= 0; -}; - -goog.math.Long.prototype.compare = function(other) { - if (this.equals(other)) { - return 0; - } - var thisNeg = this.isNegative(); - var otherNeg = other.isNegative(); - if (thisNeg && !otherNeg) { - return -1; - } - if (!thisNeg && otherNeg) { - return 1; - } - if (this.subtract(other).isNegative()) { - return -1; - } else { - return 1; - } -}; - -goog.math.Long.prototype.negate = function() { - if (this.equals(goog.math.Long.MIN_VALUE)) { - return goog.math.Long.MIN_VALUE; - } else { - return this.not().add(goog.math.Long.ONE); - } -}; - -goog.math.Long.prototype.add = function(other) { - var a48 = this.high_ >>> 16; - var a32 = this.high_ & 65535; - var a16 = this.low_ >>> 16; - var a00 = this.low_ & 65535; - var b48 = other.high_ >>> 16; - var b32 = other.high_ & 65535; - var b16 = other.low_ >>> 16; - var b00 = other.low_ & 65535; - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 + b00; - c16 += c00 >>> 16; - c00 &= 65535; - c16 += a16 + b16; - c32 += c16 >>> 16; - c16 &= 65535; - c32 += a32 + b32; - c48 += c32 >>> 16; - c32 &= 65535; - c48 += a48 + b48; - c48 &= 65535; - return goog.math.Long.fromBits(c16 << 16 | c00, c48 << 16 | c32); -}; - -goog.math.Long.prototype.subtract = function(other) { - return this.add(other.negate()); -}; - -goog.math.Long.prototype.multiply = function(other) { - if (this.isZero()) { - return goog.math.Long.ZERO; - } else if (other.isZero()) { - return goog.math.Long.ZERO; - } - if (this.equals(goog.math.Long.MIN_VALUE)) { - return other.isOdd() ? goog.math.Long.MIN_VALUE : goog.math.Long.ZERO; - } else if (other.equals(goog.math.Long.MIN_VALUE)) { - return this.isOdd() ? goog.math.Long.MIN_VALUE : goog.math.Long.ZERO; - } - if (this.isNegative()) { - if (other.isNegative()) { - return this.negate().multiply(other.negate()); - } else { - return this.negate().multiply(other).negate(); - } - } else if (other.isNegative()) { - return this.multiply(other.negate()).negate(); - } - if (this.lessThan(goog.math.Long.TWO_PWR_24_) && other.lessThan(goog.math.Long.TWO_PWR_24_)) { - return goog.math.Long.fromNumber(this.toNumber() * other.toNumber()); - } - var a48 = this.high_ >>> 16; - var a32 = this.high_ & 65535; - var a16 = this.low_ >>> 16; - var a00 = this.low_ & 65535; - var b48 = other.high_ >>> 16; - var b32 = other.high_ & 65535; - var b16 = other.low_ >>> 16; - var b00 = other.low_ & 65535; - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 * b00; - c16 += c00 >>> 16; - c00 &= 65535; - c16 += a16 * b00; - c32 += c16 >>> 16; - c16 &= 65535; - c16 += a00 * b16; - c32 += c16 >>> 16; - c16 &= 65535; - c32 += a32 * b00; - c48 += c32 >>> 16; - c32 &= 65535; - c32 += a16 * b16; - c48 += c32 >>> 16; - c32 &= 65535; - c32 += a00 * b32; - c48 += c32 >>> 16; - c32 &= 65535; - c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; - c48 &= 65535; - return goog.math.Long.fromBits(c16 << 16 | c00, c48 << 16 | c32); -}; - -goog.math.Long.prototype.div = function(other) { - if (other.isZero()) { - throw Error("division by zero"); - } else if (this.isZero()) { - return goog.math.Long.ZERO; - } - if (this.equals(goog.math.Long.MIN_VALUE)) { - if (other.equals(goog.math.Long.ONE) || other.equals(goog.math.Long.NEG_ONE)) { - return goog.math.Long.MIN_VALUE; - } else if (other.equals(goog.math.Long.MIN_VALUE)) { - return goog.math.Long.ONE; - } else { - var halfThis = this.shiftRight(1); - var approx = halfThis.div(other).shiftLeft(1); - if (approx.equals(goog.math.Long.ZERO)) { - return other.isNegative() ? goog.math.Long.ONE : goog.math.Long.NEG_ONE; - } else { - var rem = this.subtract(other.multiply(approx)); - var result = approx.add(rem.div(other)); - return result; - } - } - } else if (other.equals(goog.math.Long.MIN_VALUE)) { - return goog.math.Long.ZERO; - } - if (this.isNegative()) { - if (other.isNegative()) { - return this.negate().div(other.negate()); - } else { - return this.negate().div(other).negate(); - } - } else if (other.isNegative()) { - return this.div(other.negate()).negate(); - } - var res = goog.math.Long.ZERO; - var rem = this; - while (rem.greaterThanOrEqual(other)) { - var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber())); - var log2 = Math.ceil(Math.log(approx) / Math.LN2); - var delta = log2 <= 48 ? 1 : Math.pow(2, log2 - 48); - var approxRes = goog.math.Long.fromNumber(approx); - var approxRem = approxRes.multiply(other); - while (approxRem.isNegative() || approxRem.greaterThan(rem)) { - approx -= delta; - approxRes = goog.math.Long.fromNumber(approx); - approxRem = approxRes.multiply(other); - } - if (approxRes.isZero()) { - approxRes = goog.math.Long.ONE; - } - res = res.add(approxRes); - rem = rem.subtract(approxRem); - } - return res; -}; - -goog.math.Long.prototype.modulo = function(other) { - return this.subtract(this.div(other).multiply(other)); -}; - -goog.math.Long.prototype.not = function() { - return goog.math.Long.fromBits(~this.low_, ~this.high_); -}; - -goog.math.Long.prototype.and = function(other) { - return goog.math.Long.fromBits(this.low_ & other.low_, this.high_ & other.high_); -}; - -goog.math.Long.prototype.or = function(other) { - return goog.math.Long.fromBits(this.low_ | other.low_, this.high_ | other.high_); -}; - -goog.math.Long.prototype.xor = function(other) { - return goog.math.Long.fromBits(this.low_ ^ other.low_, this.high_ ^ other.high_); -}; - -goog.math.Long.prototype.shiftLeft = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var low = this.low_; - if (numBits < 32) { - var high = this.high_; - return goog.math.Long.fromBits(low << numBits, high << numBits | low >>> 32 - numBits); - } else { - return goog.math.Long.fromBits(0, low << numBits - 32); - } - } -}; - -goog.math.Long.prototype.shiftRight = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var high = this.high_; - if (numBits < 32) { - var low = this.low_; - return goog.math.Long.fromBits(low >>> numBits | high << 32 - numBits, high >> numBits); - } else { - return goog.math.Long.fromBits(high >> numBits - 32, high >= 0 ? 0 : -1); - } - } -}; - -goog.math.Long.prototype.shiftRightUnsigned = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var high = this.high_; - if (numBits < 32) { - var low = this.low_; - return goog.math.Long.fromBits(low >>> numBits | high << 32 - numBits, high >>> numBits); - } else if (numBits == 32) { - return goog.math.Long.fromBits(high, 0); - } else { - return goog.math.Long.fromBits(high >>> numBits - 32, 0); - } - } -}; - -var UTF8 = {}; - -UTF8.encode = function(s) { - var u = []; - for (var i = 0; i < s.length; ++i) { - var c = s.charCodeAt(i); - if (c < 128) { - u.push(c); - } else if (c < 2048) { - u.push(192 | c >> 6); - u.push(128 | 63 & c); - } else if (c < 65536) { - u.push(224 | c >> 12); - u.push(128 | 63 & c >> 6); - u.push(128 | 63 & c); - } else { - u.push(240 | c >> 18); - u.push(128 | 63 & c >> 12); - u.push(128 | 63 & c >> 6); - u.push(128 | 63 & c); - } - } - return u; -}; - -UTF8.decode = function(u) { - var a = []; - var i = 0; - while (i < u.length) { - var v = u[i++]; - if (v < 128) {} else if (v < 224) { - v = (31 & v) << 6; - v |= 63 & u[i++]; - } else if (v < 240) { - v = (15 & v) << 12; - v |= (63 & u[i++]) << 6; - v |= 63 & u[i++]; - } else { - v = (7 & v) << 18; - v |= (63 & u[i++]) << 12; - v |= (63 & u[i++]) << 6; - v |= 63 & u[i++]; - } - a.push(String.fromCharCode(v)); - } - return a.join(""); -}; - -var BASE64 = {}; - -(function(T) { - var encodeArray = function(u) { - var i = 0; - var a = []; - var n = 0 | u.length / 3; - while (0 < n--) { - var v = (u[i] << 16) + (u[i + 1] << 8) + u[i + 2]; - i += 3; - a.push(T.charAt(63 & v >> 18)); - a.push(T.charAt(63 & v >> 12)); - a.push(T.charAt(63 & v >> 6)); - a.push(T.charAt(63 & v)); - } - if (2 == u.length - i) { - var v = (u[i] << 16) + (u[i + 1] << 8); - a.push(T.charAt(63 & v >> 18)); - a.push(T.charAt(63 & v >> 12)); - a.push(T.charAt(63 & v >> 6)); - a.push("="); - } else if (1 == u.length - i) { - var v = u[i] << 16; - a.push(T.charAt(63 & v >> 18)); - a.push(T.charAt(63 & v >> 12)); - a.push("=="); - } - return a.join(""); - }; - var R = function() { - var a = []; - for (var i = 0; i < T.length; ++i) { - a[T.charCodeAt(i)] = i; - } - a["=".charCodeAt(0)] = 0; - return a; - }(); - var decodeArray = function(s) { - var i = 0; - var u = []; - var n = 0 | s.length / 4; - while (0 < n--) { - var v = (R[s.charCodeAt(i)] << 18) + (R[s.charCodeAt(i + 1)] << 12) + (R[s.charCodeAt(i + 2)] << 6) + R[s.charCodeAt(i + 3)]; - u.push(255 & v >> 16); - u.push(255 & v >> 8); - u.push(255 & v); - i += 4; - } - if (u) { - if ("=" == s.charAt(i - 2)) { - u.pop(); - u.pop(); - } else if ("=" == s.charAt(i - 1)) { - u.pop(); - } - } - return u; - }; - var ASCII = {}; - ASCII.encode = function(s) { - var u = []; - for (var i = 0; i < s.length; ++i) { - u.push(s.charCodeAt(i)); - } - return u; - }; - ASCII.decode = function(u) { - for (var i = 0; i < s.length; ++i) { - a[i] = String.fromCharCode(a[i]); - } - return a.join(""); - }; - BASE64.decodeArray = function(s) { - var u = decodeArray(s); - return new Uint8Array(u); - }; - BASE64.encodeASCII = function(s) { - var u = ASCII.encode(s); - return encodeArray(u); - }; - BASE64.decodeASCII = function(s) { - var a = decodeArray(s); - return ASCII.decode(a); - }; - BASE64.encode = function(s) { - var u = UTF8.encode(s); - return encodeArray(u); - }; - BASE64.decode = function(s) { - var u = decodeArray(s); - return UTF8.decode(u); - }; -})("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"); - -if (undefined === btoa) { - var btoa = BASE64.encode; -} - -if (undefined === atob) { - var atob = BASE64.decode; -} - -MediaPlayer = function(context) { - "use strict"; - var VERSION = "1.4.0", DEFAULT_TIME_SERVER = "https://time.akamai.com/?iso", DEFAULT_TIME_SOURCE_SCHEME = "urn:mpeg:dash:utc:http-xsdate:2014", numOfParallelRequestAllowed = 0, system, abrController, element, source, protectionController = null, protectionData = null, streamController, rulesController, playbackController, metricsExt, metricsModel, videoModel, DOMStorage, initialized = false, playing = false, autoPlay = true, scheduleWhilePaused = false, bufferMax = MediaPlayer.dependencies.BufferController.BUFFER_SIZE_REQUIRED, useManifestDateHeaderTimeSource = true, UTCTimingSources = [], liveDelayFragmentCount = 4, usePresentationDelay = false, isReady = function() { - return !!element && !!source; - }, play = function() { - if (!initialized) { - throw "MediaPlayer not initialized!"; - } - if (!this.capabilities.supportsMediaSource()) { - this.errHandler.capabilityError("mediasource"); - return; - } - if (!element || !source) { - throw "Missing view or source."; - } - playing = true; - this.debug.log("Playback initiated!"); - streamController = system.getObject("streamController"); - playbackController.subscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_SEEKING, streamController); - playbackController.subscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_TIME_UPDATED, streamController); - playbackController.subscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_CAN_PLAY, streamController); - playbackController.subscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_ERROR, streamController); - playbackController.setLiveDelayAttributes(liveDelayFragmentCount, usePresentationDelay); - streamController.initialize(autoPlay, protectionController, protectionData); - DOMStorage.checkInitialBitrate(); - if (typeof source === "string") { - streamController.load(source); - } else { - streamController.loadWithManifest(source); - } - streamController.setUTCTimingSources(UTCTimingSources, useManifestDateHeaderTimeSource); - system.mapValue("scheduleWhilePaused", scheduleWhilePaused); - system.mapOutlet("scheduleWhilePaused", "stream"); - system.mapOutlet("scheduleWhilePaused", "scheduleController"); - system.mapValue("numOfParallelRequestAllowed", numOfParallelRequestAllowed); - system.mapOutlet("numOfParallelRequestAllowed", "scheduleController"); - system.mapValue("bufferMax", bufferMax); - system.mapOutlet("bufferMax", "bufferController"); - rulesController.initialize(); - }, doAutoPlay = function() { - if (isReady()) { - play.call(this); - } - }, getDVRInfoMetric = function() { - var metric = metricsModel.getReadOnlyMetricsFor("video") || metricsModel.getReadOnlyMetricsFor("audio"); - return metricsExt.getCurrentDVRInfo(metric); - }, getDVRWindowSize = function() { - return getDVRInfoMetric.call(this).manifestInfo.DVRWindowSize; - }, getDVRSeekOffset = function(value) { - var metric = getDVRInfoMetric.call(this), val = metric.range.start + value; - if (val > metric.range.end) { - val = metric.range.end; - } - return val; - }, seek = function(value) { - this.getVideoModel().getElement().currentTime = this.getDVRSeekOffset(value); - }, time = function() { - var metric = getDVRInfoMetric.call(this); - return metric === null ? 0 : this.duration() - (metric.range.end - metric.time); - }, duration = function() { - var metric = getDVRInfoMetric.call(this), range; - if (metric === null) { - return 0; - } - range = metric.range.end - metric.range.start; - return range < metric.manifestInfo.DVRWindowSize ? range : metric.manifestInfo.DVRWindowSize; - }, getAsUTC = function(valToConvert) { - var metric = getDVRInfoMetric.call(this), availableFrom, utcValue; - if (metric === null) { - return 0; - } - availableFrom = metric.manifestInfo.availableFrom.getTime() / 1e3; - utcValue = valToConvert + (availableFrom + metric.range.start); - return utcValue; - }, timeAsUTC = function() { - return getAsUTC.call(this, this.time()); - }, durationAsUTC = function() { - return getAsUTC.call(this, this.duration()); - }, formatUTC = function(time, locales, hour12) { - var dt = new Date(time * 1e3); - var d = dt.toLocaleDateString(locales); - var t = dt.toLocaleTimeString(locales, { - hour12: hour12 - }); - return t + " " + d; - }, convertToTimeCode = function(value) { - value = Math.max(value, 0); - var h = Math.floor(value / 3600); - var m = Math.floor(value % 3600 / 60); - var s = Math.floor(value % 3600 % 60); - return (h === 0 ? "" : h < 10 ? "0" + h.toString() + ":" : h.toString() + ":") + (m < 10 ? "0" + m.toString() : m.toString()) + ":" + (s < 10 ? "0" + s.toString() : s.toString()); - }, updateRules = function(type, rules, override) { - if (!rules || type === undefined || type === null) return; - if (override) { - rulesController.setRules(type, rules); - } else { - rulesController.addRules(type, rules); - } - }, doReset = function() { - if (playing && streamController) { - playbackController.unsubscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_SEEKING, streamController); - playbackController.unsubscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_TIME_UPDATED, streamController); - playbackController.unsubscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_CAN_PLAY, streamController); - playbackController.unsubscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_ERROR, streamController); - streamController.reset(); - abrController.reset(); - rulesController.reset(); - playbackController.reset(); - streamController = null; - playing = false; - } - }; - var _getObject = dijon.System.prototype.getObject; - dijon.System.prototype.getObject = function(name) { - var obj = _getObject.call(this, name); - if (typeof obj === "object" && !obj.getName) { - obj.getName = function() { - return name; - }; - obj.setMediaType = function(mediaType) { - obj.mediaType = mediaType; - }; - obj.getMediaType = function() { - return obj.mediaType; - }; - } - return obj; - }; - system = new dijon.System(); - system.mapValue("system", system); - system.mapOutlet("system"); - system.injectInto(context); - return { - notifier: undefined, - debug: undefined, - eventBus: undefined, - capabilities: undefined, - adapter: undefined, - errHandler: undefined, - uriQueryFragModel: undefined, - videoElementExt: undefined, - setup: function() { - metricsExt = system.getObject("metricsExt"); - abrController = system.getObject("abrController"); - rulesController = system.getObject("rulesController"); - metricsModel = system.getObject("metricsModel"); - DOMStorage = system.getObject("DOMStorage"); - playbackController = system.getObject("playbackController"); - this.restoreDefaultUTCTimingSources(); - }, - addEventListener: function(type, listener, useCapture) { - type = type.toLowerCase(); - this.eventBus.addEventListener(type, listener, useCapture); - }, - removeEventListener: function(type, listener, useCapture) { - type = type.toLowerCase(); - this.eventBus.removeEventListener(type, listener, useCapture); - }, - getVersion: function() { - return VERSION; - }, - startup: function() { - if (!initialized) { - system.injectInto(this); - initialized = true; - } - }, - getDebug: function() { - return this.debug; - }, - getVideoModel: function() { - return videoModel; - }, - setLiveDelayFragmentCount: function(value) { - liveDelayFragmentCount = value; - }, - useSuggestedPresentationDelay: function(value) { - usePresentationDelay = value; - }, - enableLastBitrateCaching: function(enable, ttl) { - DOMStorage.enableLastBitrateCaching(enable, ttl); - }, - setNumOfParallelRequestAllowed: function(value) { - numOfParallelRequestAllowed = value; - }, - setMaxAllowedBitrateFor: function(type, value) { - abrController.setMaxAllowedBitrateFor(type, value); - }, - getMaxAllowedBitrateFor: function(type) { - return abrController.getMaxAllowedBitrateFor(type); - }, - setAutoPlay: function(value) { - autoPlay = value; - }, - getAutoPlay: function() { - return autoPlay; - }, - setScheduleWhilePaused: function(value) { - scheduleWhilePaused = value; - }, - getScheduleWhilePaused: function() { - return scheduleWhilePaused; - }, - setBufferMax: function(value) { - bufferMax = value; - }, - getBufferMax: function() { - return bufferMax; - }, - getMetricsExt: function() { - return metricsExt; - }, - getMetricsFor: function(type) { - return metricsModel.getReadOnlyMetricsFor(type); - }, - getQualityFor: function(type) { - return abrController.getQualityFor(type, streamController.getActiveStreamInfo()); - }, - setQualityFor: function(type, value) { - abrController.setPlaybackQuality(type, streamController.getActiveStreamInfo(), value); - }, - getBitrateInfoListFor: function(type) { - var streamInfo = streamController.getActiveStreamInfo(), stream = streamController.getStreamById(streamInfo.id); - return stream.getBitrateListFor(type); - }, - setInitialBitrateFor: function(type, value) { - abrController.setInitialBitrateFor(type, value); - }, - getInitialBitrateFor: function(type) { - return abrController.getInitialBitrateFor(type); - }, - getAutoSwitchQuality: function() { - return abrController.getAutoSwitchBitrate(); - }, - setAutoSwitchQuality: function(value) { - abrController.setAutoSwitchBitrate(value); - }, - setSchedulingRules: function(newRulesCollection) { - updateRules.call(this, rulesController.SCHEDULING_RULE, newRulesCollection, true); - }, - addSchedulingRules: function(newRulesCollection) { - updateRules.call(this, rulesController.SCHEDULING_RULE, newRulesCollection, false); - }, - setABRRules: function(newRulesCollection) { - updateRules.call(this, rulesController.ABR_RULE, newRulesCollection, true); - }, - addABRRules: function(newRulesCollection) { - updateRules.call(this, rulesController.ABR_RULE, newRulesCollection, false); - }, - createProtection: function() { - return system.getObject("protectionController"); - }, - retrieveManifest: function(url, callback) { - (function(manifestUrl) { - var manifestLoader = system.getObject("manifestLoader"), uriQueryFragModel = system.getObject("uriQueryFragModel"), cbObj = {}; - cbObj[MediaPlayer.dependencies.ManifestLoader.eventList.ENAME_MANIFEST_LOADED] = function(e) { - if (!e.error) { - callback(e.data.manifest); - } else { - callback(null, e.error); - } - manifestLoader.unsubscribe(MediaPlayer.dependencies.ManifestLoader.eventList.ENAME_MANIFEST_LOADED, this); - }; - manifestLoader.subscribe(MediaPlayer.dependencies.ManifestLoader.eventList.ENAME_MANIFEST_LOADED, cbObj); - manifestLoader.load(uriQueryFragModel.parseURI(manifestUrl)); - })(url); - }, - addUTCTimingSource: function(schemeIdUri, value) { - this.removeUTCTimingSource(schemeIdUri, value); - var vo = new Dash.vo.UTCTiming(); - vo.schemeIdUri = schemeIdUri; - vo.value = value; - UTCTimingSources.push(vo); - }, - removeUTCTimingSource: function(schemeIdUri, value) { - UTCTimingSources.forEach(function(obj, idx) { - if (obj.schemeIdUri === schemeIdUri && obj.value === value) { - UTCTimingSources.splice(idx, 1); - } - }); - }, - clearDefaultUTCTimingSources: function() { - UTCTimingSources = []; - }, - restoreDefaultUTCTimingSources: function() { - this.addUTCTimingSource(DEFAULT_TIME_SOURCE_SCHEME, DEFAULT_TIME_SERVER); - }, - enableManifestDateHeaderTimeSource: function(value) { - useManifestDateHeaderTimeSource = value; - }, - attachView: function(view) { - if (!initialized) { - throw "MediaPlayer not initialized!"; - } - element = view; - videoModel = null; - if (element) { - videoModel = system.getObject("videoModel"); - videoModel.setElement(element); - } - doReset.call(this); - if (isReady.call(this)) { - doAutoPlay.call(this); - } - }, - attachSource: function(urlOrManifest, protectionCtrl, data) { - if (!initialized) { - throw "MediaPlayer not initialized!"; - } - if (typeof urlOrManifest === "string") { - this.uriQueryFragModel.reset(); - source = this.uriQueryFragModel.parseURI(urlOrManifest); - } else { - source = urlOrManifest; - } - protectionController = protectionCtrl; - protectionData = data; - doReset.call(this); - if (isReady.call(this)) { - doAutoPlay.call(this); - } - }, - reset: function() { - this.attachSource(null); - this.attachView(null); - protectionController = null; - protectionData = null; - }, - play: play, - isReady: isReady, - seek: seek, - time: time, - duration: duration, - timeAsUTC: timeAsUTC, - durationAsUTC: durationAsUTC, - getDVRWindowSize: getDVRWindowSize, - getDVRSeekOffset: getDVRSeekOffset, - formatUTC: formatUTC, - convertToTimeCode: convertToTimeCode - }; -}; - -MediaPlayer.prototype = { - constructor: MediaPlayer -}; - -MediaPlayer.dependencies = {}; - -MediaPlayer.dependencies.protection = {}; - -MediaPlayer.dependencies.protection.servers = {}; - -MediaPlayer.utils = {}; - -MediaPlayer.models = {}; - -MediaPlayer.vo = {}; - -MediaPlayer.vo.metrics = {}; - -MediaPlayer.vo.protection = {}; - -MediaPlayer.rules = {}; - -MediaPlayer.di = {}; - -MediaPlayer.events = { - METRICS_CHANGED: "metricschanged", - METRIC_CHANGED: "metricchanged", - METRIC_UPDATED: "metricupdated", - METRIC_ADDED: "metricadded", - MANIFEST_LOADED: "manifestloaded", - STREAM_SWITCH_STARTED: "streamswitchstarted", - STREAM_SWITCH_COMPLETED: "streamswitchcompleted", - STREAM_INITIALIZED: "streaminitialized", - TEXT_TRACK_ADDED: "texttrackadded", - BUFFER_LOADED: "bufferloaded", - BUFFER_EMPTY: "bufferstalled", - ERROR: "error", - LOG: "log" -}; - -MediaPlayer.di.Context = function() { - "use strict"; - var mapProtectionModel = function() { - var videoElement = document.createElement("video"); - if (MediaPlayer.models.ProtectionModel_21Jan2015.detect(videoElement)) { - this.system.mapClass("protectionModel", MediaPlayer.models.ProtectionModel_21Jan2015); - } else if (MediaPlayer.models.ProtectionModel_3Feb2014.detect(videoElement)) { - this.system.mapClass("protectionModel", MediaPlayer.models.ProtectionModel_3Feb2014); - } else if (MediaPlayer.models.ProtectionModel_01b.detect(videoElement)) { - this.system.mapClass("protectionModel", MediaPlayer.models.ProtectionModel_01b); - } else { - var debug = this.system.getObject("debug"); - debug.log("No supported version of EME detected on this user agent!"); - debug.log("Attempts to play encrypted content will fail!"); - } - }; - return { - system: undefined, - setup: function() { - this.system.autoMapOutlets = true; - this.system.mapSingleton("debug", MediaPlayer.utils.Debug); - this.system.mapSingleton("eventBus", MediaPlayer.utils.EventBus); - this.system.mapSingleton("capabilities", MediaPlayer.utils.Capabilities); - this.system.mapSingleton("DOMStorage", MediaPlayer.utils.DOMStorage); - this.system.mapClass("customTimeRanges", MediaPlayer.utils.CustomTimeRanges); - this.system.mapSingleton("virtualBuffer", MediaPlayer.utils.VirtualBuffer); - this.system.mapSingleton("textTrackExtensions", MediaPlayer.utils.TextTrackExtensions); - this.system.mapSingleton("vttParser", MediaPlayer.utils.VTTParser); - this.system.mapSingleton("ttmlParser", MediaPlayer.utils.TTMLParser); - this.system.mapSingleton("videoModel", MediaPlayer.models.VideoModel); - this.system.mapSingleton("manifestModel", MediaPlayer.models.ManifestModel); - this.system.mapSingleton("metricsModel", MediaPlayer.models.MetricsModel); - this.system.mapSingleton("uriQueryFragModel", MediaPlayer.models.URIQueryAndFragmentModel); - this.system.mapSingleton("ksPlayReady", MediaPlayer.dependencies.protection.KeySystem_PlayReady); - this.system.mapSingleton("ksWidevine", MediaPlayer.dependencies.protection.KeySystem_Widevine); - this.system.mapSingleton("ksClearKey", MediaPlayer.dependencies.protection.KeySystem_ClearKey); - this.system.mapSingleton("serverPlayReady", MediaPlayer.dependencies.protection.servers.PlayReady); - this.system.mapSingleton("serverWidevine", MediaPlayer.dependencies.protection.servers.Widevine); - this.system.mapSingleton("serverClearKey", MediaPlayer.dependencies.protection.servers.ClearKey); - this.system.mapSingleton("serverDRMToday", MediaPlayer.dependencies.protection.servers.DRMToday); - this.system.mapSingleton("requestModifierExt", MediaPlayer.dependencies.RequestModifierExtensions); - this.system.mapSingleton("textSourceBuffer", MediaPlayer.dependencies.TextSourceBuffer); - this.system.mapSingleton("mediaSourceExt", MediaPlayer.dependencies.MediaSourceExtensions); - this.system.mapSingleton("sourceBufferExt", MediaPlayer.dependencies.SourceBufferExtensions); - this.system.mapSingleton("abrController", MediaPlayer.dependencies.AbrController); - this.system.mapSingleton("errHandler", MediaPlayer.dependencies.ErrorHandler); - this.system.mapSingleton("videoExt", MediaPlayer.dependencies.VideoModelExtensions); - this.system.mapSingleton("protectionExt", MediaPlayer.dependencies.ProtectionExtensions); - this.system.mapClass("protectionController", MediaPlayer.dependencies.ProtectionController); - this.system.mapSingleton("playbackController", MediaPlayer.dependencies.PlaybackController); - mapProtectionModel.call(this); - this.system.mapSingleton("liveEdgeFinder", MediaPlayer.dependencies.LiveEdgeFinder); - this.system.mapClass("metrics", MediaPlayer.models.MetricsList); - this.system.mapClass("insufficientBufferRule", MediaPlayer.rules.InsufficientBufferRule); - this.system.mapClass("bufferOccupancyRule", MediaPlayer.rules.BufferOccupancyRule); - this.system.mapClass("throughputRule", MediaPlayer.rules.ThroughputRule); - this.system.mapSingleton("abrRulesCollection", MediaPlayer.rules.ABRRulesCollection); - this.system.mapSingleton("rulesController", MediaPlayer.rules.RulesController); - this.system.mapClass("bufferLevelRule", MediaPlayer.rules.BufferLevelRule); - this.system.mapClass("pendingRequestsRule", MediaPlayer.rules.PendingRequestsRule); - this.system.mapClass("playbackTimeRule", MediaPlayer.rules.PlaybackTimeRule); - this.system.mapClass("sameTimeRequestRule", MediaPlayer.rules.SameTimeRequestRule); - this.system.mapClass("abandonRequestRule", MediaPlayer.rules.AbandonRequestsRule); - this.system.mapSingleton("scheduleRulesCollection", MediaPlayer.rules.ScheduleRulesCollection); - this.system.mapClass("liveEdgeBinarySearchRule", MediaPlayer.rules.LiveEdgeBinarySearchRule); - this.system.mapClass("liveEdgeWithTimeSynchronizationRule", MediaPlayer.rules.LiveEdgeWithTimeSynchronizationRule); - this.system.mapSingleton("synchronizationRulesCollection", MediaPlayer.rules.SynchronizationRulesCollection); - this.system.mapSingleton("xlinkController", MediaPlayer.dependencies.XlinkController); - this.system.mapSingleton("xlinkLoader", MediaPlayer.dependencies.XlinkLoader); - this.system.mapClass("streamProcessor", MediaPlayer.dependencies.StreamProcessor); - this.system.mapClass("eventController", MediaPlayer.dependencies.EventController); - this.system.mapClass("textController", MediaPlayer.dependencies.TextController); - this.system.mapClass("bufferController", MediaPlayer.dependencies.BufferController); - this.system.mapClass("manifestLoader", MediaPlayer.dependencies.ManifestLoader); - this.system.mapSingleton("manifestUpdater", MediaPlayer.dependencies.ManifestUpdater); - this.system.mapClass("fragmentController", MediaPlayer.dependencies.FragmentController); - this.system.mapClass("fragmentLoader", MediaPlayer.dependencies.FragmentLoader); - this.system.mapClass("fragmentModel", MediaPlayer.dependencies.FragmentModel); - this.system.mapSingleton("streamController", MediaPlayer.dependencies.StreamController); - this.system.mapClass("stream", MediaPlayer.dependencies.Stream); - this.system.mapClass("scheduleController", MediaPlayer.dependencies.ScheduleController); - this.system.mapSingleton("timeSyncController", MediaPlayer.dependencies.TimeSyncController); - this.system.mapSingleton("notifier", MediaPlayer.dependencies.Notifier); - } - }; -}; - -Dash = function() { - "use strict"; - return { - modules: {}, - dependencies: {}, - vo: {}, - di: {} - }; -}(); - -Dash.di.DashContext = function() { - "use strict"; - return { - system: undefined, - setup: function() { - Dash.di.DashContext.prototype.setup.call(this); - this.system.mapClass("parser", Dash.dependencies.DashParser); - this.system.mapClass("indexHandler", Dash.dependencies.DashHandler); - this.system.mapSingleton("baseURLExt", Dash.dependencies.BaseURLExtensions); - this.system.mapClass("fragmentExt", Dash.dependencies.FragmentExtensions); - this.system.mapClass("trackController", Dash.dependencies.RepresentationController); - this.system.mapSingleton("manifestExt", Dash.dependencies.DashManifestExtensions); - this.system.mapSingleton("metricsExt", Dash.dependencies.DashMetricsExtensions); - this.system.mapSingleton("timelineConverter", Dash.dependencies.TimelineConverter); - this.system.mapSingleton("adapter", Dash.dependencies.DashAdapter); - } - }; -}; - -Dash.di.DashContext.prototype = new MediaPlayer.di.Context(); - -Dash.di.DashContext.prototype.constructor = Dash.di.DashContext; - -Dash.dependencies.DashAdapter = function() { - "use strict"; - var periods = [], adaptations = {}, getRepresentationForTrackInfo = function(trackInfo, representationController) { - return representationController.getRepresentationForQuality(trackInfo.quality); - }, getAdaptationForMediaInfo = function(mediaInfo) { - return adaptations[mediaInfo.streamInfo.id][mediaInfo.index]; - }, getPeriodForStreamInfo = function(streamInfo) { - var period, ln = periods.length, i = 0; - for (i; i < ln; i += 1) { - period = periods[i]; - if (streamInfo.id === period.id) return period; - } - return null; - }, convertRepresentationToTrackInfo = function(manifest, representation) { - var trackInfo = new MediaPlayer.vo.TrackInfo(), a = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].AdaptationSet_asArray[representation.adaptation.index], r = this.manifestExt.getRepresentationFor(representation.index, a); - trackInfo.id = representation.id; - trackInfo.quality = representation.index; - trackInfo.bandwidth = this.manifestExt.getBandwidth(r); - trackInfo.DVRWindow = representation.segmentAvailabilityRange; - trackInfo.fragmentDuration = representation.segmentDuration || (representation.segments && representation.segments.length > 0 ? representation.segments[0].duration : NaN); - trackInfo.MSETimeOffset = representation.MSETimeOffset; - trackInfo.useCalculatedLiveEdgeTime = representation.useCalculatedLiveEdgeTime; - trackInfo.mediaInfo = convertAdaptationToMediaInfo.call(this, manifest, representation.adaptation); - return trackInfo; - }, convertAdaptationToMediaInfo = function(manifest, adaptation) { - var mediaInfo = new MediaPlayer.vo.MediaInfo(), self = this, a = adaptation.period.mpd.manifest.Period_asArray[adaptation.period.index].AdaptationSet_asArray[adaptation.index]; - mediaInfo.id = adaptation.id; - mediaInfo.index = adaptation.index; - mediaInfo.type = adaptation.type; - mediaInfo.streamInfo = convertPeriodToStreamInfo.call(this, manifest, adaptation.period); - mediaInfo.trackCount = this.manifestExt.getRepresentationCount(a); - mediaInfo.lang = this.manifestExt.getLanguageForAdaptation(a); - mediaInfo.codec = this.manifestExt.getCodec(a); - mediaInfo.mimeType = this.manifestExt.getMimeType(a); - mediaInfo.contentProtection = this.manifestExt.getContentProtectionData(a); - mediaInfo.bitrateList = this.manifestExt.getBitrateListForAdaptation(a); - if (mediaInfo.contentProtection) { - mediaInfo.contentProtection.forEach(function(item) { - item.KID = self.manifestExt.getKID(item); - }); - } - mediaInfo.isText = this.manifestExt.getIsTextTrack(mediaInfo.mimeType); - return mediaInfo; - }, convertPeriodToStreamInfo = function(manifest, period) { - var streamInfo = new MediaPlayer.vo.StreamInfo(), THRESHOLD = 1; - streamInfo.id = period.id; - streamInfo.index = period.index; - streamInfo.start = period.start; - streamInfo.duration = period.duration; - streamInfo.manifestInfo = convertMpdToManifestInfo.call(this, manifest, period.mpd); - streamInfo.isLast = manifest.Period_asArray.length === 1 || Math.abs(streamInfo.start + streamInfo.duration - streamInfo.manifestInfo.duration) < THRESHOLD; - return streamInfo; - }, convertMpdToManifestInfo = function(manifest, mpd) { - var manifestInfo = new MediaPlayer.vo.ManifestInfo(); - manifestInfo.DVRWindowSize = mpd.timeShiftBufferDepth; - manifestInfo.loadedTime = mpd.manifest.loadedTime; - manifestInfo.availableFrom = mpd.availabilityStartTime; - manifestInfo.minBufferTime = mpd.manifest.minBufferTime; - manifestInfo.maxFragmentDuration = mpd.maxSegmentDuration; - manifestInfo.duration = this.manifestExt.getDuration(manifest); - manifestInfo.isDynamic = this.manifestExt.getIsDynamic(manifest); - return manifestInfo; - }, getMediaInfoForType = function(manifest, streamInfo, type) { - var periodInfo = getPeriodForStreamInfo(streamInfo), periodId = periodInfo.id, data = this.manifestExt.getAdaptationForType(manifest, streamInfo.index, type), idx; - if (!data) return null; - idx = this.manifestExt.getIndexForAdaptation(data, manifest, streamInfo.index); - adaptations[periodId] = adaptations[periodId] || this.manifestExt.getAdaptationsForPeriod(manifest, periodInfo); - return convertAdaptationToMediaInfo.call(this, manifest, adaptations[periodId][idx]); - }, getStreamsInfoFromManifest = function(manifest) { - var mpd, streams = [], ln, i; - if (!manifest) return null; - mpd = this.manifestExt.getMpd(manifest); - periods = this.manifestExt.getRegularPeriods(manifest, mpd); - mpd.checkTime = this.manifestExt.getCheckTime(manifest, periods[0]); - adaptations = {}; - ln = periods.length; - for (i = 0; i < ln; i += 1) { - streams.push(convertPeriodToStreamInfo.call(this, manifest, periods[i])); - } - return streams; - }, getMpdInfo = function(manifest) { - var mpd = this.manifestExt.getMpd(manifest); - return convertMpdToManifestInfo.call(this, manifest, mpd); - }, getInitRequest = function(streamProcessor, quality) { - var representation = streamProcessor.trackController.getRepresentationForQuality(quality); - return streamProcessor.indexHandler.getInitRequest(representation); - }, getNextFragmentRequest = function(streamProcessor, trackInfo) { - var representation = getRepresentationForTrackInfo(trackInfo, streamProcessor.trackController); - return streamProcessor.indexHandler.getNextSegmentRequest(representation); - }, getFragmentRequestForTime = function(streamProcessor, trackInfo, time, options) { - var representation = getRepresentationForTrackInfo(trackInfo, streamProcessor.trackController); - return streamProcessor.indexHandler.getSegmentRequestForTime(representation, time, options); - }, generateFragmentRequestForTime = function(streamProcessor, trackInfo, time) { - var representation = getRepresentationForTrackInfo(trackInfo, streamProcessor.trackController); - return streamProcessor.indexHandler.generateSegmentRequestForTime(representation, time); - }, getIndexHandlerTime = function(streamProcessor) { - return streamProcessor.indexHandler.getCurrentTime(); - }, setIndexHandlerTime = function(streamProcessor, value) { - return streamProcessor.indexHandler.setCurrentTime(value); - }, updateData = function(manifest, streamProcessor) { - var periodInfo = getPeriodForStreamInfo(streamProcessor.getStreamInfo()), mediaInfo = streamProcessor.getMediaInfo(), adaptation = getAdaptationForMediaInfo(mediaInfo), type = streamProcessor.getType(), id, data; - id = mediaInfo.id; - data = id ? this.manifestExt.getAdaptationForId(id, manifest, periodInfo.index) : this.manifestExt.getAdaptationForIndex(mediaInfo.index, manifest, periodInfo.index); - streamProcessor.trackController.updateData(data, adaptation, type); - }, getTrackInfoForQuality = function(manifest, representationController, quality) { - var representation = representationController.getRepresentationForQuality(quality); - return representation ? convertRepresentationToTrackInfo.call(this, manifest, representation) : null; - }, getCurrentTrackInfo = function(manifest, representationController) { - var representation = representationController.getCurrentRepresentation(); - return representation ? convertRepresentationToTrackInfo.call(this, manifest, representation) : null; - }, getEvent = function(eventBox, eventStreams, startTime) { - var event = new Dash.vo.Event(), schemeIdUri = eventBox[0], value = eventBox[1], timescale = eventBox[2], presentationTimeDelta = eventBox[3], duration = eventBox[4], id = eventBox[5], messageData = eventBox[6], presentationTime = startTime * timescale + presentationTimeDelta; - if (!eventStreams[schemeIdUri]) return null; - event.eventStream = eventStreams[schemeIdUri]; - event.eventStream.value = value; - event.eventStream.timescale = timescale; - event.duration = duration; - event.id = id; - event.presentationTime = presentationTime; - event.messageData = messageData; - event.presentationTimeDelta = presentationTimeDelta; - return event; - }, getEventsFor = function(manifest, info, streamProcessor) { - var events = []; - if (info instanceof MediaPlayer.vo.StreamInfo) { - events = this.manifestExt.getEventsForPeriod(manifest, getPeriodForStreamInfo(info)); - } else if (info instanceof MediaPlayer.vo.MediaInfo) { - events = this.manifestExt.getEventStreamForAdaptationSet(manifest, getAdaptationForMediaInfo(info)); - } else if (info instanceof MediaPlayer.vo.TrackInfo) { - events = this.manifestExt.getEventStreamForRepresentation(manifest, getRepresentationForTrackInfo(info, streamProcessor.trackController)); - } - return events; - }; - return { - system: undefined, - manifestExt: undefined, - timelineConverter: undefined, - metricsList: { - TCP_CONNECTION: "TcpConnection", - HTTP_REQUEST: "HttpRequest", - HTTP_REQUEST_TRACE: "HttpRequestTrace", - TRACK_SWITCH: "RepresentationSwitch", - BUFFER_LEVEL: "BufferLevel", - BUFFER_STATE: "BufferState", - DVR_INFO: "DVRInfo", - DROPPED_FRAMES: "DroppedFrames", - SCHEDULING_INFO: "SchedulingInfo", - MANIFEST_UPDATE: "ManifestUpdate", - MANIFEST_UPDATE_STREAM_INFO: "ManifestUpdatePeriodInfo", - MANIFEST_UPDATE_TRACK_INFO: "ManifestUpdateRepresentationInfo", - PLAY_LIST: "PlayList", - PLAY_LIST_TRACE: "PlayListTrace" - }, - convertDataToTrack: convertRepresentationToTrackInfo, - convertDataToMedia: convertAdaptationToMediaInfo, - convertDataToStream: convertPeriodToStreamInfo, - getDataForTrack: getRepresentationForTrackInfo, - getDataForMedia: getAdaptationForMediaInfo, - getDataForStream: getPeriodForStreamInfo, - getStreamsInfo: getStreamsInfoFromManifest, - getManifestInfo: getMpdInfo, - getMediaInfoForType: getMediaInfoForType, - getCurrentTrackInfo: getCurrentTrackInfo, - getTrackInfoForQuality: getTrackInfoForQuality, - updateData: updateData, - getInitRequest: getInitRequest, - getNextFragmentRequest: getNextFragmentRequest, - getFragmentRequestForTime: getFragmentRequestForTime, - generateFragmentRequestForTime: generateFragmentRequestForTime, - getIndexHandlerTime: getIndexHandlerTime, - setIndexHandlerTime: setIndexHandlerTime, - getEventsFor: getEventsFor, - getEvent: getEvent, - reset: function() { - periods = []; - adaptations = {}; - } - }; -}; - -Dash.dependencies.DashAdapter.prototype = { - constructor: Dash.dependencies.DashAdapter -}; - -Dash.create = function(video, source, context) { - if (typeof video === "undefined" || video.nodeName != "VIDEO") return null; - var player, videoID = video.id || video.name || "video element"; - context = context || new Dash.di.DashContext(); - source = source || [].slice.call(video.querySelectorAll("source")).filter(function(s) { - return s.type == Dash.supportedManifestMimeTypes.mimeType; - })[0]; - if (source === undefined && video.src) { - source = document.createElement("source"); - source.src = video.src; - } else if (source === undefined && !video.src) { - return null; - } - player = new MediaPlayer(context); - player.startup(); - player.attachView(video); - player.setAutoPlay(video.autoplay); - player.attachSource(source.src); - player.getDebug().log("Converted " + videoID + " to dash.js player and added content: " + source.src); - return player; -}; - -Dash.createAll = function(className, scope, context) { - var aPlayers = []; - className = className || ".dashjs-player"; - scope = scope || document; - context = context || new Dash.di.DashContext(); - var videos = scope.querySelectorAll(className); - for (var i = 0; i < videos.length; i++) { - var player = Dash.create(videos[i], undefined, context); - aPlayers.push(player); - } - return aPlayers; -}; - -Dash.supportedManifestMimeTypes = { - mimeType: "application/dash+xml" -}; - -Dash.dependencies.DashHandler = function() { - "use strict"; - var index = -1, requestedTime, isDynamic, type, currentTime = 0, absUrl = new RegExp("^(?:(?:[a-z]+:)?/)?/", "i"), zeroPadToLength = function(numStr, minStrLength) { - while (numStr.length < minStrLength) { - numStr = "0" + numStr; - } - return numStr; - }, replaceTokenForTemplate = function(url, token, value) { - var startPos, endPos, tokenLen = token.length, formatTag = "%0", formatTagLen = formatTag.length, formatTagPos, specifier, width, paddedValue; - while (true) { - startPos = url.indexOf("$" + token); - if (startPos < 0) { - return url; - } - endPos = url.indexOf("$", startPos + tokenLen); - if (endPos < 0) { - return url; - } - formatTagPos = url.indexOf(formatTag, startPos + tokenLen); - if (formatTagPos > startPos && formatTagPos < endPos) { - specifier = url.charAt(endPos - 1); - width = parseInt(url.substring(formatTagPos + formatTagLen, endPos - 1), 10); - switch (specifier) { - case "d": - case "i": - case "u": - paddedValue = zeroPadToLength(value.toString(), width); - break; - - case "x": - paddedValue = zeroPadToLength(value.toString(16), width); - break; - - case "X": - paddedValue = zeroPadToLength(value.toString(16), width).toUpperCase(); - break; - - case "o": - paddedValue = zeroPadToLength(value.toString(8), width); - break; - - default: - this.log("Unsupported/invalid IEEE 1003.1 format identifier string in URL"); - return url; - } - } else { - paddedValue = value; - } - url = url.substring(0, startPos) + paddedValue + url.substring(endPos + 1); - } - }, unescapeDollarsInTemplate = function(url) { - return url.split("$$").join("$"); - }, replaceIDForTemplate = function(url, value) { - if (value === null || url.indexOf("$RepresentationID$") === -1) { - return url; - } - var v = value.toString(); - return url.split("$RepresentationID$").join(v); - }, getNumberForSegment = function(segment, segmentIndex) { - return segment.representation.startNumber + segmentIndex; - }, getRequestUrl = function(destination, representation) { - var baseURL = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].BaseURL, url; - if (destination === baseURL) { - url = destination; - } else if (absUrl.test(destination)) { - url = destination; - } else { - url = baseURL + destination; - } - return url; - }, generateInitRequest = function(representation, mediaType) { - var self = this, period, request = new MediaPlayer.vo.FragmentRequest(), presentationStartTime; - period = representation.adaptation.period; - request.mediaType = mediaType; - request.type = "Initialization Segment"; - request.url = getRequestUrl(representation.initialization, representation); - request.range = representation.range; - presentationStartTime = period.start; - request.availabilityStartTime = self.timelineConverter.calcAvailabilityStartTimeFromPresentationTime(presentationStartTime, representation.adaptation.period.mpd, isDynamic); - request.availabilityEndTime = self.timelineConverter.calcAvailabilityEndTimeFromPresentationTime(presentationStartTime + period.duration, period.mpd, isDynamic); - request.quality = representation.index; - return request; - }, getInit = function(representation) { - var self = this, request; - if (!representation) return null; - request = generateInitRequest.call(self, representation, type); - return request; - }, isMediaFinished = function(representation) { - var sDuration, period = representation.adaptation.period, isFinished = false, seg, fTime; - if (index < 0) { - isFinished = false; - } else if (isDynamic || index < representation.availableSegmentsNumber) { - seg = getSegmentByIndex(index, representation); - if (seg) { - fTime = seg.presentationStartTime - period.start; - sDuration = representation.adaptation.period.duration; - this.log(representation.segmentInfoType + ": " + fTime + " / " + sDuration); - isFinished = fTime >= sDuration; - } - } else { - isFinished = true; - } - return isFinished; - }, getIndexBasedSegment = function(representation, index) { - var self = this, seg, duration, presentationStartTime, presentationEndTime; - duration = representation.segmentDuration; - if (isNaN(duration)) { - duration = representation.adaptation.period.duration; - } - presentationStartTime = representation.adaptation.period.start + index * duration; - presentationEndTime = presentationStartTime + duration; - seg = new Dash.vo.Segment(); - seg.representation = representation; - seg.duration = duration; - seg.presentationStartTime = presentationStartTime; - seg.mediaStartTime = self.timelineConverter.calcMediaTimeFromPresentationTime(seg.presentationStartTime, representation); - seg.availabilityStartTime = self.timelineConverter.calcAvailabilityStartTimeFromPresentationTime(seg.presentationStartTime, representation.adaptation.period.mpd, isDynamic); - seg.availabilityEndTime = self.timelineConverter.calcAvailabilityEndTimeFromPresentationTime(presentationEndTime, representation.adaptation.period.mpd, isDynamic); - seg.wallStartTime = self.timelineConverter.calcWallTimeForSegment(seg, isDynamic); - seg.replacementNumber = getNumberForSegment(seg, index); - seg.availabilityIdx = index; - return seg; - }, getSegmentsFromTimeline = function(representation) { - var self = this, template = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].SegmentTemplate, timeline = template.SegmentTimeline, isAvailableSegmentNumberCalculated = representation.availableSegmentsNumber > 0, maxSegmentsAhead = 10, segments = [], fragments, frag, i, len, j, repeat, repeatEndTime, nextFrag, time = 0, scaledTime = 0, availabilityIdx = -1, calculatedRange, hasEnoughSegments, requiredMediaTime, startIdx, endIdx, fTimescale, createSegment = function(s) { - return getTimeBasedSegment.call(self, representation, time, s.d, fTimescale, template.media, s.mediaRange, availabilityIdx); - }; - fTimescale = representation.timescale; - fragments = timeline.S_asArray; - calculatedRange = decideSegmentListRangeForTimeline.call(self, representation); - if (calculatedRange) { - startIdx = calculatedRange.start; - endIdx = calculatedRange.end; - } else { - requiredMediaTime = self.timelineConverter.calcMediaTimeFromPresentationTime(requestedTime || 0, representation); - } - for (i = 0, len = fragments.length; i < len; i += 1) { - frag = fragments[i]; - repeat = 0; - if (frag.hasOwnProperty("r")) { - repeat = frag.r; - } - if (frag.hasOwnProperty("t")) { - time = frag.t; - scaledTime = time / fTimescale; - } - if (repeat < 0) { - nextFrag = fragments[i + 1]; - if (nextFrag && nextFrag.hasOwnProperty("t")) { - repeatEndTime = nextFrag.t / fTimescale; - } else { - repeatEndTime = self.timelineConverter.calcMediaTimeFromPresentationTime(representation.segmentAvailabilityRange.end, representation); - representation.segmentDuration = frag.d / fTimescale; - } - repeat = Math.ceil((repeatEndTime - scaledTime) / (frag.d / fTimescale)) - 1; - } - if (hasEnoughSegments) { - if (isAvailableSegmentNumberCalculated) break; - availabilityIdx += repeat + 1; - continue; - } - for (j = 0; j <= repeat; j += 1) { - availabilityIdx += 1; - if (calculatedRange) { - if (availabilityIdx > endIdx) { - hasEnoughSegments = true; - if (isAvailableSegmentNumberCalculated) break; - continue; - } - if (availabilityIdx >= startIdx) { - segments.push(createSegment.call(self, frag)); - } - } else { - if (segments.length > maxSegmentsAhead) { - hasEnoughSegments = true; - if (isAvailableSegmentNumberCalculated) break; - continue; - } - if (scaledTime >= requiredMediaTime - frag.d / fTimescale) { - segments.push(createSegment.call(self, frag)); - } - } - time += frag.d; - scaledTime = time / fTimescale; - } - } - if (!isAvailableSegmentNumberCalculated) { - representation.availableSegmentsNumber = availabilityIdx + 1; - } - return segments; - }, getSegmentsFromTemplate = function(representation) { - var segments = [], self = this, template = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].SegmentTemplate, duration = representation.segmentDuration, availabilityWindow = representation.segmentAvailabilityRange, segmentRange, periodSegIdx, startIdx, endIdx, seg = null, start, url = null; - start = representation.startNumber; - if (isNaN(duration) && !isDynamic) { - segmentRange = { - start: start, - end: start - }; - } else { - segmentRange = decideSegmentListRangeForTemplate.call(self, representation); - } - startIdx = segmentRange.start; - endIdx = segmentRange.end; - for (periodSegIdx = startIdx; periodSegIdx <= endIdx; periodSegIdx += 1) { - seg = getIndexBasedSegment.call(self, representation, periodSegIdx); - seg.replacementTime = (start + periodSegIdx - 1) * representation.segmentDuration; - url = template.media; - url = replaceTokenForTemplate(url, "Number", seg.replacementNumber); - url = replaceTokenForTemplate(url, "Time", seg.replacementTime); - seg.media = url; - segments.push(seg); - seg = null; - } - if (isNaN(duration)) { - representation.availableSegmentsNumber = 1; - } else { - representation.availableSegmentsNumber = Math.ceil((availabilityWindow.end - availabilityWindow.start) / duration); - } - return segments; - }, decideSegmentListRangeForTemplate = function(representation) { - var self = this, duration = representation.segmentDuration, minBufferTime = representation.adaptation.period.mpd.manifest.minBufferTime, availabilityWindow = representation.segmentAvailabilityRange, periodRelativeRange = { - start: self.timelineConverter.calcPeriodRelativeTimeFromMpdRelativeTime(representation, availabilityWindow.start), - end: self.timelineConverter.calcPeriodRelativeTimeFromMpdRelativeTime(representation, availabilityWindow.end) - }, originAvailabilityTime = NaN, originSegment = null, currentSegmentList = representation.segments, availabilityLowerLimit = 2 * duration, availabilityUpperLimit = Math.max(2 * minBufferTime, 10 * duration), start, end, range; - if (!periodRelativeRange) { - periodRelativeRange = self.timelineConverter.calcSegmentAvailabilityRange(representation, isDynamic); - } - periodRelativeRange.start = Math.max(periodRelativeRange.start, 0); - if (isDynamic && !self.timelineConverter.isTimeSyncCompleted()) { - start = Math.floor(periodRelativeRange.start / duration); - end = Math.floor(periodRelativeRange.end / duration); - range = { - start: start, - end: end - }; - return range; - } - if (currentSegmentList && currentSegmentList.length > 0) { - originSegment = getSegmentByIndex(index, representation); - originAvailabilityTime = originSegment ? self.timelineConverter.calcPeriodRelativeTimeFromMpdRelativeTime(representation, originSegment.presentationStartTime) : index > 0 ? index * duration : self.timelineConverter.calcPeriodRelativeTimeFromMpdRelativeTime(representation, requestedTime || currentSegmentList[0].presentationStartTime); - } else { - originAvailabilityTime = index > 0 ? index * duration : isDynamic ? periodRelativeRange.end : periodRelativeRange.start; - } - start = Math.floor(Math.max(originAvailabilityTime - availabilityLowerLimit, periodRelativeRange.start) / duration); - end = Math.floor(Math.min(start + availabilityUpperLimit / duration, periodRelativeRange.end / duration)); - range = { - start: start, - end: end - }; - return range; - }, decideSegmentListRangeForTimeline = function() { - var availabilityLowerLimit = 2, availabilityUpperLimit = 10, firstIdx = 0, lastIdx = Number.POSITIVE_INFINITY, start, end, range; - if (isDynamic && !this.timelineConverter.isTimeSyncCompleted()) { - range = { - start: firstIdx, - end: lastIdx - }; - return range; - } - if (!isDynamic && requestedTime || index < 0) return null; - start = Math.max(index - availabilityLowerLimit, firstIdx); - end = Math.min(index + availabilityUpperLimit, lastIdx); - range = { - start: start, - end: end - }; - return range; - }, getTimeBasedSegment = function(representation, time, duration, fTimescale, url, range, index) { - var self = this, scaledTime = time / fTimescale, scaledDuration = Math.min(duration / fTimescale, representation.adaptation.period.mpd.maxSegmentDuration), presentationStartTime, presentationEndTime, seg; - presentationStartTime = self.timelineConverter.calcPresentationTimeFromMediaTime(scaledTime, representation); - presentationEndTime = presentationStartTime + scaledDuration; - seg = new Dash.vo.Segment(); - seg.representation = representation; - seg.duration = scaledDuration; - seg.mediaStartTime = scaledTime; - seg.presentationStartTime = presentationStartTime; - seg.availabilityStartTime = representation.adaptation.period.mpd.manifest.loadedTime; - seg.availabilityEndTime = self.timelineConverter.calcAvailabilityEndTimeFromPresentationTime(presentationEndTime, representation.adaptation.period.mpd, isDynamic); - seg.wallStartTime = self.timelineConverter.calcWallTimeForSegment(seg, isDynamic); - seg.replacementTime = time; - seg.replacementNumber = getNumberForSegment(seg, index); - url = replaceTokenForTemplate(url, "Number", seg.replacementNumber); - url = replaceTokenForTemplate(url, "Time", seg.replacementTime); - seg.media = url; - seg.mediaRange = range; - seg.availabilityIdx = index; - return seg; - }, getSegmentsFromList = function(representation) { - var self = this, segments = [], list = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].SegmentList, baseURL = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].BaseURL, len = list.SegmentURL_asArray.length, periodSegIdx, seg, s, range, startIdx, endIdx, start; - start = representation.startNumber; - range = decideSegmentListRangeForTemplate.call(self, representation); - startIdx = Math.max(range.start, 0); - endIdx = Math.min(range.end, list.SegmentURL_asArray.length - 1); - for (periodSegIdx = startIdx; periodSegIdx <= endIdx; periodSegIdx += 1) { - s = list.SegmentURL_asArray[periodSegIdx]; - seg = getIndexBasedSegment.call(self, representation, periodSegIdx); - seg.replacementTime = (start + periodSegIdx - 1) * representation.segmentDuration; - seg.media = s.media ? s.media : baseURL; - seg.mediaRange = s.mediaRange; - seg.index = s.index; - seg.indexRange = s.indexRange; - segments.push(seg); - seg = null; - } - representation.availableSegmentsNumber = len; - return segments; - }, getSegments = function(representation) { - var segments, self = this, type = representation.segmentInfoType; - if (type === "SegmentBase" || type === "BaseURL" || !isSegmentListUpdateRequired.call(self, representation)) { - segments = representation.segments; - } else { - if (type === "SegmentTimeline") { - segments = getSegmentsFromTimeline.call(self, representation); - } else if (type === "SegmentTemplate") { - segments = getSegmentsFromTemplate.call(self, representation); - } else if (type === "SegmentList") { - segments = getSegmentsFromList.call(self, representation); - } - onSegmentListUpdated.call(self, representation, segments); - } - return segments; - }, onSegmentListUpdated = function(representation, segments) { - var lastIdx, liveEdge, metrics, lastSegment; - representation.segments = segments; - lastIdx = segments.length - 1; - if (isDynamic && isNaN(this.timelineConverter.getExpectedLiveEdge())) { - lastSegment = segments[lastIdx]; - liveEdge = lastSegment.presentationStartTime; - metrics = this.metricsModel.getMetricsFor("stream"); - this.timelineConverter.setExpectedLiveEdge(liveEdge); - this.metricsModel.updateManifestUpdateInfo(this.metricsExt.getCurrentManifestUpdate(metrics), { - presentationStartTime: liveEdge - }); - } - }, updateSegmentList = function(representation) { - var self = this; - if (!representation) { - throw new Error("no representation"); - } - representation.segments = null; - getSegments.call(self, representation); - return representation; - }, updateRepresentation = function(representation, keepIdx) { - var self = this, hasInitialization = representation.initialization, hasSegments = representation.segmentInfoType !== "BaseURL" && representation.segmentInfoType !== "SegmentBase", error; - if (!representation.segmentDuration && !representation.segments) { - updateSegmentList.call(self, representation); - } - representation.segmentAvailabilityRange = null; - representation.segmentAvailabilityRange = self.timelineConverter.calcSegmentAvailabilityRange(representation, isDynamic); - if (representation.segmentAvailabilityRange.end < representation.segmentAvailabilityRange.start && !representation.useCalculatedLiveEdgeTime) { - error = new MediaPlayer.vo.Error(Dash.dependencies.DashHandler.SEGMENTS_UNAVAILABLE_ERROR_CODE, "no segments are available yet", { - availabilityDelay: Math.abs(representation.segmentAvailabilityRange.end) - }); - self.notify(Dash.dependencies.DashHandler.eventList.ENAME_REPRESENTATION_UPDATED, { - representation: representation - }, error); - return; - } - if (!keepIdx) index = -1; - if (representation.segmentDuration) { - updateSegmentList.call(self, representation); - } - if (!hasInitialization) { - self.baseURLExt.loadInitialization(representation); - } - if (!hasSegments) { - self.baseURLExt.loadSegments(representation, type, representation.indexRange); - } - if (hasInitialization && hasSegments) { - self.notify(Dash.dependencies.DashHandler.eventList.ENAME_REPRESENTATION_UPDATED, { - representation: representation - }); - } - }, getIndexForSegments = function(time, representation, timeThreshold) { - var segments = representation.segments, ln = segments ? segments.length : null, idx = -1, epsilon, frag, ft, fd, i; - if (segments && ln > 0) { - for (i = 0; i < ln; i += 1) { - frag = segments[i]; - ft = frag.presentationStartTime; - fd = frag.duration; - epsilon = timeThreshold === undefined || timeThreshold === null ? fd / 2 : timeThreshold; - if (time + epsilon >= ft && time - epsilon < ft + fd) { - idx = frag.availabilityIdx; - break; - } - } - } - return idx; - }, getSegmentByIndex = function(index, representation) { - if (!representation || !representation.segments) return null; - var ln = representation.segments.length, seg, i; - for (i = 0; i < ln; i += 1) { - seg = representation.segments[i]; - if (seg.availabilityIdx === index) { - return seg; - } - } - return null; - }, isSegmentListUpdateRequired = function(representation) { - var updateRequired = false, segments = representation.segments, upperIdx, lowerIdx; - if (!segments || segments.length === 0) { - updateRequired = true; - } else { - lowerIdx = segments[0].availabilityIdx; - upperIdx = segments[segments.length - 1].availabilityIdx; - updateRequired = index < lowerIdx || index > upperIdx; - } - return updateRequired; - }, getRequestForSegment = function(segment) { - if (segment === null || segment === undefined) { - return null; - } - var request = new MediaPlayer.vo.FragmentRequest(), representation = segment.representation, bandwidth = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].bandwidth, url; - url = getRequestUrl(segment.media, representation); - url = replaceTokenForTemplate(url, "Number", segment.replacementNumber); - url = replaceTokenForTemplate(url, "Time", segment.replacementTime); - url = replaceTokenForTemplate(url, "Bandwidth", bandwidth); - url = replaceIDForTemplate(url, representation.id); - url = unescapeDollarsInTemplate(url); - request.mediaType = type; - request.type = "Media Segment"; - request.url = url; - request.range = segment.mediaRange; - request.startTime = segment.presentationStartTime; - request.duration = segment.duration; - request.timescale = representation.timescale; - request.availabilityStartTime = segment.availabilityStartTime; - request.availabilityEndTime = segment.availabilityEndTime; - request.wallStartTime = segment.wallStartTime; - request.quality = representation.index; - request.index = segment.availabilityIdx; - return request; - }, getForTime = function(representation, time, options) { - var request, segment, finished, idx = index, keepIdx = options ? options.keepIdx : false, timeThreshold = options ? options.timeThreshold : null, ignoreIsFinished = options && options.ignoreIsFinished ? true : false, self = this; - if (!representation) { - return null; - } - requestedTime = time; - self.log("Getting the request for time: " + time); - index = getIndexForSegments.call(self, time, representation, timeThreshold); - getSegments.call(self, representation); - if (index < 0) { - index = getIndexForSegments.call(self, time, representation, timeThreshold); - } - self.log("Index for time " + time + " is " + index); - finished = !ignoreIsFinished ? isMediaFinished.call(self, representation) : false; - if (finished) { - request = new MediaPlayer.vo.FragmentRequest(); - request.action = request.ACTION_COMPLETE; - request.index = index; - request.mediaType = type; - self.log("Signal complete."); - self.log(request); - } else { - segment = getSegmentByIndex(index, representation); - request = getRequestForSegment.call(self, segment); - } - if (keepIdx) { - index = idx; - } - return request; - }, generateForTime = function(representation, time) { - var step = (representation.segmentAvailabilityRange.end - representation.segmentAvailabilityRange.start) / 2; - representation.segments = null; - representation.segmentAvailabilityRange = { - start: time - step, - end: time + step - }; - return getForTime.call(this, representation, time, { - keepIdx: false, - ignoreIsFinished: true - }); - }, getNext = function(representation) { - var request, segment, finished, idx, self = this; - if (!representation) { - return null; - } - if (index === -1) { - throw "You must call getSegmentRequestForTime first."; - } - requestedTime = null; - index += 1; - idx = index; - finished = isMediaFinished.call(self, representation); - if (finished) { - request = new MediaPlayer.vo.FragmentRequest(); - request.action = request.ACTION_COMPLETE; - request.index = idx; - request.mediaType = type; - self.log("Signal complete."); - } else { - getSegments.call(self, representation); - segment = getSegmentByIndex(idx, representation); - request = getRequestForSegment.call(self, segment); - } - return request; - }, onInitializationLoaded = function(e) { - var representation = e.data.representation; - if (!representation.segments) return; - this.notify(Dash.dependencies.DashHandler.eventList.ENAME_REPRESENTATION_UPDATED, { - representation: representation - }); - }, onSegmentsLoaded = function(e) { - if (e.error || type !== e.data.mediaType) return; - var self = this, fragments = e.data.segments, representation = e.data.representation, i, len, s, segments = [], count = 0, seg; - for (i = 0, len = fragments.length; i < len; i += 1) { - s = fragments[i]; - seg = getTimeBasedSegment.call(self, representation, s.startTime, s.duration, s.timescale, s.media, s.mediaRange, count); - segments.push(seg); - seg = null; - count += 1; - } - representation.segmentAvailabilityRange = { - start: segments[0].presentationStartTime, - end: segments[len - 1].presentationStartTime - }; - representation.availableSegmentsNumber = len; - onSegmentListUpdated.call(self, representation, segments); - if (!representation.initialization) return; - this.notify(Dash.dependencies.DashHandler.eventList.ENAME_REPRESENTATION_UPDATED, { - representation: representation - }); - }; - return { - log: undefined, - baseURLExt: undefined, - timelineConverter: undefined, - metricsModel: undefined, - metricsExt: undefined, - notify: undefined, - subscribe: undefined, - unsubscribe: undefined, - setup: function() { - this[Dash.dependencies.BaseURLExtensions.eventList.ENAME_INITIALIZATION_LOADED] = onInitializationLoaded; - this[Dash.dependencies.BaseURLExtensions.eventList.ENAME_SEGMENTS_LOADED] = onSegmentsLoaded; - }, - initialize: function(streamProcessor) { - this.subscribe(Dash.dependencies.DashHandler.eventList.ENAME_REPRESENTATION_UPDATED, streamProcessor.trackController); - type = streamProcessor.getType(); - this.setMediaType(type); - isDynamic = streamProcessor.isDynamic(); - this.streamProcessor = streamProcessor; - }, - getType: function() { - return type; - }, - setType: function(value) { - type = value; - }, - getIsDynamic: function() { - return isDynamic; - }, - setIsDynamic: function(value) { - isDynamic = value; - }, - setCurrentTime: function(value) { - currentTime = value; - }, - getCurrentTime: function() { - return currentTime; - }, - reset: function() { - currentTime = 0; - requestedTime = undefined; - index = -1; - isDynamic = undefined; - this.unsubscribe(Dash.dependencies.DashHandler.eventList.ENAME_REPRESENTATION_UPDATED, this.streamProcessor.trackController); - }, - getInitRequest: getInit, - getSegmentRequestForTime: getForTime, - getNextSegmentRequest: getNext, - generateSegmentRequestForTime: generateForTime, - updateRepresentation: updateRepresentation - }; -}; - -Dash.dependencies.DashHandler.prototype = { - constructor: Dash.dependencies.DashHandler -}; - -Dash.dependencies.DashHandler.SEGMENTS_UNAVAILABLE_ERROR_CODE = 1; - -Dash.dependencies.DashHandler.eventList = { - ENAME_REPRESENTATION_UPDATED: "representationUpdated" -}; - -Dash.dependencies.DashParser = function() { - "use strict"; - var SECONDS_IN_YEAR = 365 * 24 * 60 * 60, SECONDS_IN_MONTH = 30 * 24 * 60 * 60, SECONDS_IN_DAY = 24 * 60 * 60, SECONDS_IN_HOUR = 60 * 60, SECONDS_IN_MIN = 60, MINUTES_IN_HOUR = 60, MILLISECONDS_IN_SECONDS = 1e3, durationRegex = /^([-])?P(([\d.]*)Y)?(([\d.]*)M)?(([\d.]*)D)?T?(([\d.]*)H)?(([\d.]*)M)?(([\d.]*)S)?/, datetimeRegex = /^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2})(?::([0-9]*)(\.[0-9]*)?)?(?:([+-])([0-9]{2})([0-9]{2}))?/, numericRegex = /^[-+]?[0-9]+[.]?[0-9]*([eE][-+]?[0-9]+)?$/, matchers = [ { - type: "duration", - test: function(attr) { - var attributeList = [ "minBufferTime", "mediaPresentationDuration", "minimumUpdatePeriod", "timeShiftBufferDepth", "maxSegmentDuration", "maxSubsegmentDuration", "suggestedPresentationDelay", "start", "starttime", "duration" ], len = attributeList.length; - for (var i = 0; i < len; i++) { - if (attr.nodeName === attributeList[i]) { - return durationRegex.test(attr.value); - } - } - return false; - }, - converter: function(str) { - var match = durationRegex.exec(str); - var result = parseFloat(match[2] || 0) * SECONDS_IN_YEAR + parseFloat(match[4] || 0) * SECONDS_IN_MONTH + parseFloat(match[6] || 0) * SECONDS_IN_DAY + parseFloat(match[8] || 0) * SECONDS_IN_HOUR + parseFloat(match[10] || 0) * SECONDS_IN_MIN + parseFloat(match[12] || 0); - if (match[1] !== undefined) { - result = -result; - } - return result; - } - }, { - type: "datetime", - test: function(attr) { - return datetimeRegex.test(attr.value); - }, - converter: function(str) { - var match = datetimeRegex.exec(str), utcDate; - utcDate = Date.UTC(parseInt(match[1], 10), parseInt(match[2], 10) - 1, parseInt(match[3], 10), parseInt(match[4], 10), parseInt(match[5], 10), match[6] && parseInt(match[6], 10) || 0, match[7] && parseFloat(match[7]) * MILLISECONDS_IN_SECONDS || 0); - if (match[9] && match[10]) { - var timezoneOffset = parseInt(match[9], 10) * MINUTES_IN_HOUR + parseInt(match[10], 10); - utcDate += (match[8] === "+" ? -1 : +1) * timezoneOffset * SECONDS_IN_MIN * MILLISECONDS_IN_SECONDS; - } - return new Date(utcDate); - } - }, { - type: "numeric", - test: function(attr) { - return numericRegex.test(attr.value); - }, - converter: function(str) { - return parseFloat(str); - } - } ], getCommonValuesMap = function() { - var adaptationSet, representation, subRepresentation, common; - common = [ { - name: "profiles", - merge: false - }, { - name: "width", - merge: false - }, { - name: "height", - merge: false - }, { - name: "sar", - merge: false - }, { - name: "frameRate", - merge: false - }, { - name: "audioSamplingRate", - merge: false - }, { - name: "mimeType", - merge: false - }, { - name: "segmentProfiles", - merge: false - }, { - name: "codecs", - merge: false - }, { - name: "maximumSAPPeriod", - merge: false - }, { - name: "startsWithSap", - merge: false - }, { - name: "maxPlayoutRate", - merge: false - }, { - name: "codingDependency", - merge: false - }, { - name: "scanType", - merge: false - }, { - name: "FramePacking", - merge: true - }, { - name: "AudioChannelConfiguration", - merge: true - }, { - name: "ContentProtection", - merge: true - } ]; - adaptationSet = {}; - adaptationSet.name = "AdaptationSet"; - adaptationSet.isRoot = false; - adaptationSet.isArray = true; - adaptationSet.parent = null; - adaptationSet.children = []; - adaptationSet.properties = common; - representation = {}; - representation.name = "Representation"; - representation.isRoot = false; - representation.isArray = true; - representation.parent = adaptationSet; - representation.children = []; - representation.properties = common; - adaptationSet.children.push(representation); - subRepresentation = {}; - subRepresentation.name = "SubRepresentation"; - subRepresentation.isRoot = false; - subRepresentation.isArray = true; - subRepresentation.parent = representation; - subRepresentation.children = []; - subRepresentation.properties = common; - representation.children.push(subRepresentation); - return adaptationSet; - }, getSegmentValuesMap = function() { - var period, adaptationSet, representation, common; - common = [ { - name: "SegmentBase", - merge: true - }, { - name: "SegmentTemplate", - merge: true - }, { - name: "SegmentList", - merge: true - } ]; - period = {}; - period.name = "Period"; - period.isRoot = false; - period.isArray = true; - period.parent = null; - period.children = []; - period.properties = common; - adaptationSet = {}; - adaptationSet.name = "AdaptationSet"; - adaptationSet.isRoot = false; - adaptationSet.isArray = true; - adaptationSet.parent = period; - adaptationSet.children = []; - adaptationSet.properties = common; - period.children.push(adaptationSet); - representation = {}; - representation.name = "Representation"; - representation.isRoot = false; - representation.isArray = true; - representation.parent = adaptationSet; - representation.children = []; - representation.properties = common; - adaptationSet.children.push(representation); - return period; - }, getBaseUrlValuesMap = function() { - var mpd, period, adaptationSet, representation, common; - common = [ { - name: "BaseURL", - merge: true, - mergeFunction: function(parentValue, childValue) { - var mergedValue; - if (childValue.indexOf("http://") === 0) { - mergedValue = childValue; - } else { - mergedValue = parentValue + childValue; - } - return mergedValue; - } - } ]; - mpd = {}; - mpd.name = "mpd"; - mpd.isRoot = true; - mpd.isArray = true; - mpd.parent = null; - mpd.children = []; - mpd.properties = common; - period = {}; - period.name = "Period"; - period.isRoot = false; - period.isArray = true; - period.parent = null; - period.children = []; - period.properties = common; - mpd.children.push(period); - adaptationSet = {}; - adaptationSet.name = "AdaptationSet"; - adaptationSet.isRoot = false; - adaptationSet.isArray = true; - adaptationSet.parent = period; - adaptationSet.children = []; - adaptationSet.properties = common; - period.children.push(adaptationSet); - representation = {}; - representation.name = "Representation"; - representation.isRoot = false; - representation.isArray = true; - representation.parent = adaptationSet; - representation.children = []; - representation.properties = common; - adaptationSet.children.push(representation); - return mpd; - }, getDashMap = function() { - var result = []; - result.push(getCommonValuesMap()); - result.push(getSegmentValuesMap()); - result.push(getBaseUrlValuesMap()); - return result; - }, internalParse = function(data, baseUrl) { - var manifest, converter = new X2JS(matchers, "", true), iron = new ObjectIron(getDashMap()), start = new Date(), json = null, ironed = null; - try { - manifest = converter.xml_str2json(data); - json = new Date(); - if (!manifest.hasOwnProperty("BaseURL")) { - manifest.BaseURL = baseUrl; - } else { - manifest.BaseURL = manifest.BaseURL_asArray[0]; - if (manifest.BaseURL.toString().indexOf("http") !== 0) { - manifest.BaseURL = baseUrl + manifest.BaseURL; - } - } - if (manifest.hasOwnProperty("Location")) { - manifest.Location = manifest.Location_asArray[0]; - } - iron.run(manifest); - ironed = new Date(); - this.xlinkController.setMatchers(matchers); - this.xlinkController.setIron(iron); - this.log("Parsing complete: ( xml2json: " + (json.getTime() - start.getTime()) + "ms, objectiron: " + (ironed.getTime() - json.getTime()) + "ms, total: " + (ironed.getTime() - start.getTime()) / 1e3 + "s)"); - } catch (err) { - this.errHandler.manifestError("parsing the manifest failed", "parse", data); - return null; - } - return manifest; - }; - return { - log: undefined, - errHandler: undefined, - xlinkController: undefined, - parse: internalParse - }; -}; - -Dash.dependencies.DashParser.prototype = { - constructor: Dash.dependencies.DashParser -}; - -Dash.dependencies.TimelineConverter = function() { - "use strict"; - var clientServerTimeShift = 0, isClientServerTimeSyncCompleted = false, expectedLiveEdge = NaN, calcAvailabilityTimeFromPresentationTime = function(presentationTime, mpd, isDynamic, calculateEnd) { - var availabilityTime = NaN; - if (calculateEnd) { - if (isDynamic && mpd.timeShiftBufferDepth != Number.POSITIVE_INFINITY) { - availabilityTime = new Date(mpd.availabilityStartTime.getTime() + (presentationTime + mpd.timeShiftBufferDepth) * 1e3); - } else { - availabilityTime = mpd.availabilityEndTime; - } - } else { - if (isDynamic) { - availabilityTime = new Date(mpd.availabilityStartTime.getTime() + (presentationTime - clientServerTimeShift) * 1e3); - } else { - availabilityTime = mpd.availabilityStartTime; - } - } - return availabilityTime; - }, calcAvailabilityStartTimeFromPresentationTime = function(presentationTime, mpd, isDynamic) { - return calcAvailabilityTimeFromPresentationTime.call(this, presentationTime, mpd, isDynamic); - }, calcAvailabilityEndTimeFromPresentationTime = function(presentationTime, mpd, isDynamic) { - return calcAvailabilityTimeFromPresentationTime.call(this, presentationTime, mpd, isDynamic, true); - }, calcPresentationTimeFromWallTime = function(wallTime, period) { - return (wallTime.getTime() - period.mpd.availabilityStartTime.getTime() + clientServerTimeShift * 1e3) / 1e3; - }, calcPresentationTimeFromMediaTime = function(mediaTime, representation) { - var periodStart = representation.adaptation.period.start, presentationOffset = representation.presentationTimeOffset; - return mediaTime + (periodStart - presentationOffset); - }, calcMediaTimeFromPresentationTime = function(presentationTime, representation) { - var periodStart = representation.adaptation.period.start, presentationOffset = representation.presentationTimeOffset; - return presentationTime - periodStart + presentationOffset; - }, calcWallTimeForSegment = function(segment, isDynamic) { - var suggestedPresentationDelay, displayStartTime, wallTime; - if (isDynamic) { - suggestedPresentationDelay = segment.representation.adaptation.period.mpd.suggestedPresentationDelay; - displayStartTime = segment.presentationStartTime + suggestedPresentationDelay; - wallTime = new Date(segment.availabilityStartTime.getTime() + displayStartTime * 1e3); - } - return wallTime; - }, calcSegmentAvailabilityRange = function(representation, isDynamic) { - var start = representation.adaptation.period.start, end = start + representation.adaptation.period.duration, range = { - start: start, - end: end - }, d = representation.segmentDuration || (representation.segments && representation.segments.length ? representation.segments[representation.segments.length - 1].duration : 0), checkTime, now; - if (!isDynamic) return range; - if (!isClientServerTimeSyncCompleted && representation.segmentAvailabilityRange) { - return representation.segmentAvailabilityRange; - } - checkTime = representation.adaptation.period.mpd.checkTime; - now = calcPresentationTimeFromWallTime(new Date(), representation.adaptation.period); - start = Math.max(now - representation.adaptation.period.mpd.timeShiftBufferDepth, 0); - end = (isNaN(checkTime) ? now : Math.min(checkTime, now)) - d; - range = { - start: start, - end: end - }; - return range; - }, calcPeriodRelativeTimeFromMpdRelativeTime = function(representation, mpdRelativeTime) { - var periodStartTime = representation.adaptation.period.start; - return mpdRelativeTime - periodStartTime; - }, calcMpdRelativeTimeFromPeriodRelativeTime = function(representation, periodRelativeTime) { - var periodStartTime = representation.adaptation.period.start; - return periodRelativeTime + periodStartTime; - }, onLiveEdgeSearchCompleted = function(e) { - if (isClientServerTimeSyncCompleted || e.error) return; - clientServerTimeShift += e.data.liveEdge - (expectedLiveEdge + e.data.searchTime); - isClientServerTimeSyncCompleted = true; - }, onTimeSyncComplete = function(e) { - if (isClientServerTimeSyncCompleted || e.error) { - return; - } - clientServerTimeShift = e.data.offset / 1e3; - isClientServerTimeSyncCompleted = true; - }, calcMSETimeOffset = function(representation) { - var presentationOffset = representation.presentationTimeOffset; - var periodStart = representation.adaptation.period.start; - return periodStart - presentationOffset; - }, reset = function() { - clientServerTimeShift = 0; - isClientServerTimeSyncCompleted = false; - expectedLiveEdge = NaN; - }; - return { - setup: function() { - this[MediaPlayer.dependencies.LiveEdgeFinder.eventList.ENAME_LIVE_EDGE_SEARCH_COMPLETED] = onLiveEdgeSearchCompleted; - this[MediaPlayer.dependencies.TimeSyncController.eventList.ENAME_TIME_SYNCHRONIZATION_COMPLETED] = onTimeSyncComplete; - }, - calcAvailabilityStartTimeFromPresentationTime: calcAvailabilityStartTimeFromPresentationTime, - calcAvailabilityEndTimeFromPresentationTime: calcAvailabilityEndTimeFromPresentationTime, - calcPresentationTimeFromWallTime: calcPresentationTimeFromWallTime, - calcPresentationTimeFromMediaTime: calcPresentationTimeFromMediaTime, - calcPeriodRelativeTimeFromMpdRelativeTime: calcPeriodRelativeTimeFromMpdRelativeTime, - calcMpdRelativeTimeFromPeriodRelativeTime: calcMpdRelativeTimeFromPeriodRelativeTime, - calcMediaTimeFromPresentationTime: calcMediaTimeFromPresentationTime, - calcSegmentAvailabilityRange: calcSegmentAvailabilityRange, - calcWallTimeForSegment: calcWallTimeForSegment, - calcMSETimeOffset: calcMSETimeOffset, - reset: reset, - isTimeSyncCompleted: function() { - return isClientServerTimeSyncCompleted; - }, - setTimeSyncCompleted: function(value) { - isClientServerTimeSyncCompleted = value; - }, - getClientTimeOffset: function() { - return clientServerTimeShift; - }, - getExpectedLiveEdge: function() { - return expectedLiveEdge; - }, - setExpectedLiveEdge: function(value) { - expectedLiveEdge = value; - } - }; -}; - -Dash.dependencies.TimelineConverter.prototype = { - constructor: Dash.dependencies.TimelineConverter -}; - -Dash.dependencies.RepresentationController = function() { - "use strict"; - var data = null, dataIndex = -1, updating = true, availableRepresentations = [], currentRepresentation, updateData = function(dataValue, adaptation, type) { - var self = this, bitrate = null, streamInfo = self.streamProcessor.getStreamInfo(), quality, maxQuality = self.abrController.getTopQualityIndexFor(type, streamInfo.id); - updating = true; - self.notify(Dash.dependencies.RepresentationController.eventList.ENAME_DATA_UPDATE_STARTED); - availableRepresentations = updateRepresentations.call(self, adaptation); - if (data === null) { - bitrate = self.abrController.getInitialBitrateFor(type, streamInfo); - quality = self.abrController.getQualityForBitrate(self.streamProcessor.getMediaInfo(), bitrate); - } else { - quality = self.abrController.getQualityFor(type, streamInfo); - } - if (quality > maxQuality) { - quality = maxQuality; - } - currentRepresentation = getRepresentationForQuality.call(self, quality); - data = dataValue; - if (type !== "video" && type !== "audio" && type !== "fragmentedText") { - updating = false; - self.notify(Dash.dependencies.RepresentationController.eventList.ENAME_DATA_UPDATE_COMPLETED, { - data: data, - currentRepresentation: currentRepresentation - }); - return; - } - for (var i = 0; i < availableRepresentations.length; i += 1) { - self.indexHandler.updateRepresentation(availableRepresentations[i], true); - } - }, addRepresentationSwitch = function() { - var now = new Date(), currentRepresentation = this.getCurrentRepresentation(), currentVideoTime = this.streamProcessor.playbackController.getTime(); - this.metricsModel.addTrackSwitch(currentRepresentation.adaptation.type, now, currentVideoTime, currentRepresentation.id); - }, addDVRMetric = function() { - var streamProcessor = this.streamProcessor, range = this.timelineConverter.calcSegmentAvailabilityRange(currentRepresentation, streamProcessor.isDynamic()); - this.metricsModel.addDVRInfo(streamProcessor.getType(), streamProcessor.playbackController.getTime(), streamProcessor.getStreamInfo().manifestInfo, range); - }, getRepresentationForQuality = function(quality) { - return availableRepresentations[quality]; - }, getQualityForRepresentation = function(representation) { - return availableRepresentations.indexOf(representation); - }, isAllRepresentationsUpdated = function() { - for (var i = 0, ln = availableRepresentations.length; i < ln; i += 1) { - var segmentInfoType = availableRepresentations[i].segmentInfoType; - if (availableRepresentations[i].segmentAvailabilityRange === null || availableRepresentations[i].initialization === null || (segmentInfoType === "SegmentBase" || segmentInfoType === "BaseURL") && !availableRepresentations[i].segments) { - return false; - } - } - return true; - }, updateRepresentations = function(adaptation) { - var self = this, reps, manifest = self.manifestModel.getValue(); - dataIndex = self.manifestExt.getIndexForAdaptation(data, manifest, adaptation.period.index); - reps = self.manifestExt.getRepresentationsForAdaptation(manifest, adaptation); - return reps; - }, updateAvailabilityWindow = function(isDynamic) { - var self = this, rep; - for (var i = 0, ln = availableRepresentations.length; i < ln; i += 1) { - rep = availableRepresentations[i]; - rep.segmentAvailabilityRange = self.timelineConverter.calcSegmentAvailabilityRange(rep, isDynamic); - } - }, postponeUpdate = function(availabilityDelay) { - var self = this, delay = (availabilityDelay + currentRepresentation.segmentDuration * 3) * 1e3, update = function() { - if (this.isUpdating()) return; - updating = true; - self.notify(Dash.dependencies.RepresentationController.eventList.ENAME_DATA_UPDATE_STARTED); - for (var i = 0; i < availableRepresentations.length; i += 1) { - self.indexHandler.updateRepresentation(availableRepresentations[i], true); - } - }; - updating = false; - setTimeout(update.bind(this), delay); - }, onRepresentationUpdated = function(e) { - if (!this.isUpdating()) return; - var self = this, r = e.data.representation, streamMetrics = self.metricsModel.getMetricsFor("stream"), metrics = self.metricsModel.getMetricsFor(this.getCurrentRepresentation().adaptation.type), manifestUpdateInfo = self.metricsExt.getCurrentManifestUpdate(streamMetrics), repInfo, err, alreadyAdded = false, repSwitch; - if (e.error && e.error.code === Dash.dependencies.DashHandler.SEGMENTS_UNAVAILABLE_ERROR_CODE) { - addDVRMetric.call(this); - postponeUpdate.call(this, e.error.data.availabilityDelay); - err = new MediaPlayer.vo.Error(Dash.dependencies.RepresentationController.SEGMENTS_UPDATE_FAILED_ERROR_CODE, "Segments update failed", null); - this.notify(Dash.dependencies.RepresentationController.eventList.ENAME_DATA_UPDATE_COMPLETED, { - data: data, - currentRepresentation: currentRepresentation - }, err); - return; - } - if (manifestUpdateInfo) { - for (var i = 0; i < manifestUpdateInfo.trackInfo.length; i += 1) { - repInfo = manifestUpdateInfo.trackInfo[i]; - if (repInfo.index === r.index && repInfo.mediaType === self.streamProcessor.getType()) { - alreadyAdded = true; - break; - } - } - if (!alreadyAdded) { - self.metricsModel.addManifestUpdateTrackInfo(manifestUpdateInfo, r.id, r.index, r.adaptation.period.index, self.streamProcessor.getType(), r.presentationTimeOffset, r.startNumber, r.segmentInfoType); - } - } - if (isAllRepresentationsUpdated()) { - updating = false; - self.abrController.setPlaybackQuality(self.streamProcessor.getType(), self.streamProcessor.getStreamInfo(), getQualityForRepresentation.call(this, currentRepresentation)); - self.metricsModel.updateManifestUpdateInfo(manifestUpdateInfo, { - latency: currentRepresentation.segmentAvailabilityRange.end - self.streamProcessor.playbackController.getTime() - }); - repSwitch = self.metricsExt.getCurrentRepresentationSwitch(metrics); - if (!repSwitch) { - addRepresentationSwitch.call(self); - } - this.notify(Dash.dependencies.RepresentationController.eventList.ENAME_DATA_UPDATE_COMPLETED, { - data: data, - currentRepresentation: currentRepresentation - }); - } - }, onWallclockTimeUpdated = function(e) { - updateAvailabilityWindow.call(this, e.data.isDynamic); - }, onLiveEdgeSearchCompleted = function(e) { - if (e.error) return; - updateAvailabilityWindow.call(this, true); - this.indexHandler.updateRepresentation(currentRepresentation, false); - var manifest = this.manifestModel.getValue(), period = currentRepresentation.adaptation.period, streamInfo = this.streamController.getActiveStreamInfo(); - if (streamInfo.isLast) { - period.mpd.checkTime = this.manifestExt.getCheckTime(manifest, period); - period.duration = this.manifestExt.getEndTimeForLastPeriod(this.manifestModel.getValue(), period) - period.start; - streamInfo.duration = period.duration; - } - }, onBufferLevelUpdated = function() { - addDVRMetric.call(this); - }, onQualityChanged = function(e) { - var self = this; - if (e.data.mediaType !== self.streamProcessor.getType() || self.streamProcessor.getStreamInfo().id !== e.data.streamInfo.id) return; - currentRepresentation = self.getRepresentationForQuality(e.data.newQuality); - setLocalStorage.call(self, e.data.mediaType, currentRepresentation.bandwidth); - addRepresentationSwitch.call(self); - }, setLocalStorage = function(type, bitrate) { - if (this.DOMStorage.isSupported(MediaPlayer.utils.DOMStorage.STORAGE_TYPE_LOCAL) && (type === "video" || type === "audio")) { - localStorage.setItem(MediaPlayer.utils.DOMStorage["LOCAL_STORAGE_" + type.toUpperCase() + "_BITRATE_KEY"], JSON.stringify({ - bitrate: bitrate / 1e3, - timestamp: new Date().getTime() - })); - } - }; - return { - system: undefined, - log: undefined, - manifestExt: undefined, - manifestModel: undefined, - metricsModel: undefined, - metricsExt: undefined, - abrController: undefined, - streamController: undefined, - timelineConverter: undefined, - notify: undefined, - subscribe: undefined, - unsubscribe: undefined, - DOMStorage: undefined, - setup: function() { - this[MediaPlayer.dependencies.AbrController.eventList.ENAME_QUALITY_CHANGED] = onQualityChanged; - this[Dash.dependencies.DashHandler.eventList.ENAME_REPRESENTATION_UPDATED] = onRepresentationUpdated; - this[MediaPlayer.dependencies.PlaybackController.eventList.ENAME_WALLCLOCK_TIME_UPDATED] = onWallclockTimeUpdated; - this[MediaPlayer.dependencies.LiveEdgeFinder.eventList.ENAME_LIVE_EDGE_SEARCH_COMPLETED] = onLiveEdgeSearchCompleted; - this[MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_UPDATED] = onBufferLevelUpdated; - }, - initialize: function(streamProcessor) { - this.streamProcessor = streamProcessor; - this.indexHandler = streamProcessor.indexHandler; - }, - getData: function() { - return data; - }, - getDataIndex: function() { - return dataIndex; - }, - isUpdating: function() { - return updating; - }, - updateData: updateData, - getRepresentationForQuality: getRepresentationForQuality, - getCurrentRepresentation: function() { - return currentRepresentation; - } - }; -}; - -Dash.dependencies.RepresentationController.prototype = { - constructor: Dash.dependencies.RepresentationController -}; - -Dash.dependencies.RepresentationController.SEGMENTS_UPDATE_FAILED_ERROR_CODE = 1; - -Dash.dependencies.RepresentationController.eventList = { - ENAME_DATA_UPDATE_COMPLETED: "dataUpdateCompleted", - ENAME_DATA_UPDATE_STARTED: "dataUpdateStarted" -}; - -Dash.dependencies.BaseURLExtensions = function() { - "use strict"; - var parseSIDX = function(ab, ab_first_byte_offset) { - var d = new DataView(ab), sidx = {}, pos = 0, offset, time, sidxEnd, i, ref_type, ref_size, ref_dur, type, size, charCode; - while (type !== "sidx" && pos < d.byteLength) { - size = d.getUint32(pos); - pos += 4; - type = ""; - for (i = 0; i < 4; i += 1) { - charCode = d.getInt8(pos); - type += String.fromCharCode(charCode); - pos += 1; - } - if (type !== "moof" && type !== "traf" && type !== "sidx") { - pos += size - 8; - } else if (type === "sidx") { - pos -= 8; - } - } - sidxEnd = d.getUint32(pos, false) + pos; - if (sidxEnd > ab.byteLength) { - throw "sidx terminates after array buffer"; - } - sidx.version = d.getUint8(pos + 8); - pos += 12; - sidx.timescale = d.getUint32(pos + 4, false); - pos += 8; - if (sidx.version === 0) { - sidx.earliest_presentation_time = d.getUint32(pos, false); - sidx.first_offset = d.getUint32(pos + 4, false); - pos += 8; - } else { - sidx.earliest_presentation_time = utils.Math.to64BitNumber(d.getUint32(pos + 4, false), d.getUint32(pos, false)); - sidx.first_offset = (d.getUint32(pos + 8, false) << 32) + d.getUint32(pos + 12, false); - pos += 16; - } - sidx.first_offset += sidxEnd + (ab_first_byte_offset || 0); - sidx.reference_count = d.getUint16(pos + 2, false); - pos += 4; - sidx.references = []; - offset = sidx.first_offset; - time = sidx.earliest_presentation_time; - for (i = 0; i < sidx.reference_count; i += 1) { - ref_size = d.getUint32(pos, false); - ref_type = ref_size >>> 31; - ref_size = ref_size & 2147483647; - ref_dur = d.getUint32(pos + 4, false); - pos += 12; - sidx.references.push({ - size: ref_size, - type: ref_type, - offset: offset, - duration: ref_dur, - time: time, - timescale: sidx.timescale - }); - offset += ref_size; - time += ref_dur; - } - if (pos !== sidxEnd) { - throw "Error: final pos " + pos + " differs from SIDX end " + sidxEnd; - } - return sidx; - }, parseSegments = function(data, media, offset) { - var parsed, ref, segments, segment, i, len, start, end; - parsed = parseSIDX.call(this, data, offset); - ref = parsed.references; - segments = []; - for (i = 0, len = ref.length; i < len; i += 1) { - segment = new Dash.vo.Segment(); - segment.duration = ref[i].duration; - segment.media = media; - segment.startTime = ref[i].time; - segment.timescale = ref[i].timescale; - start = ref[i].offset; - end = ref[i].offset + ref[i].size - 1; - segment.mediaRange = start + "-" + end; - segments.push(segment); - } - this.log("Parsed SIDX box: " + segments.length + " segments."); - return segments; - }, findInit = function(data, info, callback) { - var ftyp, moov, start, end, d = new DataView(data), pos = 0, type = "", size = 0, i, c, request, loaded = false, irange, self = this; - self.log("Searching for initialization."); - while (type !== "moov" && pos < d.byteLength) { - size = d.getUint32(pos); - pos += 4; - type = ""; - for (i = 0; i < 4; i += 1) { - c = d.getInt8(pos); - type += String.fromCharCode(c); - pos += 1; - } - if (type === "ftyp") { - ftyp = pos - 8; - } - if (type === "moov") { - moov = pos - 8; - } - if (type !== "moov") { - pos += size - 8; - } - } - if (type !== "moov") { - self.log("Loading more bytes to find initialization."); - info.range.start = 0; - info.range.end = info.bytesLoaded + info.bytesToLoad; - request = new XMLHttpRequest(); - request.onloadend = function() { - if (!loaded) { - callback.call(self, null, new Error("Error loading initialization.")); - } - }; - request.onload = function() { - loaded = true; - info.bytesLoaded = info.range.end; - findInit.call(self, request.response, function(segments) { - callback.call(self, segments); - }); - }; - request.onerror = function() { - callback.call(self, null, new Error("Error loading initialization.")); - }; - sendRequest.call(self, request, info); - } else { - start = ftyp === undefined ? moov : ftyp; - end = moov + size - 1; - irange = start + "-" + end; - self.log("Found the initialization. Range: " + irange); - callback.call(self, irange); - } - }, loadInit = function(representation) { - var request = new XMLHttpRequest(), needFailureReport = true, self = this, media = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].BaseURL, info = { - url: media, - range: {}, - searching: false, - bytesLoaded: 0, - bytesToLoad: 1500, - request: request - }; - self.log("Start searching for initialization."); - info.range.start = 0; - info.range.end = info.bytesToLoad; - request.onload = function() { - if (request.status < 200 || request.status > 299) { - return; - } - needFailureReport = false; - info.bytesLoaded = info.range.end; - findInit.call(self, request.response, info, function(range) { - representation.range = range; - representation.initialization = media; - self.notify(Dash.dependencies.BaseURLExtensions.eventList.ENAME_INITIALIZATION_LOADED, { - representation: representation - }); - }); - }; - request.onloadend = request.onerror = function() { - if (!needFailureReport) { - return; - } - needFailureReport = false; - self.errHandler.downloadError("initialization", info.url, request); - self.notify(Dash.dependencies.BaseURLExtensions.eventList.ENAME_INITIALIZATION_LOADED, { - representation: representation - }); - }; - sendRequest.call(self, request, info); - self.log("Perform init search: " + info.url); - }, findSIDX = function(data, info, representation, callback) { - var segments, d = new DataView(data), request = new XMLHttpRequest(), pos = 0, type = "", size = 0, bytesAvailable, sidxBytes, sidxSlice, sidxOut, i, c, needFailureReport = true, parsed, ref, loadMultiSidx = false, self = this; - self.log("Searching for SIDX box."); - self.log(info.bytesLoaded + " bytes loaded."); - while (type !== "sidx" && pos < d.byteLength) { - size = d.getUint32(pos); - pos += 4; - type = ""; - for (i = 0; i < 4; i += 1) { - c = d.getInt8(pos); - type += String.fromCharCode(c); - pos += 1; - } - if (type !== "sidx") { - pos += size - 8; - } - } - bytesAvailable = d.byteLength - pos; - if (type !== "sidx") { - callback.call(self); - } else if (bytesAvailable < size - 8) { - self.log("Found SIDX but we don't have all of it."); - info.range.start = 0; - info.range.end = info.bytesLoaded + (size - bytesAvailable); - request.onload = function() { - if (request.status < 200 || request.status > 299) { - return; - } - needFailureReport = false; - info.bytesLoaded = info.range.end; - findSIDX.call(self, request.response, info, representation, callback); - }; - request.onloadend = request.onerror = function() { - if (!needFailureReport) { - return; - } - needFailureReport = false; - self.errHandler.downloadError("SIDX", info.url, request); - callback.call(self); - }; - sendRequest.call(self, request, info); - } else { - info.range.start = pos - 8; - info.range.end = info.range.start + size; - self.log("Found the SIDX box. Start: " + info.range.start + " | End: " + info.range.end); - sidxBytes = new ArrayBuffer(info.range.end - info.range.start); - sidxOut = new Uint8Array(sidxBytes); - sidxSlice = new Uint8Array(data, info.range.start, info.range.end - info.range.start); - sidxOut.set(sidxSlice); - parsed = this.parseSIDX.call(this, sidxBytes, info.range.start); - ref = parsed.references; - if (ref !== null && ref !== undefined && ref.length > 0) { - loadMultiSidx = ref[0].type === 1; - } - if (loadMultiSidx) { - self.log("Initiate multiple SIDX load."); - var j, len, ss, se, r, segs = [], count = 0, tmpCallback = function(segments) { - if (segments) { - segs = segs.concat(segments); - count += 1; - if (count >= len) { - callback.call(self, segs); - } - } else { - callback.call(self); - } - }; - for (j = 0, len = ref.length; j < len; j += 1) { - ss = ref[j].offset; - se = ref[j].offset + ref[j].size - 1; - r = ss + "-" + se; - loadSegments.call(self, representation, null, r, tmpCallback); - } - } else { - self.log("Parsing segments from SIDX."); - segments = parseSegments.call(self, sidxBytes, info.url, info.range.start); - callback.call(self, segments); - } - } - }, loadSegments = function(representation, type, theRange, callback) { - var request = new XMLHttpRequest(), segments, parts, media = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].BaseURL, needFailureReport = true, self = this, info = { - url: media, - range: {}, - searching: false, - bytesLoaded: 0, - bytesToLoad: 1500, - request: request - }; - if (theRange === null) { - self.log("No known range for SIDX request."); - info.searching = true; - info.range.start = 0; - info.range.end = info.bytesToLoad; - } else { - parts = theRange.split("-"); - info.range.start = parseFloat(parts[0]); - info.range.end = parseFloat(parts[1]); - } - request.onload = function() { - if (request.status < 200 || request.status > 299) { - return; - } - needFailureReport = false; - if (info.searching) { - info.bytesLoaded = info.range.end; - findSIDX.call(self, request.response, info, representation, function(segments) { - if (segments) { - callback.call(self, segments, representation, type); - } - }); - } else { - segments = parseSegments.call(self, request.response, info.url, info.range.start); - callback.call(self, segments, representation, type); - } - }; - request.onloadend = request.onerror = function() { - if (!needFailureReport) { - return; - } - needFailureReport = false; - self.errHandler.downloadError("SIDX", info.url, request); - callback.call(self, null, representation, type); - }; - sendRequest.call(self, request, info); - self.log("Perform SIDX load: " + info.url); - }, sendRequest = function(request, info) { - request.open("GET", this.requestModifierExt.modifyRequestURL(info.url)); - request.responseType = "arraybuffer"; - request.setRequestHeader("Range", "bytes=" + info.range.start + "-" + info.range.end); - request = this.requestModifierExt.modifyRequestHeader(request); - request.send(null); - }, onLoaded = function(segments, representation, type) { - var self = this; - if (segments) { - self.notify(Dash.dependencies.BaseURLExtensions.eventList.ENAME_SEGMENTS_LOADED, { - segments: segments, - representation: representation, - mediaType: type - }); - } else { - self.notify(Dash.dependencies.BaseURLExtensions.eventList.ENAME_SEGMENTS_LOADED, { - segments: null, - representation: representation, - mediaType: type - }, new MediaPlayer.vo.Error(null, "error loading segments", null)); - } - }; - return { - log: undefined, - errHandler: undefined, - requestModifierExt: undefined, - notify: undefined, - subscribe: undefined, - unsubscribe: undefined, - loadSegments: function(representation, type, range) { - loadSegments.call(this, representation, type, range, onLoaded.bind(this)); - }, - loadInitialization: loadInit, - parseSegments: parseSegments, - parseSIDX: parseSIDX, - findSIDX: findSIDX - }; -}; - -Dash.dependencies.BaseURLExtensions.prototype = { - constructor: Dash.dependencies.BaseURLExtensions -}; - -Dash.dependencies.BaseURLExtensions.eventList = { - ENAME_INITIALIZATION_LOADED: "initializationLoaded", - ENAME_SEGMENTS_LOADED: "segmentsLoaded" -}; - -Dash.dependencies.DashManifestExtensions = function() { - "use strict"; - this.timelineConverter = undefined; -}; - -Dash.dependencies.DashManifestExtensions.prototype = { - constructor: Dash.dependencies.DashManifestExtensions, - getIsTypeOf: function(adaptation, type) { - "use strict"; - var i, len, col = adaptation.ContentComponent_asArray, mimeTypeRegEx = type !== "text" ? new RegExp(type) : new RegExp("(vtt|ttml)"), representation, result = false, found = false; - if (adaptation.Representation_asArray.length > 0 && adaptation.Representation_asArray[0].hasOwnProperty("codecs") && adaptation.Representation_asArray[0].codecs == "stpp") { - return type == "fragmentedText"; - } - if (col) { - for (i = 0, len = col.length; i < len; i += 1) { - if (col[i].contentType === type) { - result = true; - found = true; - } - } - } - if (adaptation.hasOwnProperty("mimeType")) { - result = mimeTypeRegEx.test(adaptation.mimeType); - found = true; - } - if (!found) { - i = 0; - len = adaptation.Representation_asArray.length; - while (!found && i < len) { - representation = adaptation.Representation_asArray[i]; - if (representation.hasOwnProperty("mimeType")) { - result = mimeTypeRegEx.test(representation.mimeType); - found = true; - } - i += 1; - } - } - return result; - }, - getIsAudio: function(adaptation) { - "use strict"; - return this.getIsTypeOf(adaptation, "audio"); - }, - getIsVideo: function(adaptation) { - "use strict"; - return this.getIsTypeOf(adaptation, "video"); - }, - getIsFragmentedText: function(adaptation) { - "use strict"; - return this.getIsTypeOf(adaptation, "fragmentedText"); - }, - getIsText: function(adaptation) { - "use strict"; - return this.getIsTypeOf(adaptation, "text"); - }, - getIsTextTrack: function(type) { - return type === "text/vtt" || type === "application/ttml+xml"; - }, - getLanguageForAdaptation: function(adaptation) { - var lang = ""; - if (adaptation.hasOwnProperty("lang")) { - lang = adaptation.lang; - } - return lang; - }, - getIsMain: function() { - "use strict"; - return false; - }, - processAdaptation: function(adaptation) { - "use strict"; - if (adaptation.Representation_asArray !== undefined && adaptation.Representation_asArray !== null) { - adaptation.Representation_asArray.sort(function(a, b) { - return a.bandwidth - b.bandwidth; - }); - } - return adaptation; - }, - getAdaptationForId: function(id, manifest, periodIndex) { - "use strict"; - var adaptations = manifest.Period_asArray[periodIndex].AdaptationSet_asArray, i, len; - for (i = 0, len = adaptations.length; i < len; i += 1) { - if (adaptations[i].hasOwnProperty("id") && adaptations[i].id === id) { - return adaptations[i]; - } - } - return null; - }, - getAdaptationForIndex: function(index, manifest, periodIndex) { - "use strict"; - var adaptations = manifest.Period_asArray[periodIndex].AdaptationSet_asArray; - return adaptations[index]; - }, - getIndexForAdaptation: function(adaptation, manifest, periodIndex) { - "use strict"; - var adaptations = manifest.Period_asArray[periodIndex].AdaptationSet_asArray, i, len; - for (i = 0, len = adaptations.length; i < len; i += 1) { - if (adaptations[i] === adaptation) { - return i; - } - } - return -1; - }, - getAdaptationsForType: function(manifest, periodIndex, type) { - "use strict"; - var self = this, adaptationSet = manifest.Period_asArray[periodIndex].AdaptationSet_asArray, i, len, adaptations = []; - for (i = 0, len = adaptationSet.length; i < len; i += 1) { - if (this.getIsTypeOf(adaptationSet[i], type)) { - adaptations.push(self.processAdaptation(adaptationSet[i])); - } - } - return adaptations; - }, - getAdaptationForType: function(manifest, periodIndex, type) { - "use strict"; - var i, len, adaptations, self = this; - adaptations = this.getAdaptationsForType(manifest, periodIndex, type); - if (!adaptations || adaptations.length === 0) return null; - for (i = 0, len = adaptations.length; i < len; i += 1) { - if (self.getIsMain(adaptations[i])) return adaptations[i]; - } - return adaptations[0]; - }, - getCodec: function(adaptation) { - "use strict"; - var representation = adaptation.Representation_asArray[0]; - return representation.mimeType + ';codecs="' + representation.codecs + '"'; - }, - getMimeType: function(adaptation) { - "use strict"; - return adaptation.Representation_asArray[0].mimeType; - }, - getKID: function(adaptation) { - "use strict"; - if (!adaptation || !adaptation.hasOwnProperty("cenc:default_KID")) { - return null; - } - return adaptation["cenc:default_KID"]; - }, - getContentProtectionData: function(adaptation) { - "use strict"; - if (!adaptation || !adaptation.hasOwnProperty("ContentProtection_asArray") || adaptation.ContentProtection_asArray.length === 0) { - return null; - } - return adaptation.ContentProtection_asArray; - }, - getIsDynamic: function(manifest) { - "use strict"; - var isDynamic = false, LIVE_TYPE = "dynamic"; - if (manifest.hasOwnProperty("type")) { - isDynamic = manifest.type === LIVE_TYPE; - } - return isDynamic; - }, - getIsDVR: function(manifest) { - "use strict"; - var isDynamic = this.getIsDynamic(manifest), containsDVR, isDVR; - containsDVR = !isNaN(manifest.timeShiftBufferDepth); - isDVR = isDynamic && containsDVR; - return isDVR; - }, - getIsOnDemand: function(manifest) { - "use strict"; - var isOnDemand = false; - if (manifest.profiles && manifest.profiles.length > 0) { - isOnDemand = manifest.profiles.indexOf("urn:mpeg:dash:profile:isoff-on-demand:2011") !== -1; - } - return isOnDemand; - }, - getDuration: function(manifest) { - var mpdDuration; - if (manifest.hasOwnProperty("mediaPresentationDuration")) { - mpdDuration = manifest.mediaPresentationDuration; - } else { - mpdDuration = Number.MAX_VALUE; - } - return mpdDuration; - }, - getBandwidth: function(representation) { - "use strict"; - return representation.bandwidth; - }, - getRefreshDelay: function(manifest) { - "use strict"; - var delay = NaN, minDelay = 2; - if (manifest.hasOwnProperty("minimumUpdatePeriod")) { - delay = Math.max(parseFloat(manifest.minimumUpdatePeriod), minDelay); - } - return delay; - }, - getRepresentationCount: function(adaptation) { - "use strict"; - return adaptation.Representation_asArray.length; - }, - getBitrateListForAdaptation: function(adaptation) { - if (!adaptation || !adaptation.Representation_asArray || !adaptation.Representation_asArray.length) return null; - var a = this.processAdaptation(adaptation), reps = a.Representation_asArray, ln = reps.length, bitrateList = []; - for (var i = 0; i < ln; i += 1) { - bitrateList.push(reps[i].bandwidth); - } - return bitrateList; - }, - getRepresentationFor: function(index, adaptation) { - "use strict"; - return adaptation.Representation_asArray[index]; - }, - getRepresentationsForAdaptation: function(manifest, adaptation) { - var self = this, a = self.processAdaptation(manifest.Period_asArray[adaptation.period.index].AdaptationSet_asArray[adaptation.index]), representations = [], representation, initialization, segmentInfo, r, s; - for (var i = 0; i < a.Representation_asArray.length; i += 1) { - r = a.Representation_asArray[i]; - representation = new Dash.vo.Representation(); - representation.index = i; - representation.adaptation = adaptation; - if (r.hasOwnProperty("id")) { - representation.id = r.id; - } - if (r.hasOwnProperty("bandwidth")) { - representation.bandwidth = r.bandwidth; - } - if (r.hasOwnProperty("maxPlayoutRate")) { - representation.maxPlayoutRate = r.maxPlayoutRate; - } - if (r.hasOwnProperty("SegmentBase")) { - segmentInfo = r.SegmentBase; - representation.segmentInfoType = "SegmentBase"; - } else if (r.hasOwnProperty("SegmentList")) { - segmentInfo = r.SegmentList; - representation.segmentInfoType = "SegmentList"; - representation.useCalculatedLiveEdgeTime = true; - } else if (r.hasOwnProperty("SegmentTemplate")) { - segmentInfo = r.SegmentTemplate; - if (segmentInfo.hasOwnProperty("SegmentTimeline")) { - representation.segmentInfoType = "SegmentTimeline"; - s = segmentInfo.SegmentTimeline.S_asArray[segmentInfo.SegmentTimeline.S_asArray.length - 1]; - if (!s.hasOwnProperty("r") || s.r >= 0) { - representation.useCalculatedLiveEdgeTime = true; - } - } else { - representation.segmentInfoType = "SegmentTemplate"; - } - if (segmentInfo.hasOwnProperty("initialization")) { - representation.initialization = segmentInfo.initialization.split("$Bandwidth$").join(r.bandwidth).split("$RepresentationID$").join(r.id); - } - } else { - segmentInfo = r.BaseURL; - representation.segmentInfoType = "BaseURL"; - } - if (segmentInfo.hasOwnProperty("Initialization")) { - initialization = segmentInfo.Initialization; - if (initialization.hasOwnProperty("sourceURL")) { - representation.initialization = initialization.sourceURL; - } else if (initialization.hasOwnProperty("range")) { - representation.initialization = r.BaseURL; - representation.range = initialization.range; - } - } else if (r.hasOwnProperty("mimeType") && self.getIsTextTrack(r.mimeType)) { - representation.initialization = r.BaseURL; - representation.range = 0; - } - if (segmentInfo.hasOwnProperty("timescale")) { - representation.timescale = segmentInfo.timescale; - } - if (segmentInfo.hasOwnProperty("duration")) { - representation.segmentDuration = segmentInfo.duration / representation.timescale; - } - if (segmentInfo.hasOwnProperty("startNumber")) { - representation.startNumber = segmentInfo.startNumber; - } - if (segmentInfo.hasOwnProperty("indexRange")) { - representation.indexRange = segmentInfo.indexRange; - } - if (segmentInfo.hasOwnProperty("presentationTimeOffset")) { - representation.presentationTimeOffset = segmentInfo.presentationTimeOffset / representation.timescale; - } - representation.MSETimeOffset = self.timelineConverter.calcMSETimeOffset(representation); - representations.push(representation); - } - return representations; - }, - getAdaptationsForPeriod: function(manifest, period) { - var p = manifest.Period_asArray[period.index], adaptations = [], adaptationSet, a; - for (var i = 0; i < p.AdaptationSet_asArray.length; i += 1) { - a = p.AdaptationSet_asArray[i]; - adaptationSet = new Dash.vo.AdaptationSet(); - if (a.hasOwnProperty("id")) { - adaptationSet.id = a.id; - } - adaptationSet.index = i; - adaptationSet.period = period; - if (this.getIsAudio(a)) { - adaptationSet.type = "audio"; - } else if (this.getIsVideo(a)) { - adaptationSet.type = "video"; - } else if (this.getIsFragmentedText(a)) { - adaptationSet.type = "fragmentedText"; - } else { - adaptationSet.type = "text"; - } - adaptations.push(adaptationSet); - } - return adaptations; - }, - getRegularPeriods: function(manifest, mpd) { - var self = this, periods = [], isDynamic = self.getIsDynamic(manifest), i, len, p1 = null, p = null, vo1 = null, vo = null; - for (i = 0, len = manifest.Period_asArray.length; i < len; i += 1) { - p = manifest.Period_asArray[i]; - if (p.hasOwnProperty("start")) { - vo = new Dash.vo.Period(); - vo.start = p.start; - } else if (p1 !== null && p.hasOwnProperty("duration") && vo1 !== null) { - vo = new Dash.vo.Period(); - vo.start = vo1.start + vo1.duration; - vo.duration = p.duration; - } else if (i === 0 && !isDynamic) { - vo = new Dash.vo.Period(); - vo.start = 0; - } - if (vo1 !== null && isNaN(vo1.duration)) { - vo1.duration = vo.start - vo1.start; - } - if (vo !== null && p.hasOwnProperty("id")) { - vo.id = p.id; - } - if (vo !== null && p.hasOwnProperty("duration")) { - vo.duration = p.duration; - } - if (vo !== null) { - vo.index = i; - vo.mpd = mpd; - periods.push(vo); - p1 = p; - vo1 = vo; - } - p = null; - vo = null; - } - if (periods.length === 0) { - return periods; - } - if (vo1 !== null && isNaN(vo1.duration)) { - vo1.duration = self.getEndTimeForLastPeriod(manifest, vo1) - vo1.start; - } - return periods; - }, - getMpd: function(manifest) { - var mpd = new Dash.vo.Mpd(); - mpd.manifest = manifest; - if (manifest.hasOwnProperty("availabilityStartTime")) { - mpd.availabilityStartTime = new Date(manifest.availabilityStartTime.getTime()); - } else { - mpd.availabilityStartTime = new Date(manifest.loadedTime.getTime()); - } - if (manifest.hasOwnProperty("availabilityEndTime")) { - mpd.availabilityEndTime = new Date(manifest.availabilityEndTime.getTime()); - } - if (manifest.hasOwnProperty("suggestedPresentationDelay")) { - mpd.suggestedPresentationDelay = manifest.suggestedPresentationDelay; - } - if (manifest.hasOwnProperty("timeShiftBufferDepth")) { - mpd.timeShiftBufferDepth = manifest.timeShiftBufferDepth; - } - if (manifest.hasOwnProperty("maxSegmentDuration")) { - mpd.maxSegmentDuration = manifest.maxSegmentDuration; - } - return mpd; - }, - getFetchTime: function(manifest, period) { - return this.timelineConverter.calcPresentationTimeFromWallTime(manifest.loadedTime, period); - }, - getCheckTime: function(manifest, period) { - var self = this, checkTime = NaN, fetchTime; - if (manifest.hasOwnProperty("minimumUpdatePeriod")) { - fetchTime = self.getFetchTime(manifest, period); - checkTime = fetchTime + manifest.minimumUpdatePeriod; - } - return checkTime; - }, - getEndTimeForLastPeriod: function(manifest, period) { - var periodEnd, checkTime = this.getCheckTime(manifest, period); - if (manifest.mediaPresentationDuration) { - periodEnd = manifest.mediaPresentationDuration; - } else if (!isNaN(checkTime)) { - periodEnd = checkTime; - } else { - throw new Error("Must have @mediaPresentationDuration or @minimumUpdatePeriod on MPD or an explicit @duration on the last period."); - } - return periodEnd; - }, - getEventsForPeriod: function(manifest, period) { - var periodArray = manifest.Period_asArray, eventStreams = periodArray[period.index].EventStream_asArray, events = []; - if (eventStreams) { - for (var i = 0; i < eventStreams.length; i += 1) { - var eventStream = new Dash.vo.EventStream(); - eventStream.period = period; - eventStream.timescale = 1; - if (eventStreams[i].hasOwnProperty("schemeIdUri")) { - eventStream.schemeIdUri = eventStreams[i].schemeIdUri; - } else { - throw "Invalid EventStream. SchemeIdUri has to be set"; - } - if (eventStreams[i].hasOwnProperty("timescale")) { - eventStream.timescale = eventStreams[i].timescale; - } - if (eventStreams[i].hasOwnProperty("value")) { - eventStream.value = eventStreams[i].value; - } - for (var j = 0; j < eventStreams[i].Event_asArray.length; j += 1) { - var event = new Dash.vo.Event(); - event.presentationTime = 0; - event.eventStream = eventStream; - if (eventStreams[i].Event_asArray[j].hasOwnProperty("presentationTime")) { - event.presentationTime = eventStreams[i].Event_asArray[j].presentationTime; - } - if (eventStreams[i].Event_asArray[j].hasOwnProperty("duration")) { - event.duration = eventStreams[i].Event_asArray[j].duration; - } - if (eventStreams[i].Event_asArray[j].hasOwnProperty("id")) { - event.id = eventStreams[i].Event_asArray[j].id; - } - events.push(event); - } - } - } - return events; - }, - getEventStreams: function(inbandStreams, representation) { - var eventStreams = []; - if (!inbandStreams) return eventStreams; - for (var i = 0; i < inbandStreams.length; i++) { - var eventStream = new Dash.vo.EventStream(); - eventStream.timescale = 1; - eventStream.representation = representation; - if (inbandStreams[i].hasOwnProperty("schemeIdUri")) { - eventStream.schemeIdUri = inbandStreams[i].schemeIdUri; - } else { - throw "Invalid EventStream. SchemeIdUri has to be set"; - } - if (inbandStreams[i].hasOwnProperty("timescale")) { - eventStream.timescale = inbandStreams[i].timescale; - } - if (inbandStreams[i].hasOwnProperty("value")) { - eventStream.value = inbandStreams[i].value; - } - eventStreams.push(eventStream); - } - return eventStreams; - }, - getEventStreamForAdaptationSet: function(manifest, adaptation) { - var inbandStreams = manifest.Period_asArray[adaptation.period.index].AdaptationSet_asArray[adaptation.index].InbandEventStream_asArray; - return this.getEventStreams(inbandStreams, null); - }, - getEventStreamForRepresentation: function(manifest, representation) { - var inbandStreams = manifest.Period_asArray[representation.adaptation.period.index].AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].InbandEventStream_asArray; - return this.getEventStreams(inbandStreams, representation); - }, - getUTCTimingSources: function(manifest) { - "use strict"; - var self = this, isDynamic = self.getIsDynamic(manifest), hasAST = manifest.hasOwnProperty("availabilityStartTime"), utcTimingsArray = manifest.UTCTiming_asArray, utcTimingEntries = []; - if (isDynamic || hasAST) { - if (utcTimingsArray) { - utcTimingsArray.forEach(function(utcTiming) { - var entry = new Dash.vo.UTCTiming(); - if (utcTiming.hasOwnProperty("schemeIdUri")) { - entry.schemeIdUri = utcTiming.schemeIdUri; - } else { - return; - } - if (utcTiming.hasOwnProperty("value")) { - entry.value = utcTiming.value.toString(); - } else { - return; - } - utcTimingEntries.push(entry); - }); - } - } - return utcTimingEntries; - } -}; - -Dash.dependencies.DashMetricsExtensions = function() { - "use strict"; - var findRepresentationIndex = function(period, representationId) { - var adaptationSet, adaptationSetArray, representation, representationArray, adaptationSetArrayIndex, representationArrayIndex; - adaptationSetArray = period.AdaptationSet_asArray; - for (adaptationSetArrayIndex = 0; adaptationSetArrayIndex < adaptationSetArray.length; adaptationSetArrayIndex = adaptationSetArrayIndex + 1) { - adaptationSet = adaptationSetArray[adaptationSetArrayIndex]; - representationArray = adaptationSet.Representation_asArray; - for (representationArrayIndex = 0; representationArrayIndex < representationArray.length; representationArrayIndex = representationArrayIndex + 1) { - representation = representationArray[representationArrayIndex]; - if (representationId === representation.id) { - return representationArrayIndex; - } - } - } - return -1; - }, findRepresentation = function(period, representationId) { - var adaptationSet, adaptationSetArray, representation, representationArray, adaptationSetArrayIndex, representationArrayIndex; - adaptationSetArray = period.AdaptationSet_asArray; - for (adaptationSetArrayIndex = 0; adaptationSetArrayIndex < adaptationSetArray.length; adaptationSetArrayIndex = adaptationSetArrayIndex + 1) { - adaptationSet = adaptationSetArray[adaptationSetArrayIndex]; - representationArray = adaptationSet.Representation_asArray; - for (representationArrayIndex = 0; representationArrayIndex < representationArray.length; representationArrayIndex = representationArrayIndex + 1) { - representation = representationArray[representationArrayIndex]; - if (representationId === representation.id) { - return representation; - } - } - } - return null; - }, adaptationIsType = function(adaptation, bufferType) { - return this.manifestExt.getIsTypeOf(adaptation, bufferType); - }, findMaxBufferIndex = function(period, bufferType) { - var adaptationSet, adaptationSetArray, representationArray, adaptationSetArrayIndex; - if (!period || !bufferType) return -1; - adaptationSetArray = period.AdaptationSet_asArray; - for (adaptationSetArrayIndex = 0; adaptationSetArrayIndex < adaptationSetArray.length; adaptationSetArrayIndex = adaptationSetArrayIndex + 1) { - adaptationSet = adaptationSetArray[adaptationSetArrayIndex]; - representationArray = adaptationSet.Representation_asArray; - if (adaptationIsType.call(this, adaptationSet, bufferType)) { - return representationArray.length; - } - } - return -1; - }, getBandwidthForRepresentation = function(representationId, periodId) { - var self = this, manifest = self.manifestModel.getValue(), representation, period = manifest.Period_asArray[periodId]; - representation = findRepresentation.call(self, period, representationId); - if (representation === null) { - return null; - } - return representation.bandwidth; - }, getIndexForRepresentation = function(representationId, periodIdx) { - var self = this, manifest = self.manifestModel.getValue(), representationIndex, period = manifest.Period_asArray[periodIdx]; - representationIndex = findRepresentationIndex.call(self, period, representationId); - return representationIndex; - }, getMaxIndexForBufferType = function(bufferType, periodIdx) { - var self = this, manifest = self.manifestModel.getValue(), maxIndex, period = manifest.Period_asArray[periodIdx]; - maxIndex = findMaxBufferIndex.call(this, period, bufferType); - return maxIndex; - }, getMaxAllowedIndexForBufferType = function(bufferType, periodId) { - var abrController = this.system.getObject("abrController"), idx = 0; - if (abrController) { - idx = abrController.getTopQualityIndexFor(bufferType, periodId); - } - return idx; - }, getCurrentRepresentationSwitch = function(metrics) { - if (metrics === null) { - return null; - } - var repSwitch = metrics.RepSwitchList, repSwitchLength, repSwitchLastIndex, currentRepSwitch; - if (repSwitch === null || repSwitch.length <= 0) { - return null; - } - repSwitchLength = repSwitch.length; - repSwitchLastIndex = repSwitchLength - 1; - currentRepSwitch = repSwitch[repSwitchLastIndex]; - return currentRepSwitch; - }, getCurrentBufferLevel = function(metrics) { - if (metrics === null) { - return null; - } - var bufferLevel = metrics.BufferLevel, bufferLevelLength, bufferLevelLastIndex, currentBufferLevel; - if (bufferLevel === null || bufferLevel.length <= 0) { - return null; - } - bufferLevelLength = bufferLevel.length; - bufferLevelLastIndex = bufferLevelLength - 1; - currentBufferLevel = bufferLevel[bufferLevelLastIndex]; - return currentBufferLevel; - }, getCurrentPlaybackRate = function(metrics) { - if (metrics === null) { - return null; - } - var playList = metrics.PlayList, trace, currentRate; - if (playList === null || playList.length <= 0) { - return null; - } - trace = playList[playList.length - 1].trace; - if (trace === null || trace.length <= 0) { - return null; - } - currentRate = trace[trace.length - 1].playbackspeed; - return currentRate; - }, getCurrentHttpRequest = function(metrics) { - if (metrics === null) { - return null; - } - var httpList = metrics.HttpList, httpListLength, httpListLastIndex, currentHttpList = null; - if (httpList === null || httpList.length <= 0) { - return null; - } - httpListLength = httpList.length; - httpListLastIndex = httpListLength - 1; - while (httpListLastIndex >= 0) { - if (httpList[httpListLastIndex].responsecode) { - currentHttpList = httpList[httpListLastIndex]; - break; - } - httpListLastIndex -= 1; - } - return currentHttpList; - }, getHttpRequests = function(metrics) { - if (metrics === null) { - return []; - } - return !!metrics.HttpList ? metrics.HttpList : []; - }, getCurrentDroppedFrames = function(metrics) { - if (metrics === null) { - return null; - } - var droppedFrames = metrics.DroppedFrames, droppedFramesLength, droppedFramesLastIndex, currentDroppedFrames; - if (droppedFrames === null || droppedFrames.length <= 0) { - return null; - } - droppedFramesLength = droppedFrames.length; - droppedFramesLastIndex = droppedFramesLength - 1; - currentDroppedFrames = droppedFrames[droppedFramesLastIndex]; - return currentDroppedFrames; - }, getCurrentSchedulingInfo = function(metrics) { - if (metrics === null) return null; - var schedulingInfo = metrics.SchedulingInfo, ln, lastIdx, currentSchedulingInfo; - if (schedulingInfo === null || schedulingInfo.length <= 0) { - return null; - } - ln = schedulingInfo.length; - lastIdx = ln - 1; - currentSchedulingInfo = schedulingInfo[lastIdx]; - return currentSchedulingInfo; - }, getCurrentManifestUpdate = function(metrics) { - if (metrics === null) return null; - var manifestUpdate = metrics.ManifestUpdate, ln, lastIdx, currentManifestUpdate; - if (manifestUpdate === null || manifestUpdate.length <= 0) { - return null; - } - ln = manifestUpdate.length; - lastIdx = ln - 1; - currentManifestUpdate = manifestUpdate[lastIdx]; - return currentManifestUpdate; - }, getCurrentDVRInfo = function(metrics) { - if (metrics === null) { - return null; - } - var dvrInfo = metrics.DVRInfo, dvrInfoLastIndex, curentDVRInfo; - if (dvrInfo === null || dvrInfo.length <= 0) { - return null; - } - dvrInfoLastIndex = dvrInfo.length - 1; - curentDVRInfo = dvrInfo[dvrInfoLastIndex]; - return curentDVRInfo; - }, getLatestMPDRequestHeaderValueByID = function(metrics, id) { - if (metrics === null) return null; - var httpRequestList = getHttpRequests(metrics), httpRequest = httpRequestList[httpRequestList.length - 1], headers; - if (httpRequest.type === "MPD") { - headers = parseResponseHeaders(httpRequest.responseHeaders); - } - return headers[id] === undefined ? null : headers[id]; - }, getLatestFragmentRequestHeaderValueByID = function(metrics, id) { - if (metrics === null) return null; - var httpRequest = getCurrentHttpRequest(metrics), headers; - if (httpRequest === null || httpRequest.responseHeaders === null) return null; - headers = parseResponseHeaders(httpRequest.responseHeaders); - return headers[id] === undefined ? null : headers[id]; - }, parseResponseHeaders = function(headerStr) { - var headers = {}; - if (!headerStr) { - return headers; - } - var headerPairs = headerStr.split("\r\n"); - for (var i = 0, ilen = headerPairs.length; i < ilen; i++) { - var headerPair = headerPairs[i]; - var index = headerPair.indexOf(": "); - if (index > 0) { - headers[headerPair.substring(0, index)] = headerPair.substring(index + 2); - } - } - return headers; - }; - return { - manifestModel: undefined, - manifestExt: undefined, - system: undefined, - getBandwidthForRepresentation: getBandwidthForRepresentation, - getIndexForRepresentation: getIndexForRepresentation, - getMaxIndexForBufferType: getMaxIndexForBufferType, - getMaxAllowedIndexForBufferType: getMaxAllowedIndexForBufferType, - getCurrentRepresentationSwitch: getCurrentRepresentationSwitch, - getCurrentBufferLevel: getCurrentBufferLevel, - getCurrentPlaybackRate: getCurrentPlaybackRate, - getCurrentHttpRequest: getCurrentHttpRequest, - getHttpRequests: getHttpRequests, - getCurrentDroppedFrames: getCurrentDroppedFrames, - getCurrentSchedulingInfo: getCurrentSchedulingInfo, - getCurrentDVRInfo: getCurrentDVRInfo, - getCurrentManifestUpdate: getCurrentManifestUpdate, - getLatestFragmentRequestHeaderValueByID: getLatestFragmentRequestHeaderValueByID, - getLatestMPDRequestHeaderValueByID: getLatestMPDRequestHeaderValueByID - }; -}; - -Dash.dependencies.DashMetricsExtensions.prototype = { - constructor: Dash.dependencies.DashMetricsExtensions -}; - -function intTobitArray(integer, integerSizeInBit) { - var bitArray = []; - for (var i = 0; i < integerSizeInBit; i++) { - bitArray.push((integer & Math.pow(2, i)) > 0); - } - return bitArray; -} - -Dash.dependencies.FragmentExtensions = function() { - "use strict"; - var TFHD_BASE_DATA_OFFSET_PRESENT_FLAG_INDEX = 0, TFHD_SAMPLE_DESCRIPTION_INDEX_PRESENT_FLAG_INDEX = 1, TFHD_DEFAULT_SAMPLE_DURATION_PRESENT_FLAG_INDEX = 3, TFHD_DEFAULT_SAMPLE_SIZE_PRESENT_FLAG_INDEX = 4, TFHD_DEFAULT_SAMPLE_FLAGS_PRESENT_FLAG_INDEX = 5, TRUN_DATA_OFFSET_PRESENT_FLAG_INDEX = 0, TRUN_FIRST_SAMPLE_FLAGS_PRESENT_FLAG_INDEX = 2, TRUN_SAMPLE_DURATION_PRESENT_FLAG_INDEX = 8, TRUN_SAMPLE_SIZE_PRESENT_FLAG_INDEX = 9, TRUN_SAMPLE_FLAGS_PRESENT_FLAG_INDEX = 10, TRUN_SAMPLE_COMPOSITION_TIME_OFFSET_PRESENT_FLAG_INDEX = 11; - var parseTFDT = function(ab) { - var d = new DataView(ab), pos = 0, base_media_decode_time, version, size, type, i, c; - while (type !== "tfdt" && pos < d.byteLength) { - size = d.getUint32(pos); - pos += 4; - type = ""; - for (i = 0; i < 4; i += 1) { - c = d.getInt8(pos); - type += String.fromCharCode(c); - pos += 1; - } - if (type !== "moof" && type !== "traf" && type !== "tfdt") { - pos += size - 8; - } - } - if (pos === d.byteLength) { - throw "Error finding live offset."; - } - version = d.getUint8(pos); - if (version === 0) { - pos += 4; - base_media_decode_time = d.getUint32(pos, false); - } else { - pos += size - 16; - base_media_decode_time = utils.Math.to64BitNumber(d.getUint32(pos + 4, false), d.getUint32(pos, false)); - } - return { - version: version, - base_media_decode_time: base_media_decode_time - }; - }, parseSIDX = function(ab) { - var d = new DataView(ab), pos = 0, version, timescale, earliest_presentation_time, i, type, size, charCode; - while (type !== "sidx" && pos < d.byteLength) { - size = d.getUint32(pos); - pos += 4; - type = ""; - for (i = 0; i < 4; i += 1) { - charCode = d.getInt8(pos); - type += String.fromCharCode(charCode); - pos += 1; - } - if (type !== "moof" && type !== "traf" && type !== "sidx") { - pos += size - 8; - } else if (type === "sidx") { - pos -= 8; - } - } - version = d.getUint8(pos + 8); - pos += 12; - timescale = d.getUint32(pos + 4, false); - pos += 8; - if (version === 0) { - earliest_presentation_time = d.getUint32(pos, false); - } else { - earliest_presentation_time = utils.Math.to64BitNumber(d.getUint32(pos + 4, false), d.getUint32(pos, false)); - } - return { - earliestPresentationTime: earliest_presentation_time, - timescale: timescale - }; - }, parseTFHD = function(ab) { - var d = new DataView(ab), pos = 0, size, type, flags, flagsBits, tfhd, i, c; - while (type !== "tfhd" && pos < d.byteLength) { - size = d.getUint32(pos); - pos += 4; - type = ""; - for (i = 0; i < 4; i += 1) { - c = d.getInt8(pos); - type += String.fromCharCode(c); - pos += 1; - } - if (type !== "moof" && type !== "traf" && type !== "tfhd") { - pos += size - 8; - } - } - if (pos === d.byteLength) { - throw "Error finding live offset."; - } - tfhd = { - baseDataOffset: 0, - descriptionIndex: 0, - sampleDuration: 0, - sampleSize: 0, - defaultSampleFlags: 0 - }; - pos += 1; - pos += 2; - flags = d.getUint8(pos); - pos += 1; - flagsBits = intTobitArray(flags, 8); - pos += 4; - if (flagsBits[TFHD_BASE_DATA_OFFSET_PRESENT_FLAG_INDEX]) { - tfhd.baseDataOffset = utils.Math.to64BitNumber(d.getUint32(pos + 4, false), d.getUint32(pos, false)); - pos += 8; - } - if (flagsBits[TFHD_SAMPLE_DESCRIPTION_INDEX_PRESENT_FLAG_INDEX]) { - tfhd.descriptionIndex = d.getUint32(pos); - pos += 4; - } - if (flagsBits[TFHD_DEFAULT_SAMPLE_DURATION_PRESENT_FLAG_INDEX]) { - tfhd.sampleDuration = d.getUint32(pos); - pos += 4; - } - if (flagsBits[TFHD_DEFAULT_SAMPLE_SIZE_PRESENT_FLAG_INDEX]) { - tfhd.sampleSize = d.getUint32(pos); - pos += 4; - } - if (flagsBits[TFHD_DEFAULT_SAMPLE_FLAGS_PRESENT_FLAG_INDEX]) { - tfhd.defaultSampleFlags = d.getUint32(pos); - pos += 4; - } - return tfhd; - }, getMediaTimescaleFromMoov = function(ab) { - var d = new DataView(ab), pos = 0, version, size, type, i, c; - while (type !== "mdhd" && pos < d.byteLength) { - size = d.getUint32(pos); - pos += 4; - type = ""; - for (i = 0; i < 4; i += 1) { - c = d.getInt8(pos); - type += String.fromCharCode(c); - pos += 1; - } - if (type !== "moov" && type !== "trak" && type !== "mdia" && type !== "mdhd") { - pos += size - 8; - } - } - if (pos === d.byteLength) { - throw "Error finding live offset."; - } - version = d.getUint8(pos); - pos += 12; - if (version == 1) { - pos += 8; - } - return d.getUint32(pos, false); - }, getSamplesInfo = function(ab) { - var d = new DataView(ab), pos = 0, size, type, sampleDuration, sampleCompostionTimeOffset, sampleCount, sampleSize, sampleDts, sampleList, flags, flagsBits, i, c, moofPosition, tfhd, tfdt, dataOffset; - tfhd = parseTFHD(ab); - tfdt = parseTFDT(ab); - while (type !== "trun" && pos < d.byteLength) { - size = d.getUint32(pos); - pos += 4; - type = ""; - for (i = 0; i < 4; i += 1) { - c = d.getInt8(pos); - type += String.fromCharCode(c); - pos += 1; - } - if (type !== "moof" && type !== "traf" && type !== "trun") { - pos += size - 8; - } - if (type == "moof") { - moofPosition = pos - 8; - } - } - if (pos === d.byteLength) { - throw "Error finding live offset."; - } - pos += 1; - pos += 1; - flags = d.getUint16(pos); - pos += 2; - flagsBits = intTobitArray(flags, 16); - sampleCount = d.getUint32(pos); - pos += 4; - sampleDts = tfdt.base_media_decode_time; - if (flagsBits[TRUN_DATA_OFFSET_PRESENT_FLAG_INDEX]) { - dataOffset = d.getUint32(pos) + tfhd.baseDataOffset; - pos += 4; - } else { - dataOffset = tfhd.baseDataOffset; - } - if (flagsBits[TRUN_FIRST_SAMPLE_FLAGS_PRESENT_FLAG_INDEX]) { - pos += 4; - } - sampleList = []; - for (i = 0; i < sampleCount; i++) { - if (flagsBits[TRUN_SAMPLE_DURATION_PRESENT_FLAG_INDEX]) { - sampleDuration = d.getUint32(pos); - pos += 4; - } else { - sampleDuration = tfhd.sampleDuration; - } - if (flagsBits[TRUN_SAMPLE_SIZE_PRESENT_FLAG_INDEX]) { - sampleSize = d.getUint32(pos); - pos += 4; - } else { - sampleSize = tfhd.sampleSize; - } - if (flagsBits[TRUN_SAMPLE_FLAGS_PRESENT_FLAG_INDEX]) { - pos += 4; - } - if (flagsBits[TRUN_SAMPLE_COMPOSITION_TIME_OFFSET_PRESENT_FLAG_INDEX]) { - sampleCompostionTimeOffset = d.getUint32(pos); - pos += 4; - } else { - sampleCompostionTimeOffset = 0; - } - sampleList.push({ - dts: sampleDts, - cts: sampleDts + sampleCompostionTimeOffset, - duration: sampleDuration, - offset: moofPosition + dataOffset, - size: sampleSize - }); - dataOffset += sampleSize; - sampleDts += sampleDuration; - } - return sampleList; - }, loadFragment = function(media) { - var self = this, request = new XMLHttpRequest(), url = media, loaded = false, errorStr = "Error loading fragment: " + url, error = new MediaPlayer.vo.Error(null, errorStr, null), parsed; - request.onloadend = function() { - if (!loaded) { - errorStr = "Error loading fragment: " + url; - self.notify(Dash.dependencies.FragmentExtensions.eventList.ENAME_FRAGMENT_LOADING_COMPLETED, { - fragment: null - }, error); - } - }; - request.onload = function() { - loaded = true; - parsed = parseTFDT(request.response); - self.notify(Dash.dependencies.FragmentExtensions.eventList.ENAME_FRAGMENT_LOADING_COMPLETED, { - fragment: parsed - }); - }; - request.onerror = function() { - errorStr = "Error loading fragment: " + url; - self.notify(Dash.dependencies.FragmentExtensions.eventList.ENAME_FRAGMENT_LOADING_COMPLETED, { - fragment: null - }, error); - }; - request.responseType = "arraybuffer"; - request.open("GET", url); - request.send(null); - }; - return { - log: undefined, - notify: undefined, - subscribe: undefined, - unsubscribe: undefined, - loadFragment: loadFragment, - parseTFDT: parseTFDT, - parseSIDX: parseSIDX, - getSamplesInfo: getSamplesInfo, - getMediaTimescaleFromMoov: getMediaTimescaleFromMoov - }; -}; - -Dash.dependencies.FragmentExtensions.prototype = { - constructor: Dash.dependencies.FragmentExtensions -}; - -Dash.dependencies.FragmentExtensions.eventList = { - ENAME_FRAGMENT_LOADING_COMPLETED: "fragmentLoadingCompleted" -}; - -Dash.vo.AdaptationSet = function() { - "use strict"; - this.period = null; - this.index = -1; - this.type = null; -}; - -Dash.vo.AdaptationSet.prototype = { - constructor: Dash.vo.AdaptationSet -}; - -Dash.vo.Event = function() { - "use strict"; - this.duration = NaN; - this.presentationTime = NaN; - this.id = NaN; - this.messageData = ""; - this.eventStream = null; - this.presentationTimeDelta = NaN; -}; - -Dash.vo.Event.prototype = { - constructor: Dash.vo.Event -}; - -Dash.vo.EventStream = function() { - "use strict"; - this.adaptionSet = null; - this.representation = null; - this.period = null; - this.timescale = 1; - this.value = ""; - this.schemeIdUri = ""; -}; - -Dash.vo.EventStream.prototype = { - constructor: Dash.vo.EventStream -}; - -Dash.vo.Mpd = function() { - "use strict"; - this.manifest = null; - this.suggestedPresentationDelay = 0; - this.availabilityStartTime = null; - this.availabilityEndTime = Number.POSITIVE_INFINITY; - this.timeShiftBufferDepth = Number.POSITIVE_INFINITY; - this.maxSegmentDuration = Number.POSITIVE_INFINITY; - this.checkTime = NaN; - this.clientServerTimeShift = 0; - this.isClientServerTimeSyncCompleted = false; -}; - -Dash.vo.Mpd.prototype = { - constructor: Dash.vo.Mpd -}; - -Dash.vo.Period = function() { - "use strict"; - this.id = null; - this.index = -1; - this.duration = NaN; - this.start = NaN; - this.mpd = null; -}; - -Dash.vo.Period.prototype = { - constructor: Dash.vo.Period -}; - -Dash.vo.Representation = function() { - "use strict"; - this.id = null; - this.index = -1; - this.adaptation = null; - this.segmentInfoType = null; - this.initialization = null; - this.segmentDuration = NaN; - this.timescale = 1; - this.startNumber = 1; - this.indexRange = null; - this.range = null; - this.presentationTimeOffset = 0; - this.MSETimeOffset = NaN; - this.segmentAvailabilityRange = null; - this.availableSegmentsNumber = 0; - this.bandwidth = NaN; - this.maxPlayoutRate = NaN; -}; - -Dash.vo.Representation.prototype = { - constructor: Dash.vo.Representation -}; - -Dash.vo.Segment = function() { - "use strict"; - this.indexRange = null; - this.index = null; - this.mediaRange = null; - this.media = null; - this.duration = NaN; - this.replacementTime = null; - this.replacementNumber = NaN; - this.mediaStartTime = NaN; - this.presentationStartTime = NaN; - this.availabilityStartTime = NaN; - this.availabilityEndTime = NaN; - this.availabilityIdx = NaN; - this.wallStartTime = NaN; - this.representation = null; -}; - -Dash.vo.Segment.prototype = { - constructor: Dash.vo.Segment -}; - -Dash.vo.UTCTiming = function() { - "use strict"; - this.schemeIdUri = ""; - this.value = ""; -}; - -Dash.vo.UTCTiming.prototype = { - constructor: Dash.vo.UTCTiming -}; - -MediaPlayer.dependencies.ErrorHandler = function() { - "use strict"; - var errorEvent = MediaPlayer.events.ERROR; - return { - eventBus: undefined, - capabilityError: function(err) { - this.eventBus.dispatchEvent({ - type: errorEvent, - error: "capability", - event: err - }); - }, - downloadError: function(id, url, request) { - this.eventBus.dispatchEvent({ - type: errorEvent, - error: "download", - event: { - id: id, - url: url, - request: request - } - }); - }, - manifestError: function(message, id, manifest) { - this.eventBus.dispatchEvent({ - type: errorEvent, - error: "manifestError", - event: { - message: message, - id: id, - manifest: manifest - } - }); - }, - closedCaptionsError: function(message, id, ccContent) { - this.eventBus.dispatchEvent({ - type: errorEvent, - error: "cc", - event: { - message: message, - id: id, - cc: ccContent - } - }); - }, - mediaSourceError: function(err) { - this.eventBus.dispatchEvent({ - type: errorEvent, - error: "mediasource", - event: err - }); - }, - mediaKeySessionError: function(err) { - this.eventBus.dispatchEvent({ - type: errorEvent, - error: "key_session", - event: err - }); - }, - mediaKeyMessageError: function(err) { - this.eventBus.dispatchEvent({ - type: errorEvent, - error: "key_message", - event: err - }); - }, - mediaKeySystemSelectionError: function(err) { - this.eventBus.dispatchEvent({ - type: errorEvent, - error: "key_system_selection", - event: err - }); - } - }; -}; - -MediaPlayer.dependencies.ErrorHandler.prototype = { - constructor: MediaPlayer.dependencies.ErrorHandler -}; - -MediaPlayer.dependencies.FragmentLoader = function() { - "use strict"; - var RETRY_ATTEMPTS = 3, RETRY_INTERVAL = 500, xhrs = [], doLoad = function(request, remainingAttempts) { - var req = new XMLHttpRequest(), httpRequestMetrics = null, firstProgress = true, needFailureReport = true, lastTraceTime = null, self = this, handleLoaded = function(requestVO, succeeded) { - needFailureReport = false; - var currentTime = new Date(), bytes = req.response, latency, download; - if (!requestVO.firstByteDate) { - requestVO.firstByteDate = requestVO.requestStartDate; - } - requestVO.requestEndDate = currentTime; - latency = requestVO.firstByteDate.getTime() - requestVO.requestStartDate.getTime(); - download = requestVO.requestEndDate.getTime() - requestVO.firstByteDate.getTime(); - self.log((succeeded ? "loaded " : "failed ") + requestVO.mediaType + ":" + requestVO.type + ":" + requestVO.startTime + " (" + req.status + ", " + latency + "ms, " + download + "ms)"); - httpRequestMetrics.tresponse = requestVO.firstByteDate; - httpRequestMetrics.tfinish = requestVO.requestEndDate; - httpRequestMetrics.responsecode = req.status; - httpRequestMetrics.responseHeaders = req.getAllResponseHeaders(); - self.metricsModel.appendHttpTrace(httpRequestMetrics, currentTime, currentTime.getTime() - lastTraceTime.getTime(), [ bytes ? bytes.byteLength : 0 ]); - lastTraceTime = currentTime; - }; - xhrs.push(req); - request.requestStartDate = new Date(); - httpRequestMetrics = self.metricsModel.addHttpRequest(request.mediaType, null, request.type, request.url, null, request.range, request.requestStartDate, null, null, null, null, request.duration, null); - self.metricsModel.appendHttpTrace(httpRequestMetrics, request.requestStartDate, request.requestStartDate.getTime() - request.requestStartDate.getTime(), [ 0 ]); - lastTraceTime = request.requestStartDate; - req.open("GET", self.requestModifierExt.modifyRequestURL(request.url), true); - req.responseType = "arraybuffer"; - req = self.requestModifierExt.modifyRequestHeader(req); - if (request.range) { - req.setRequestHeader("Range", "bytes=" + request.range); - } - req.onprogress = function(event) { - var currentTime = new Date(); - if (firstProgress) { - firstProgress = false; - if (!event.lengthComputable || event.lengthComputable && event.total != event.loaded) { - request.firstByteDate = currentTime; - httpRequestMetrics.tresponse = currentTime; - } - } - if (event.lengthComputable) { - request.bytesLoaded = event.loaded; - request.bytesTotal = event.total; - } - self.metricsModel.appendHttpTrace(httpRequestMetrics, currentTime, currentTime.getTime() - lastTraceTime.getTime(), [ req.response ? req.response.byteLength : 0 ]); - lastTraceTime = currentTime; - self.notify(MediaPlayer.dependencies.FragmentLoader.eventList.ENAME_LOADING_PROGRESS, { - request: request - }); - }; - req.onload = function() { - if (req.status < 200 || req.status > 299) return; - handleLoaded(request, true); - self.notify(MediaPlayer.dependencies.FragmentLoader.eventList.ENAME_LOADING_COMPLETED, { - request: request, - response: req.response - }); - }; - req.onloadend = req.onerror = function() { - if (xhrs.indexOf(req) === -1) { - return; - } else { - xhrs.splice(xhrs.indexOf(req), 1); - } - if (!needFailureReport) return; - handleLoaded(request, false); - if (remainingAttempts > 0) { - self.log("Failed loading fragment: " + request.mediaType + ":" + request.type + ":" + request.startTime + ", retry in " + RETRY_INTERVAL + "ms" + " attempts: " + remainingAttempts); - remainingAttempts--; - setTimeout(function() { - doLoad.call(self, request, remainingAttempts); - }, RETRY_INTERVAL); - } else { - self.log("Failed loading fragment: " + request.mediaType + ":" + request.type + ":" + request.startTime + " no retry attempts left"); - self.errHandler.downloadError("content", request.url, req); - self.notify(MediaPlayer.dependencies.FragmentLoader.eventList.ENAME_LOADING_COMPLETED, { - request: request, - bytes: null - }, new MediaPlayer.vo.Error(null, "failed loading fragment", null)); - } - }; - req.send(); - }, checkForExistence = function(request) { - var self = this, req = new XMLHttpRequest(), isSuccessful = false; - req.open("HEAD", request.url, true); - req.onload = function() { - if (req.status < 200 || req.status > 299) return; - isSuccessful = true; - self.notify(MediaPlayer.dependencies.FragmentLoader.eventList.ENAME_CHECK_FOR_EXISTENCE_COMPLETED, { - request: request, - exists: true - }); - }; - req.onloadend = req.onerror = function() { - if (isSuccessful) return; - self.notify(MediaPlayer.dependencies.FragmentLoader.eventList.ENAME_CHECK_FOR_EXISTENCE_COMPLETED, { - request: request, - exists: false - }); - }; - req.send(); - }; - return { - metricsModel: undefined, - errHandler: undefined, - log: undefined, - requestModifierExt: undefined, - notify: undefined, - subscribe: undefined, - unsubscribe: undefined, - load: function(req) { - if (!req) { - this.notify(MediaPlayer.dependencies.FragmentLoader.eventList.ENAME_LOADING_COMPLETED, { - request: req, - bytes: null - }, new MediaPlayer.vo.Error(null, "request is null", null)); - } else { - doLoad.call(this, req, RETRY_ATTEMPTS); - } - }, - checkForExistence: function(req) { - if (!req) { - this.notify(MediaPlayer.dependencies.FragmentLoader.eventList.ENAME_CHECK_FOR_EXISTENCE_COMPLETED, { - request: req, - exists: false - }); - return; - } - checkForExistence.call(this, req); - }, - abort: function() { - var i, req, ln = xhrs.length; - for (i = 0; i < ln; i += 1) { - req = xhrs[i]; - xhrs[i] = null; - req.abort(); - req = null; - } - xhrs = []; - } - }; -}; - -MediaPlayer.dependencies.FragmentLoader.prototype = { - constructor: MediaPlayer.dependencies.FragmentLoader -}; - -MediaPlayer.dependencies.FragmentLoader.eventList = { - ENAME_LOADING_COMPLETED: "loadingCompleted", - ENAME_LOADING_PROGRESS: "loadingProgress", - ENAME_CHECK_FOR_EXISTENCE_COMPLETED: "checkForExistenceCompleted" -}; - -MediaPlayer.dependencies.LiveEdgeFinder = function() { - "use strict"; - var isSearchStarted = false, searchStartTime = NaN, rules, liveEdge = null, ruleSet = MediaPlayer.rules.SynchronizationRulesCollection.prototype.BEST_GUESS_RULES, onSearchCompleted = function(req) { - var searchTime = (new Date().getTime() - searchStartTime) / 1e3; - liveEdge = req.value; - this.notify(MediaPlayer.dependencies.LiveEdgeFinder.eventList.ENAME_LIVE_EDGE_SEARCH_COMPLETED, { - liveEdge: liveEdge, - searchTime: searchTime - }, liveEdge === null ? new MediaPlayer.vo.Error(MediaPlayer.dependencies.LiveEdgeFinder.LIVE_EDGE_NOT_FOUND_ERROR_CODE, "live edge has not been found", null) : null); - }, onStreamUpdated = function(e) { - var self = this; - if (!self.streamProcessor.isDynamic() || isSearchStarted || e.error) { - return; - } - rules = self.synchronizationRulesCollection.getRules(ruleSet); - isSearchStarted = true; - searchStartTime = new Date().getTime(); - self.rulesController.applyRules(rules, self.streamProcessor, onSearchCompleted.bind(self), null, function(currentValue, newValue) { - return newValue; - }); - }, onTimeSyncComplete = function(e) { - if (e.error) { - ruleSet = MediaPlayer.rules.SynchronizationRulesCollection.prototype.BEST_GUESS_RULES; - } else { - ruleSet = MediaPlayer.rules.SynchronizationRulesCollection.prototype.TIME_SYNCHRONIZED_RULES; - } - }; - return { - system: undefined, - synchronizationRulesCollection: undefined, - rulesController: undefined, - notify: undefined, - subscribe: undefined, - unsubscribe: undefined, - setup: function() { - this[MediaPlayer.dependencies.Stream.eventList.ENAME_STREAM_UPDATED] = onStreamUpdated; - this[MediaPlayer.dependencies.TimeSyncController.eventList.ENAME_TIME_SYNCHRONIZATION_COMPLETED] = onTimeSyncComplete; - }, - initialize: function(streamProcessor) { - this.streamProcessor = streamProcessor; - this.fragmentLoader = streamProcessor.fragmentLoader; - }, - abortSearch: function() { - isSearchStarted = false; - searchStartTime = NaN; - }, - getLiveEdge: function() { - return liveEdge; - }, - reset: function() { - this.abortSearch(); - liveEdge = null; - } - }; -}; - -MediaPlayer.dependencies.LiveEdgeFinder.prototype = { - constructor: MediaPlayer.dependencies.LiveEdgeFinder -}; - -MediaPlayer.dependencies.LiveEdgeFinder.eventList = { - ENAME_LIVE_EDGE_SEARCH_COMPLETED: "liveEdgeFound" -}; - -MediaPlayer.dependencies.LiveEdgeFinder.LIVE_EDGE_NOT_FOUND_ERROR_CODE = 1; - -MediaPlayer.dependencies.ManifestLoader = function() { - "use strict"; - var RETRY_ATTEMPTS = 3, RETRY_INTERVAL = 500, parseBaseUrl = function(url) { - var base = ""; - if (url.indexOf("/") !== -1) { - if (url.indexOf("?") !== -1) { - url = url.substring(0, url.indexOf("?")); - } - base = url.substring(0, url.lastIndexOf("/") + 1); - } - return base; - }, doLoad = function(url, remainingAttempts) { - var baseUrl = parseBaseUrl(url), request = new XMLHttpRequest(), requestTime = new Date(), loadedTime = null, needFailureReport = true, manifest, onload, report, self = this; - onload = function() { - if (request.status < 200 || request.status > 299) { - return; - } - needFailureReport = false; - loadedTime = new Date(); - self.metricsModel.addHttpRequest("stream", null, "MPD", url, null, null, requestTime, loadedTime, null, request.status, null, null, request.getAllResponseHeaders()); - if (request.responseURL) { - baseUrl = parseBaseUrl(request.responseURL); - url = request.responseURL; - } - manifest = self.parser.parse(request.responseText, baseUrl); - if (manifest) { - manifest.url = url; - manifest.loadedTime = loadedTime; - self.metricsModel.addManifestUpdate("stream", manifest.type, requestTime, loadedTime, manifest.availabilityStartTime); - self.xlinkController.resolveManifestOnLoad(manifest); - } else { - self.notify(MediaPlayer.dependencies.ManifestLoader.eventList.ENAME_MANIFEST_LOADED, { - manifest: null - }, new MediaPlayer.vo.Error(null, "Failed loading manifest: " + url, null)); - } - }; - report = function() { - if (!needFailureReport) { - return; - } - needFailureReport = false; - self.metricsModel.addHttpRequest("stream", null, "MPD", url, null, null, requestTime, new Date(), request.status, null, null, request.getAllResponseHeaders()); - if (remainingAttempts > 0) { - self.log("Failed loading manifest: " + url + ", retry in " + RETRY_INTERVAL + "ms" + " attempts: " + remainingAttempts); - remainingAttempts--; - setTimeout(function() { - doLoad.call(self, url, remainingAttempts); - }, RETRY_INTERVAL); - } else { - self.log("Failed loading manifest: " + url + " no retry attempts left"); - self.errHandler.downloadError("manifest", url, request); - self.notify(MediaPlayer.dependencies.ManifestLoader.eventList.ENAME_MANIFEST_LOADED, null, new Error("Failed loading manifest: " + url + " no retry attempts left")); - } - }; - try { - request.onload = onload; - request.onloadend = report; - request.onerror = report; - request.open("GET", self.requestModifierExt.modifyRequestURL(url), true); - request.send(); - } catch (e) { - request.onerror(); - } - }, onXlinkReady = function(event) { - this.notify(MediaPlayer.dependencies.ManifestLoader.eventList.ENAME_MANIFEST_LOADED, { - manifest: event.data.manifest - }); - }; - return { - log: undefined, - parser: undefined, - errHandler: undefined, - metricsModel: undefined, - requestModifierExt: undefined, - notify: undefined, - subscribe: undefined, - unsubscribe: undefined, - xlinkController: undefined, - load: function(url) { - doLoad.call(this, url, RETRY_ATTEMPTS); - }, - setup: function() { - onXlinkReady = onXlinkReady.bind(this); - this.xlinkController.subscribe(MediaPlayer.dependencies.XlinkController.eventList.ENAME_XLINK_READY, this, onXlinkReady); - } - }; -}; - -MediaPlayer.dependencies.ManifestLoader.prototype = { - constructor: MediaPlayer.dependencies.ManifestLoader -}; - -MediaPlayer.dependencies.ManifestLoader.eventList = { - ENAME_MANIFEST_LOADED: "manifestLoaded" -}; - -MediaPlayer.dependencies.ManifestUpdater = function() { - "use strict"; - var refreshDelay = NaN, refreshTimer = null, isStopped = true, isUpdating = false, manifestLoader, clear = function() { - if (refreshTimer !== null) { - clearInterval(refreshTimer); - refreshTimer = null; - } - }, start = function() { - clear.call(this); - if (!isNaN(refreshDelay)) { - this.log("Refresh manifest in " + refreshDelay + " seconds."); - refreshTimer = setTimeout(onRefreshTimer.bind(this), Math.min(refreshDelay * 1e3, Math.pow(2, 31) - 1), this); - } - }, update = function(manifest) { - var delay, timeSinceLastUpdate; - this.manifestModel.setValue(manifest); - this.log("Manifest has been refreshed."); - delay = this.manifestExt.getRefreshDelay(manifest); - timeSinceLastUpdate = (new Date().getTime() - manifest.loadedTime.getTime()) / 1e3; - refreshDelay = Math.max(delay - timeSinceLastUpdate, 0); - this.notify(MediaPlayer.dependencies.ManifestUpdater.eventList.ENAME_MANIFEST_UPDATED, { - manifest: manifest - }); - if (!isStopped) { - start.call(this); - } - }, onRefreshTimer = function() { - var self = this, manifest, url; - if (isStopped || isUpdating) return; - isUpdating = true; - manifest = self.manifestModel.getValue(); - url = manifest.url; - if (manifest.hasOwnProperty("Location")) { - url = manifest.Location; - } - manifestLoader.load(url); - }, onManifestLoaded = function(e) { - if (!e.error) { - update.call(this, e.data.manifest); - } - }, onPlaybackStarted = function() { - isStopped = false; - start.call(this); - }, onPlaybackPaused = function() { - isStopped = true; - clear.call(this); - }, onStreamsComposed = function() { - isUpdating = false; - }; - return { - log: undefined, - system: undefined, - subscribe: undefined, - unsubscribe: undefined, - notify: undefined, - manifestModel: undefined, - manifestExt: undefined, - setup: function() { - this[MediaPlayer.dependencies.StreamController.eventList.ENAME_STREAMS_COMPOSED] = onStreamsComposed; - this[MediaPlayer.dependencies.ManifestLoader.eventList.ENAME_MANIFEST_LOADED] = onManifestLoaded; - this[MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_STARTED] = onPlaybackStarted; - this[MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_PAUSED] = onPlaybackPaused; - }, - initialize: function(loader) { - isUpdating = false; - isStopped = true; - manifestLoader = loader; - manifestLoader.subscribe(MediaPlayer.dependencies.ManifestLoader.eventList.ENAME_MANIFEST_LOADED, this); - }, - setManifest: function(m) { - update.call(this, m); - }, - getManifestLoader: function() { - return manifestLoader; - }, - reset: function() { - isStopped = true; - isUpdating = false; - clear.call(this); - manifestLoader.unsubscribe(MediaPlayer.dependencies.ManifestLoader.eventList.ENAME_MANIFEST_LOADED, this); - refreshDelay = NaN; - } - }; -}; - -MediaPlayer.dependencies.ManifestUpdater.prototype = { - constructor: MediaPlayer.dependencies.ManifestUpdater -}; - -MediaPlayer.dependencies.ManifestUpdater.eventList = { - ENAME_MANIFEST_UPDATED: "manifestUpdated" -}; - -MediaPlayer.dependencies.Notifier = function() { - "use strict"; - var OBSERVABLE_ID_PROP = "observableId", system, id = 0, getId = function() { - if (!this[OBSERVABLE_ID_PROP]) { - id += 1; - this[OBSERVABLE_ID_PROP] = "_id_" + id; - } - return this[OBSERVABLE_ID_PROP]; - }; - return { - system: undefined, - setup: function() { - system = this.system; - system.mapValue("notify", this.notify); - system.mapValue("subscribe", this.subscribe); - system.mapValue("unsubscribe", this.unsubscribe); - }, - notify: function() { - var eventId = arguments[0] + getId.call(this), event = new MediaPlayer.vo.Event(); - event.sender = this; - event.type = arguments[0]; - event.data = arguments[1]; - event.error = arguments[2]; - event.timestamp = new Date().getTime(); - system.notify.call(system, eventId, event); - }, - subscribe: function(eventName, observer, handler, oneShot) { - if (!handler && observer[eventName]) { - handler = observer[eventName] = observer[eventName].bind(observer); - } - if (!observer) throw "observer object cannot be null or undefined"; - if (!handler) throw "event handler cannot be null or undefined"; - eventName += getId.call(this); - system.mapHandler(eventName, undefined, handler, oneShot); - }, - unsubscribe: function(eventName, observer, handler) { - handler = handler || observer[eventName]; - eventName += getId.call(this); - system.unmapHandler(eventName, undefined, handler); - } - }; -}; - -MediaPlayer.dependencies.Notifier.prototype = { - constructor: MediaPlayer.dependencies.Notifier -}; - -MediaPlayer.dependencies.Stream = function() { - "use strict"; - var streamProcessors = [], isStreamActivated = false, isMediaInitialized = false, streamInfo = null, updateError = {}, isUpdating = false, isInitialized = false, protectionController, ownProtectionController = false, eventController = null, onProtectionError = function(event) { - this.errHandler.mediaKeySessionError(event.data); - this.log(event.data); - this.reset(); - }, initializeMediaForType = function(type, mediaSource) { - var self = this, mimeType = null, manifest = self.manifestModel.getValue(), codec, getCodecOrMimeType = function(mediaInfo) { - return mediaInfo.codec; - }, streamProcessor, mediaInfo = self.adapter.getMediaInfoForType(manifest, streamInfo, type); - if (type === "text") { - getCodecOrMimeType = function(mediaInfo) { - mimeType = mediaInfo.mimeType; - return mimeType; - }; - } - if (mediaInfo !== null) { - var codecOrMime = getCodecOrMimeType.call(self, mediaInfo), contentProtectionData; - if (type !== "text" && type !== "fragmentedText") { - codec = codecOrMime; - self.log(type + " codec: " + codec); - contentProtectionData = mediaInfo.contentProtection; - if (!!contentProtectionData && !self.capabilities.supportsEncryptedMedia()) { - self.errHandler.capabilityError("encryptedmedia"); - } else { - if (!self.capabilities.supportsCodec(self.videoModel.getElement(), codec)) { - var msg = type + "Codec (" + codec + ") is not supported."; - self.errHandler.manifestError(msg, "codec", manifest); - self.log(msg); - return; - } - } - } - streamProcessor = self.system.getObject("streamProcessor"); - streamProcessors.push(streamProcessor); - streamProcessor.initialize(mimeType || type, self.fragmentController, mediaSource, self, eventController); - self.abrController.updateTopQualityIndex(mediaInfo); - streamProcessor.updateMediaInfo(manifest, mediaInfo); - } else { - self.log("No " + type + " data."); - } - }, initializeMedia = function(mediaSource) { - var self = this, manifest = self.manifestModel.getValue(), events; - eventController = self.system.getObject("eventController"); - events = self.adapter.getEventsFor(manifest, streamInfo); - eventController.addInlineEvents(events); - isUpdating = true; - initializeMediaForType.call(self, "video", mediaSource); - initializeMediaForType.call(self, "audio", mediaSource); - initializeMediaForType.call(self, "text", mediaSource); - initializeMediaForType.call(self, "fragmentedText", mediaSource); - createBuffers.call(self); - isMediaInitialized = true; - isUpdating = false; - if (streamProcessors.length === 0) { - var msg = "No streams to play."; - self.errHandler.manifestError(msg, "nostreams", manifest); - self.log(msg); - } else { - self.liveEdgeFinder.initialize(streamProcessors[0]); - self.liveEdgeFinder.subscribe(MediaPlayer.dependencies.LiveEdgeFinder.eventList.ENAME_LIVE_EDGE_SEARCH_COMPLETED, self.playbackController); - } - checkIfInitializationCompleted.call(this); - }, checkIfInitializationCompleted = function() { - var self = this, ln = streamProcessors.length, hasError = !!updateError.audio || !!updateError.video, error = hasError ? new MediaPlayer.vo.Error(MediaPlayer.dependencies.Stream.DATA_UPDATE_FAILED_ERROR_CODE, "Data update failed", null) : null, i = 0; - for (i; i < ln; i += 1) { - if (streamProcessors[i].isUpdating() || isUpdating) return; - } - isInitialized = true; - self.eventBus.dispatchEvent({ - type: MediaPlayer.events.STREAM_INITIALIZED, - data: { - streamInfo: streamInfo - } - }); - self.notify(MediaPlayer.dependencies.Stream.eventList.ENAME_STREAM_UPDATED, { - streamInfo: streamInfo - }, error); - if (!isMediaInitialized || isStreamActivated) return; - protectionController.init(self.manifestModel.getValue(), getMediaInfo.call(this, "audio"), getMediaInfo.call(this, "video")); - isStreamActivated = true; - }, getMediaInfo = function(type) { - var ln = streamProcessors.length, mediaCtrl = null; - for (var i = 0; i < ln; i += 1) { - mediaCtrl = streamProcessors[i]; - if (mediaCtrl.getType() === type) return mediaCtrl.getMediaInfo(); - } - return null; - }, createBuffers = function() { - for (var i = 0, ln = streamProcessors.length; i < ln; i += 1) { - streamProcessors[i].createBuffer(); - } - }, onBufferingCompleted = function() { - var processors = getAudioVideoProcessors(), ln = processors.length, i = 0; - for (i; i < ln; i += 1) { - if (!processors[i].isBufferingCompleted()) return; - } - this.notify(MediaPlayer.dependencies.Stream.eventList.ENAME_STREAM_BUFFERING_COMPLETED, { - streamInfo: streamInfo - }); - }, onDataUpdateCompleted = function(e) { - var type = e.sender.streamProcessor.getType(); - updateError[type] = e.error; - checkIfInitializationCompleted.call(this); - }, getAudioVideoProcessors = function() { - var arr = [], i = 0, ln = streamProcessors.length, type, controller; - for (i; i < ln; i += 1) { - controller = streamProcessors[i]; - type = controller.getType(); - if (type === "audio" || type === "video") { - arr.push(controller); - } - } - return arr; - }, updateData = function(updatedStreamInfo) { - var self = this, ln = streamProcessors.length, manifest = self.manifestModel.getValue(), i = 0, mediaInfo, events, controller; - isStreamActivated = false; - streamInfo = updatedStreamInfo; - self.log("Manifest updated... set new data on buffers."); - if (eventController) { - events = self.adapter.getEventsFor(manifest, streamInfo); - eventController.addInlineEvents(events); - } - isUpdating = true; - isInitialized = false; - for (i; i < ln; i += 1) { - controller = streamProcessors[i]; - mediaInfo = self.adapter.getMediaInfoForType(manifest, streamInfo, controller.getType()); - this.abrController.updateTopQualityIndex(mediaInfo); - controller.updateMediaInfo(manifest, mediaInfo); - } - isUpdating = false; - checkIfInitializationCompleted.call(self); - }; - return { - system: undefined, - eventBus: undefined, - manifestModel: undefined, - sourceBufferExt: undefined, - adapter: undefined, - videoModel: undefined, - fragmentController: undefined, - playbackController: undefined, - capabilities: undefined, - log: undefined, - errHandler: undefined, - liveEdgeFinder: undefined, - abrController: undefined, - notify: undefined, - subscribe: undefined, - unsubscribe: undefined, - setup: function() { - this[MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFERING_COMPLETED] = onBufferingCompleted; - this[Dash.dependencies.RepresentationController.eventList.ENAME_DATA_UPDATE_COMPLETED] = onDataUpdateCompleted; - this[MediaPlayer.dependencies.ProtectionController.eventList.ENAME_PROTECTION_ERROR] = onProtectionError.bind(this); - }, - initialize: function(strmInfo, protectionCtrl, protectionData) { - streamInfo = strmInfo; - if (this.capabilities.supportsEncryptedMedia()) { - if (!protectionCtrl) { - protectionCtrl = this.system.getObject("protectionController"); - ownProtectionController = true; - } - protectionController = protectionCtrl; - protectionController.subscribe(MediaPlayer.dependencies.ProtectionController.eventList.ENAME_PROTECTION_ERROR, this); - protectionController.setMediaElement(this.videoModel.getElement()); - if (protectionData) { - protectionController.setProtectionData(protectionData); - } - } - }, - activate: function(mediaSource) { - if (!isStreamActivated) { - initializeMedia.call(this, mediaSource); - } else { - createBuffers.call(this); - } - }, - deactivate: function() { - var ln = streamProcessors.length, i = 0; - for (i; i < ln; i += 1) { - streamProcessors[i].reset(); - } - streamProcessors = []; - isStreamActivated = false; - isMediaInitialized = false; - this.resetEventController(); - }, - reset: function(errored) { - this.playbackController.pause(); - var ln = streamProcessors.length, i = 0, processors; - for (i; i < ln; i += 1) { - processors = streamProcessors[i]; - processors.reset(errored); - processors = null; - } - if (!!eventController) { - eventController.reset(); - } - streamProcessors = []; - isUpdating = false; - isInitialized = false; - if (this.fragmentController) { - this.fragmentController.reset(); - } - this.fragmentController = undefined; - this.liveEdgeFinder.abortSearch(); - this.liveEdgeFinder.unsubscribe(MediaPlayer.dependencies.LiveEdgeFinder.eventList.ENAME_LIVE_EDGE_SEARCH_COMPLETED, this.playbackController); - if (protectionController) { - protectionController.unsubscribe(MediaPlayer.dependencies.ProtectionController.eventList.ENAME_PROTECTION_ERROR, this); - if (ownProtectionController) { - protectionController.teardown(); - protectionController = null; - ownProtectionController = false; - } - } - isMediaInitialized = false; - isStreamActivated = false; - updateError = {}; - }, - getDuration: function() { - return streamInfo.duration; - }, - getStartTime: function() { - return streamInfo.start; - }, - getStreamIndex: function() { - return streamInfo.index; - }, - getId: function() { - return streamInfo.id; - }, - getStreamInfo: function() { - return streamInfo; - }, - hasMedia: function(type) { - return getMediaInfo.call(this, type) !== null; - }, - getBitrateListFor: function(type) { - var mediaInfo = getMediaInfo.call(this, type); - return this.abrController.getBitrateList(mediaInfo); - }, - startEventController: function() { - eventController.start(); - }, - resetEventController: function() { - eventController.reset(); - }, - isActivated: function() { - return isStreamActivated; - }, - isInitialized: function() { - return isInitialized; - }, - updateData: updateData - }; -}; - -MediaPlayer.dependencies.Stream.prototype = { - constructor: MediaPlayer.dependencies.Stream -}; - -MediaPlayer.dependencies.Stream.DATA_UPDATE_FAILED_ERROR_CODE = 1; - -MediaPlayer.dependencies.Stream.eventList = { - ENAME_STREAM_UPDATED: "streamUpdated", - ENAME_STREAM_BUFFERING_COMPLETED: "streamBufferingCompleted" -}; - -MediaPlayer.dependencies.StreamProcessor = function() { - "use strict"; - var isDynamic, stream = null, mediaInfo = null, type = null, eventController = null, createBufferControllerForType = function(type) { - var self = this, controllerName = type === "video" || type === "audio" || type === "fragmentedText" ? "bufferController" : "textController"; - return self.system.getObject(controllerName); - }; - return { - system: undefined, - videoModel: undefined, - indexHandler: undefined, - liveEdgeFinder: undefined, - timelineConverter: undefined, - abrController: undefined, - playbackController: undefined, - baseURLExt: undefined, - adapter: undefined, - manifestModel: undefined, - initialize: function(typeValue, fragmentController, mediaSource, streamValue, eventControllerValue) { - var self = this, trackController = self.system.getObject("trackController"), scheduleController = self.system.getObject("scheduleController"), liveEdgeFinder = self.liveEdgeFinder, abrController = self.abrController, indexHandler = self.indexHandler, baseUrlExt = self.baseURLExt, playbackController = self.playbackController, fragmentModel, fragmentLoader = this.system.getObject("fragmentLoader"), bufferController = createBufferControllerForType.call(self, typeValue); - stream = streamValue; - type = typeValue; - eventController = eventControllerValue; - isDynamic = stream.getStreamInfo().manifestInfo.isDynamic; - self.bufferController = bufferController; - self.scheduleController = scheduleController; - self.trackController = trackController; - self.fragmentController = fragmentController; - self.fragmentLoader = fragmentLoader; - trackController.subscribe(Dash.dependencies.RepresentationController.eventList.ENAME_DATA_UPDATE_COMPLETED, bufferController); - fragmentController.subscribe(MediaPlayer.dependencies.FragmentController.eventList.ENAME_INIT_FRAGMENT_LOADED, bufferController); - trackController.subscribe(Dash.dependencies.RepresentationController.eventList.ENAME_DATA_UPDATE_COMPLETED, stream); - if (type === "video" || type === "audio" || type === "fragmentedText") { - abrController.subscribe(MediaPlayer.dependencies.AbrController.eventList.ENAME_QUALITY_CHANGED, bufferController); - abrController.subscribe(MediaPlayer.dependencies.AbrController.eventList.ENAME_QUALITY_CHANGED, trackController); - abrController.subscribe(MediaPlayer.dependencies.AbrController.eventList.ENAME_QUALITY_CHANGED, scheduleController); - liveEdgeFinder.subscribe(MediaPlayer.dependencies.LiveEdgeFinder.eventList.ENAME_LIVE_EDGE_SEARCH_COMPLETED, this.timelineConverter); - liveEdgeFinder.subscribe(MediaPlayer.dependencies.LiveEdgeFinder.eventList.ENAME_LIVE_EDGE_SEARCH_COMPLETED, trackController); - liveEdgeFinder.subscribe(MediaPlayer.dependencies.LiveEdgeFinder.eventList.ENAME_LIVE_EDGE_SEARCH_COMPLETED, scheduleController); - trackController.subscribe(Dash.dependencies.RepresentationController.eventList.ENAME_DATA_UPDATE_STARTED, scheduleController); - trackController.subscribe(Dash.dependencies.RepresentationController.eventList.ENAME_DATA_UPDATE_COMPLETED, scheduleController); - stream.subscribe(MediaPlayer.dependencies.Stream.eventList.ENAME_STREAM_UPDATED, scheduleController); - trackController.subscribe(Dash.dependencies.RepresentationController.eventList.ENAME_DATA_UPDATE_COMPLETED, playbackController); - fragmentController.subscribe(MediaPlayer.dependencies.FragmentController.eventList.ENAME_MEDIA_FRAGMENT_LOADED, bufferController); - fragmentController.subscribe(MediaPlayer.dependencies.FragmentController.eventList.ENAME_MEDIA_FRAGMENT_LOADING_START, scheduleController); - fragmentController.subscribe(MediaPlayer.dependencies.FragmentController.eventList.ENAME_STREAM_COMPLETED, scheduleController); - fragmentController.subscribe(MediaPlayer.dependencies.FragmentController.eventList.ENAME_STREAM_COMPLETED, bufferController); - fragmentController.subscribe(MediaPlayer.dependencies.FragmentController.eventList.ENAME_STREAM_COMPLETED, scheduleController.scheduleRulesCollection.bufferLevelRule); - bufferController.subscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_STATE_CHANGED, playbackController); - bufferController.subscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_CLEARED, scheduleController); - bufferController.subscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BYTES_APPENDED, scheduleController); - bufferController.subscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_UPDATED, scheduleController); - bufferController.subscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_UPDATED, trackController); - bufferController.subscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_STATE_CHANGED, scheduleController); - bufferController.subscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_INIT_REQUESTED, scheduleController); - bufferController.subscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFERING_COMPLETED, stream); - bufferController.subscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_QUOTA_EXCEEDED, scheduleController); - bufferController.subscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_OUTRUN, scheduleController.scheduleRulesCollection.bufferLevelRule); - bufferController.subscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_BALANCED, scheduleController.scheduleRulesCollection.bufferLevelRule); - bufferController.subscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BYTES_APPENDED, playbackController); - playbackController.subscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_PROGRESS, bufferController); - playbackController.subscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_TIME_UPDATED, bufferController); - playbackController.subscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_RATE_CHANGED, bufferController); - playbackController.subscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_RATE_CHANGED, scheduleController); - playbackController.subscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_SEEKING, bufferController); - playbackController.subscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_SEEKING, scheduleController); - playbackController.subscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_STARTED, scheduleController); - playbackController.subscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_SEEKING, scheduleController.scheduleRulesCollection.playbackTimeRule); - playbackController.subscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_SEEKING, abrController.abrRulesCollection.insufficientBufferRule); - if (isDynamic) { - playbackController.subscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_WALLCLOCK_TIME_UPDATED, trackController); - } - playbackController.subscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_WALLCLOCK_TIME_UPDATED, bufferController); - playbackController.subscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_WALLCLOCK_TIME_UPDATED, scheduleController); - baseUrlExt.subscribe(Dash.dependencies.BaseURLExtensions.eventList.ENAME_INITIALIZATION_LOADED, indexHandler); - baseUrlExt.subscribe(Dash.dependencies.BaseURLExtensions.eventList.ENAME_SEGMENTS_LOADED, indexHandler); - } else { - bufferController.subscribe(MediaPlayer.dependencies.TextController.eventList.ENAME_CLOSED_CAPTIONING_REQUESTED, scheduleController); - } - indexHandler.initialize(this); - indexHandler.setCurrentTime(playbackController.getStreamStartTime(this.getStreamInfo())); - bufferController.initialize(type, mediaSource, self); - scheduleController.initialize(type, this); - abrController.initialize(type, this); - fragmentModel = this.getFragmentModel(); - fragmentModel.setLoader(fragmentLoader); - fragmentModel.subscribe(MediaPlayer.dependencies.FragmentModel.eventList.ENAME_FRAGMENT_LOADING_STARTED, fragmentController); - fragmentModel.subscribe(MediaPlayer.dependencies.FragmentModel.eventList.ENAME_FRAGMENT_LOADING_COMPLETED, fragmentController); - fragmentModel.subscribe(MediaPlayer.dependencies.FragmentModel.eventList.ENAME_STREAM_COMPLETED, fragmentController); - fragmentModel.subscribe(MediaPlayer.dependencies.FragmentModel.eventList.ENAME_FRAGMENT_LOADING_COMPLETED, scheduleController); - fragmentLoader.subscribe(MediaPlayer.dependencies.FragmentLoader.eventList.ENAME_LOADING_COMPLETED, fragmentModel); - fragmentLoader.subscribe(MediaPlayer.dependencies.FragmentLoader.eventList.ENAME_LOADING_PROGRESS, abrController); - if (type === "video" || type === "audio" || type === "fragmentedText") { - bufferController.subscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_OUTRUN, fragmentModel); - bufferController.subscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_BALANCED, fragmentModel); - bufferController.subscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BYTES_REJECTED, fragmentModel); - } - trackController.initialize(this); - }, - isUpdating: function() { - return this.trackController.isUpdating(); - }, - getType: function() { - return type; - }, - getABRController: function() { - return this.abrController; - }, - getFragmentLoader: function() { - return this.fragmentLoader; - }, - getFragmentModel: function() { - return this.scheduleController.getFragmentModel(); - }, - getStreamInfo: function() { - return stream.getStreamInfo(); - }, - updateMediaInfo: function(manifest, newMediaInfo) { - if (newMediaInfo !== mediaInfo && (!newMediaInfo || !mediaInfo || newMediaInfo.type === mediaInfo.type)) { - mediaInfo = newMediaInfo; - } - this.adapter.updateData(manifest, this); - }, - getMediaInfo: function() { - return mediaInfo; - }, - getScheduleController: function() { - return this.scheduleController; - }, - getEventController: function() { - return eventController; - }, - start: function() { - this.scheduleController.start(); - }, - stop: function() { - this.scheduleController.stop(); - }, - getCurrentTrack: function() { - return this.adapter.getCurrentTrackInfo(this.manifestModel.getValue(), this.trackController); - }, - getTrackForQuality: function(quality) { - return this.adapter.getTrackInfoForQuality(this.manifestModel.getValue(), this.trackController, quality); - }, - isBufferingCompleted: function() { - return this.bufferController.isBufferingCompleted(); - }, - createBuffer: function() { - return this.bufferController.getBuffer() || this.bufferController.createBuffer(mediaInfo); - }, - isDynamic: function() { - return isDynamic; - }, - reset: function(errored) { - var self = this, bufferController = self.bufferController, trackController = self.trackController, scheduleController = self.scheduleController, liveEdgeFinder = self.liveEdgeFinder, fragmentController = self.fragmentController, abrController = self.abrController, playbackController = self.playbackController, indexHandler = this.indexHandler, baseUrlExt = this.baseURLExt, fragmentModel = this.getFragmentModel(), fragmentLoader = this.fragmentLoader; - abrController.unsubscribe(MediaPlayer.dependencies.AbrController.eventList.ENAME_QUALITY_CHANGED, bufferController); - abrController.unsubscribe(MediaPlayer.dependencies.AbrController.eventList.ENAME_QUALITY_CHANGED, trackController); - abrController.unsubscribe(MediaPlayer.dependencies.AbrController.eventList.ENAME_QUALITY_CHANGED, scheduleController); - liveEdgeFinder.unsubscribe(MediaPlayer.dependencies.LiveEdgeFinder.eventList.ENAME_LIVE_EDGE_SEARCH_COMPLETED, this.timelineConverter); - liveEdgeFinder.unsubscribe(MediaPlayer.dependencies.LiveEdgeFinder.eventList.ENAME_LIVE_EDGE_SEARCH_COMPLETED, scheduleController); - liveEdgeFinder.unsubscribe(MediaPlayer.dependencies.LiveEdgeFinder.eventList.ENAME_LIVE_EDGE_SEARCH_COMPLETED, trackController); - trackController.unsubscribe(Dash.dependencies.RepresentationController.eventList.ENAME_DATA_UPDATE_STARTED, scheduleController); - trackController.unsubscribe(Dash.dependencies.RepresentationController.eventList.ENAME_DATA_UPDATE_COMPLETED, bufferController); - trackController.unsubscribe(Dash.dependencies.RepresentationController.eventList.ENAME_DATA_UPDATE_COMPLETED, scheduleController); - trackController.unsubscribe(Dash.dependencies.RepresentationController.eventList.ENAME_DATA_UPDATE_COMPLETED, stream); - trackController.unsubscribe(Dash.dependencies.RepresentationController.eventList.ENAME_DATA_UPDATE_COMPLETED, playbackController); - stream.unsubscribe(MediaPlayer.dependencies.Stream.eventList.ENAME_STREAM_UPDATED, scheduleController); - fragmentController.unsubscribe(MediaPlayer.dependencies.FragmentController.eventList.ENAME_INIT_FRAGMENT_LOADED, bufferController); - fragmentController.unsubscribe(MediaPlayer.dependencies.FragmentController.eventList.ENAME_MEDIA_FRAGMENT_LOADED, bufferController); - fragmentController.unsubscribe(MediaPlayer.dependencies.FragmentController.eventList.ENAME_MEDIA_FRAGMENT_LOADING_START, scheduleController); - fragmentController.unsubscribe(MediaPlayer.dependencies.FragmentController.eventList.ENAME_STREAM_COMPLETED, scheduleController); - fragmentController.unsubscribe(MediaPlayer.dependencies.FragmentController.eventList.ENAME_STREAM_COMPLETED, bufferController); - fragmentController.unsubscribe(MediaPlayer.dependencies.FragmentController.eventList.ENAME_STREAM_COMPLETED, scheduleController.scheduleRulesCollection.bufferLevelRule); - bufferController.unsubscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_STATE_CHANGED, playbackController); - bufferController.unsubscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_CLEARED, scheduleController); - bufferController.unsubscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BYTES_APPENDED, scheduleController); - bufferController.unsubscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_UPDATED, scheduleController); - bufferController.unsubscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_UPDATED, trackController); - bufferController.unsubscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_STATE_CHANGED, scheduleController); - bufferController.unsubscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_INIT_REQUESTED, scheduleController); - bufferController.unsubscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFERING_COMPLETED, stream); - bufferController.unsubscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_CLOSED_CAPTIONING_REQUESTED, scheduleController); - bufferController.unsubscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_OUTRUN, scheduleController.scheduleRulesCollection.bufferLevelRule); - bufferController.unsubscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_BALANCED, scheduleController.scheduleRulesCollection.bufferLevelRule); - bufferController.unsubscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BYTES_APPENDED, playbackController); - playbackController.unsubscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_PROGRESS, bufferController); - playbackController.unsubscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_TIME_UPDATED, bufferController); - playbackController.unsubscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_RATE_CHANGED, bufferController); - playbackController.unsubscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_RATE_CHANGED, scheduleController); - playbackController.unsubscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_SEEKING, bufferController); - playbackController.unsubscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_SEEKING, scheduleController); - playbackController.unsubscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_STARTED, scheduleController); - playbackController.unsubscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_WALLCLOCK_TIME_UPDATED, trackController); - playbackController.unsubscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_WALLCLOCK_TIME_UPDATED, bufferController); - playbackController.unsubscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_WALLCLOCK_TIME_UPDATED, scheduleController); - playbackController.unsubscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_SEEKING, scheduleController.scheduleRulesCollection.playbackTimeRule); - playbackController.unsubscribe(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_SEEKING, abrController.abrRulesCollection.insufficientBufferRule); - baseUrlExt.unsubscribe(Dash.dependencies.BaseURLExtensions.eventList.ENAME_INITIALIZATION_LOADED, indexHandler); - baseUrlExt.unsubscribe(Dash.dependencies.BaseURLExtensions.eventList.ENAME_SEGMENTS_LOADED, indexHandler); - bufferController.unsubscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_OUTRUN, fragmentModel); - bufferController.unsubscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_BALANCED, fragmentModel); - bufferController.unsubscribe(MediaPlayer.dependencies.BufferController.eventList.ENAME_BYTES_REJECTED, fragmentModel); - fragmentModel.unsubscribe(MediaPlayer.dependencies.FragmentModel.eventList.ENAME_FRAGMENT_LOADING_STARTED, fragmentController); - fragmentModel.unsubscribe(MediaPlayer.dependencies.FragmentModel.eventList.ENAME_FRAGMENT_LOADING_COMPLETED, fragmentController); - fragmentModel.unsubscribe(MediaPlayer.dependencies.FragmentModel.eventList.ENAME_STREAM_COMPLETED, fragmentController); - fragmentModel.unsubscribe(MediaPlayer.dependencies.FragmentModel.eventList.ENAME_FRAGMENT_LOADING_COMPLETED, scheduleController); - fragmentLoader.unsubscribe(MediaPlayer.dependencies.FragmentLoader.eventList.ENAME_LOADING_COMPLETED, fragmentModel); - fragmentLoader.unsubscribe(MediaPlayer.dependencies.FragmentLoader.eventList.ENAME_LOADING_PROGRESS, abrController); - fragmentModel.reset(); - indexHandler.reset(); - this.bufferController.reset(errored); - this.scheduleController.reset(); - this.bufferController = null; - this.scheduleController = null; - this.trackController = null; - this.videoModel = null; - this.fragmentController = null; - isDynamic = undefined; - stream = null; - mediaInfo = null; - type = null; - eventController = null; - } - }; -}; - -MediaPlayer.dependencies.StreamProcessor.prototype = { - constructor: MediaPlayer.dependencies.StreamProcessor -}; - -MediaPlayer.utils.TTMLParser = function() { - "use strict"; - var SECONDS_IN_HOUR = 60 * 60, SECONDS_IN_MIN = 60, timingRegex = /^(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])((\.[0-9][0-9][0-9])|(:[0-9][0-9]))$/, ttml, parseTimings = function(timingStr) { - var test = timingRegex.test(timingStr), timeParts, parsedTime, frameRate; - if (!test) { - return NaN; - } - timeParts = timingStr.split(":"); - parsedTime = parseFloat(timeParts[0]) * SECONDS_IN_HOUR + parseFloat(timeParts[1]) * SECONDS_IN_MIN + parseFloat(timeParts[2]); - if (timeParts[3]) { - frameRate = ttml.tt.frameRate; - if (frameRate && !isNaN(frameRate)) { - parsedTime += parseFloat(timeParts[3]) / frameRate; - } else { - return NaN; - } - } - return parsedTime; - }, passStructuralConstraints = function() { - var passed = false, hasTt = ttml.hasOwnProperty("tt"), hasHead = hasTt ? ttml.tt.hasOwnProperty("head") : false, hasLayout = hasHead ? ttml.tt.head.hasOwnProperty("layout") : false, hasStyling = hasHead ? ttml.tt.head.hasOwnProperty("styling") : false, hasBody = hasTt ? ttml.tt.hasOwnProperty("body") : false; - if (hasTt && hasHead && hasLayout && hasStyling && hasBody) { - passed = true; - } - return passed; - }, getNamespacePrefix = function(json, ns) { - var r = Object.keys(json).filter(function(k) { - return k.split(":")[0] === "xmlns" && json[k] === ns; - }).map(function(k) { - return k.split(":")[1]; - }); - if (r.length != 1) { - return null; - } - return r[0]; - }, internalParse = function(data) { - var captionArray = [], converter = new X2JS([], "", false), errorMsg, cues, cue, startTime, endTime, nsttp, text, i, j; - ttml = converter.xml_str2json(data); - if (!passStructuralConstraints()) { - errorMsg = "TTML document has incorrect structure"; - throw errorMsg; - } - nsttp = getNamespacePrefix(ttml.tt, "http://www.w3.org/ns/ttml#parameter"); - if (ttml.tt.hasOwnProperty(nsttp + ":frameRate")) { - ttml.tt.frameRate = parseInt(ttml.tt[nsttp + ":frameRate"], 10); - } - if (ttml.tt.body.div_asArray) { - cues = ttml.tt.body.div_asArray[0].p_asArray; - } else { - cues = ttml.tt.body.p_asArray; - } - if (!cues || cues.length === 0) { - errorMsg = "TTML document does not contain any cues"; - throw errorMsg; - } - for (i = 0; i < cues.length; i += 1) { - cue = cues[i]; - startTime = parseTimings(cue.begin); - endTime = parseTimings(cue.end); - if (isNaN(startTime) || isNaN(endTime)) { - errorMsg = "TTML document has incorrect timing value"; - throw errorMsg; - } - if (cue["smpte:backgroundImage"] !== undefined) { - var images = ttml.tt.head.metadata.image_asArray; - for (j = 0; j < images.length; j += 1) { - if ("#" + images[j]["xml:id"] == cue["smpte:backgroundImage"]) { - captionArray.push({ - start: startTime, - end: endTime, - id: images[j]["xml:id"], - data: "data:image/" + images[j].imagetype.toLowerCase() + ";base64, " + images[j].__text, - type: "image" - }); - } - } - } else { - if (cue.span_asArray) { - text = cue.span_asArray[0].__text; - } else { - text = cue.__text; - } - captionArray.push({ - start: startTime, - end: endTime, - data: text, - type: "text" - }); - } - } - return captionArray; - }; - return { - parse: internalParse - }; -}; - -MediaPlayer.dependencies.TextSourceBuffer = function() { - var mediaInfo, mimeType; - return { - system: undefined, - videoModel: undefined, - eventBus: undefined, - errHandler: undefined, - initialize: function(type, bufferController) { - mimeType = type; - mediaInfo = bufferController.streamProcessor.getCurrentTrack().mediaInfo; - this.buffered = this.system.getObject("customTimeRanges"); - this.initializationSegmentReceived = false; - this.timescale = 9e4; - }, - append: function(bytes, chunk) { - var self = this, result, label, lang, samplesInfo, i, ccContent; - if (mimeType == "fragmentedText") { - var fragmentExt; - if (!this.initializationSegmentReceived) { - this.initializationSegmentReceived = true; - label = mediaInfo.id; - lang = mediaInfo.lang; - this.textTrackExtensions = self.getTextTrackExtensions(); - this.textTrackExtensions.addTextTrack(self.videoModel.getElement(), result, label, lang, true); - self.eventBus.dispatchEvent({ - type: MediaPlayer.events.TEXT_TRACK_ADDED - }); - fragmentExt = self.system.getObject("fragmentExt"); - this.timescale = fragmentExt.getMediaTimescaleFromMoov(bytes.buffer); - } else { - fragmentExt = self.system.getObject("fragmentExt"); - samplesInfo = fragmentExt.getSamplesInfo(bytes.buffer); - for (i = 0; i < samplesInfo.length; i++) { - if (!this.firstSubtitleStart) { - this.firstSubtitleStart = samplesInfo[0].cts - chunk.start * this.timescale; - } - samplesInfo[i].cts -= this.firstSubtitleStart; - this.buffered.add(samplesInfo[i].cts / this.timescale, (samplesInfo[i].cts + samplesInfo[i].duration) / this.timescale); - ccContent = window.UTF8.decode(new Uint8Array(bytes.buffer.slice(samplesInfo[i].offset, samplesInfo[i].offset + samplesInfo[i].size))); - var parser = this.system.getObject("ttmlParser"); - try { - result = parser.parse(ccContent); - this.textTrackExtensions.addCaptions(this.firstSubtitleStart / this.timescale, result); - } catch (e) {} - } - } - } else { - ccContent = window.UTF8.decode(bytes); - try { - result = self.getParser().parse(ccContent); - label = mediaInfo.id; - lang = mediaInfo.lang; - self.getTextTrackExtensions().addTextTrack(self.videoModel.getElement(), result, label, lang, true); - self.eventBus.dispatchEvent({ - type: MediaPlayer.events.TEXT_TRACK_ADDED - }); - } catch (e) { - self.errHandler.closedCaptionsError(e, "parse", ccContent); - } - } - }, - abort: function() { - this.getTextTrackExtensions().deleteCues(this.videoModel.getElement()); - }, - getParser: function() { - var parser; - if (mimeType === "text/vtt") { - parser = this.system.getObject("vttParser"); - } else if (mimeType === "application/ttml+xml") { - parser = this.system.getObject("ttmlParser"); - } - return parser; - }, - getTextTrackExtensions: function() { - return this.system.getObject("textTrackExtensions"); - }, - addEventListener: function(type, listener, useCapture) { - this.eventBus.addEventListener(type, listener, useCapture); - }, - removeEventListener: function(type, listener, useCapture) { - this.eventBus.removeEventListener(type, listener, useCapture); - } - }; -}; - -MediaPlayer.dependencies.TextSourceBuffer.prototype = { - constructor: MediaPlayer.dependencies.TextSourceBuffer -}; - -MediaPlayer.dependencies.TimeSyncController = function() { - "use strict"; - var HTTP_TIMEOUT_MS = 5e3, offsetToDeviceTimeMs = 0, isSynchronizing = false, isInitialised = false, useManifestDateHeaderTimeSource, setIsSynchronizing = function(value) { - isSynchronizing = value; - }, getIsSynchronizing = function() { - return isSynchronizing; - }, setIsInitialised = function(value) { - isInitialised = value; - }, setOffsetMs = function(value) { - offsetToDeviceTimeMs = value; - }, getOffsetMs = function() { - return offsetToDeviceTimeMs; - }, alternateXsdatetimeDecoder = function(xsdatetimeStr) { - var SECONDS_IN_MIN = 60, MINUTES_IN_HOUR = 60, MILLISECONDS_IN_SECONDS = 1e3, datetimeRegex = /^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2})(?::([0-9]*)(\.[0-9]*)?)?(?:([+\-])([0-9]{2})([0-9]{2}))?/, match = datetimeRegex.exec(xsdatetimeStr), utcDate, timezoneOffset; - utcDate = Date.UTC(parseInt(match[1], 10), parseInt(match[2], 10) - 1, parseInt(match[3], 10), parseInt(match[4], 10), parseInt(match[5], 10), match[6] && (parseInt(match[6], 10) || 0), match[7] && parseFloat(match[7]) * MILLISECONDS_IN_SECONDS || 0); - if (match[9] && match[10]) { - timezoneOffset = parseInt(match[9], 10) * MINUTES_IN_HOUR + parseInt(match[10], 10); - utcDate += (match[8] === "+" ? -1 : +1) * timezoneOffset * SECONDS_IN_MIN * MILLISECONDS_IN_SECONDS; - } - return new Date(utcDate).getTime(); - }, xsdatetimeDecoder = function(xsdatetimeStr) { - var parsedDate = Date.parse(xsdatetimeStr); - if (isNaN(parsedDate)) { - parsedDate = alternateXsdatetimeDecoder(xsdatetimeStr); - } - return parsedDate; - }, iso8601Decoder = function(isoStr) { - return Date.parse(isoStr); - }, rfc1123Decoder = function(dateStr) { - return Date.parse(dateStr); - }, notSupportedHandler = function(url, onSuccessCB, onFailureCB) { - onFailureCB(); - }, directHandler = function(xsdatetimeStr, onSuccessCB, onFailureCB) { - var time = xsdatetimeDecoder(xsdatetimeStr); - if (!isNaN(time)) { - onSuccessCB(time); - return; - } - onFailureCB(); - }, httpHandler = function(decoder, url, onSuccessCB, onFailureCB, isHeadRequest) { - var oncomplete, onload, complete = false, req = new XMLHttpRequest(), verb = isHeadRequest ? "HEAD" : "GET", urls = url.match(/\S+/g); - url = urls.shift(); - oncomplete = function() { - if (complete) { - return; - } - complete = true; - if (urls.length) { - httpHandler(decoder, urls.join(" "), onSuccessCB, onFailureCB, isHeadRequest); - } else { - onFailureCB(); - } - }; - onload = function() { - var time, result; - if (req.status === 200) { - time = isHeadRequest ? req.getResponseHeader("Date") : req.response; - result = decoder(time); - if (!isNaN(result)) { - onSuccessCB(result); - complete = true; - } - } - }; - req.open(verb, url); - req.timeout = HTTP_TIMEOUT_MS || 0; - req.onload = onload; - req.onloadend = oncomplete; - req.send(); - }, httpHeadHandler = function(url, onSuccessCB, onFailureCB) { - httpHandler.call(this, rfc1123Decoder, url, onSuccessCB, onFailureCB, true); - }, handlers = { - "urn:mpeg:dash:utc:http-head:2014": httpHeadHandler, - "urn:mpeg:dash:utc:http-xsdate:2014": httpHandler.bind(null, xsdatetimeDecoder), - "urn:mpeg:dash:utc:http-iso:2014": httpHandler.bind(null, iso8601Decoder), - "urn:mpeg:dash:utc:direct:2014": directHandler, - "urn:mpeg:dash:utc:http-head:2012": httpHeadHandler, - "urn:mpeg:dash:utc:http-xsdate:2012": httpHandler.bind(null, xsdatetimeDecoder), - "urn:mpeg:dash:utc:http-iso:2012": httpHandler.bind(null, iso8601Decoder), - "urn:mpeg:dash:utc:direct:2012": directHandler, - "urn:mpeg:dash:utc:http-ntp:2014": notSupportedHandler, - "urn:mpeg:dash:utc:ntp:2014": notSupportedHandler, - "urn:mpeg:dash:utc:sntp:2014": notSupportedHandler - }, checkForDateHeader = function() { - var metrics = this.metricsModel.getReadOnlyMetricsFor("stream"), dateHeaderValue = this.metricsExt.getLatestMPDRequestHeaderValueByID(metrics, "Date"), dateHeaderTime = dateHeaderValue !== null ? new Date(dateHeaderValue).getTime() : Number.NaN; - if (!isNaN(dateHeaderTime)) { - setOffsetMs(dateHeaderTime - new Date().getTime()); - completeTimeSyncSequence.call(this, false, dateHeaderTime / 1e3, offsetToDeviceTimeMs); - } else { - completeTimeSyncSequence.call(this, true); - } - }, completeTimeSyncSequence = function(failed, time, offset) { - setIsSynchronizing(false); - this.notify(MediaPlayer.dependencies.TimeSyncController.eventList.ENAME_TIME_SYNCHRONIZATION_COMPLETED, { - time: time, - offset: offset - }, failed ? new MediaPlayer.vo.Error(MediaPlayer.dependencies.TimeSyncController.TIME_SYNC_FAILED_ERROR_CODE) : null); - }, attemptSync = function(sources, sourceIndex) { - var self = this, index = sourceIndex || 0, source = sources[index], onComplete = function(time, offset) { - var failed = !time || !offset; - if (failed && useManifestDateHeaderTimeSource) { - checkForDateHeader.call(self); - } else { - completeTimeSyncSequence.call(self, failed, time, offset); - } - }; - setIsSynchronizing(true); - if (source) { - if (handlers.hasOwnProperty(source.schemeIdUri)) { - handlers[source.schemeIdUri](source.value, function(serverTime) { - var deviceTime = new Date().getTime(), offset = serverTime - deviceTime; - setOffsetMs(offset); - self.log("Local time: " + new Date(deviceTime)); - self.log("Server time: " + new Date(serverTime)); - self.log("Difference (ms): " + offset); - onComplete.call(self, serverTime, offset); - }, function() { - attemptSync.call(self, sources, index + 1); - }); - } else { - attemptSync.call(self, sources, index + 1); - } - } else { - setOffsetMs(0); - onComplete.call(self); - } - }; - return { - log: undefined, - notify: undefined, - subscribe: undefined, - unsubscribe: undefined, - metricsModel: undefined, - metricsExt: undefined, - getOffsetToDeviceTimeMs: function() { - return getOffsetMs(); - }, - initialize: function(timingSources, useManifestDateHeader) { - useManifestDateHeaderTimeSource = useManifestDateHeader; - if (!getIsSynchronizing()) { - attemptSync.call(this, timingSources); - setIsInitialised(true); - } - }, - reset: function() { - setIsInitialised(false); - setIsSynchronizing(false); - } - }; -}; - -MediaPlayer.dependencies.TimeSyncController.prototype = { - constructor: MediaPlayer.dependencies.TimeSyncController -}; - -MediaPlayer.dependencies.TimeSyncController.eventList = { - ENAME_TIME_SYNCHRONIZATION_COMPLETED: "timeSynchronizationComplete" -}; - -MediaPlayer.dependencies.TimeSyncController.TIME_SYNC_FAILED_ERROR_CODE = 1; - -MediaPlayer.utils.VTTParser = function() { - "use strict"; - var regExNewLine = /(?:\r\n|\r|\n)/gm, regExToken = /-->/, regExWhiteSpace = /(^[\s]+|[\s]+$)/g, regExWhiteSpaceWordBoundry = /\s\b/g, convertCuePointTimes = function(time) { - var timeArray = time.split(":"), len = timeArray.length - 1; - time = parseInt(timeArray[len - 1], 10) * 60 + parseFloat(timeArray[len]); - if (len === 2) { - time += parseInt(timeArray[0], 10) * 3600; - } - return time; - }, parseItemAttributes = function(data) { - var vttCuePoints = data.split(regExToken); - var arr = vttCuePoints[1].split(regExWhiteSpaceWordBoundry); - arr.shift(); - vttCuePoints[1] = arr[0]; - arr.shift(); - return { - cuePoints: vttCuePoints, - styles: getCaptionStyles(arr) - }; - }, getCaptionStyles = function(arr) { - var styleObject = {}; - arr.forEach(function(element) { - if (element.split(/:/).length > 1) { - var val = element.split(/:/)[1]; - if (val && val.search(/%/) != -1) { - val = parseInt(val.replace(/%/, "")); - } - if (element.match(/align/) || element.match(/A/)) { - styleObject.align = val; - } - if (element.match(/line/) || element.match(/L/)) { - styleObject.line = val; - } - if (element.match(/position/) || element.match(/P/)) { - styleObject.position = val; - } - if (element.match(/size/) || element.match(/S/)) { - styleObject.size = val; - } - } - }); - return styleObject; - }, getSublines = function(data, idx) { - var lineCount, i = idx, subline = "", lineData = ""; - while (data[i] !== "" && i < data.length) { - i++; - } - lineCount = i - idx; - if (lineCount > 1) { - for (var j = 0; j < lineCount; j++) { - lineData = data[idx + j]; - if (!lineData.match(regExToken)) { - subline += lineData; - if (j !== lineCount - 1) { - subline += "\n"; - } - } else { - subline = ""; - break; - } - } - } else { - lineData = data[idx]; - if (!lineData.match(regExToken)) subline = lineData; - } - return decodeURI(subline); - }; - return { - log: undefined, - parse: function(data) { - var captionArray = [], len, lastStartTime; - data = data.split(regExNewLine); - len = data.length; - lastStartTime = -1; - for (var i = 0; i < len; i++) { - var item = data[i]; - if (item.length > 0 && item !== "WEBVTT") { - if (item.match(regExToken)) { - var attributes = parseItemAttributes(item), cuePoints = attributes.cuePoints, styles = attributes.styles, text = getSublines(data, i + 1), startTime = convertCuePointTimes(cuePoints[0].replace(regExWhiteSpace, "")), endTime = convertCuePointTimes(cuePoints[1].replace(regExWhiteSpace, "")); - if (!Number.isNaN(startTime) && !Number.isNaN(endTime) && startTime >= lastStartTime && endTime > startTime) { - if (text !== "") { - lastStartTime = startTime; - captionArray.push({ - start: startTime, - end: endTime, - data: text, - styles: styles - }); - } else { - this.log("Skipping cue due to empty/malformed cue text"); - } - } else { - this.log("Skipping cue due to incorrect cue timing"); - } - } - } - } - return captionArray; - } - }; -}; - -MediaPlayer.dependencies.XlinkLoader = function() { - "use strict"; - var RETRY_ATTEMPTS = 1, RETRY_INTERVAL = 500, RESOLVE_TO_ZERO = "urn:mpeg:dash:resolve-to-zero:2013", doLoad = function(url, element, resolveObject, remainingAttempts) { - var request = new XMLHttpRequest(), self = this, report, onload, content, loadedTime = null, needFailureReport = true, requestTime = new Date(); - onload = function() { - if (request.status < 200 || request.status > 299) { - return; - } - needFailureReport = false; - self.metricsModel.addHttpRequest("stream", null, "XLink", url, null, null, requestTime, loadedTime, null, request.status, null, null, request.getAllResponseHeaders()); - content = request.responseText; - element.resolved = true; - if (content) { - element.resolvedContent = content; - self.notify(MediaPlayer.dependencies.XlinkLoader.eventList.ENAME_XLINKELEMENT_LOADED, { - element: element, - resolveObject: resolveObject - }); - } else { - element.resolvedContent = null; - self.notify(MediaPlayer.dependencies.XlinkLoader.eventList.ENAME_XLINKELEMENT_LOADED, { - element: element, - resolveObject: resolveObject - }, new MediaPlayer.vo.Error(null, "Failed loading Xlink element: " + url, null)); - } - }; - report = function() { - if (!needFailureReport) { - return; - } - needFailureReport = false; - self.metricsModel.addHttpRequest("stream", null, "xlink", url, null, null, requestTime, new Date(), request.status, null, null, request.getAllResponseHeaders()); - if (remainingAttempts > 0) { - console.log("Failed loading xLink content: " + url + ", retry in " + RETRY_INTERVAL + "ms" + " attempts: " + remainingAttempts); - remainingAttempts--; - setTimeout(function() { - doLoad.call(self, url, element, resolveObject, remainingAttempts); - }, RETRY_INTERVAL); - } else { - console.log("Failed loading Xlink content: " + url + " no retry attempts left"); - self.errHandler.downloadError("xlink", url, request); - element.resolvedContent = null; - self.notify(MediaPlayer.dependencies.XlinkLoader.eventList.ENAME_XLINKELEMENT_LOADED, { - element: element, - resolveObject: resolveObject - }, new Error("Failed loading xlink Element: " + url + " no retry attempts left")); - } - }; - try { - request.onload = onload; - request.onloadend = report; - request.onerror = report; - request.open("GET", self.requestModifierExt.modifyRequestURL(url), true); - request.send(); - } catch (e) { - console.log("Error"); - request.onerror(); - } - }; - return { - errHandler: undefined, - metricsModel: undefined, - requestModifierExt: undefined, - notify: undefined, - subscribe: undefined, - unsubscribe: undefined, - load: function(url, element, resolveObject) { - if (url === RESOLVE_TO_ZERO) { - element.resolvedContent = null; - element.resolved = true; - this.notify(MediaPlayer.dependencies.XlinkLoader.eventList.ENAME_XLINKELEMENT_LOADED, { - element: element, - resolveObject: resolveObject - }); - } else { - doLoad.call(this, url, element, resolveObject, RETRY_ATTEMPTS); - } - } - }; -}; - -MediaPlayer.dependencies.XlinkLoader.prototype = { - constructor: MediaPlayer.dependencies.XlinkLoader -}; - -MediaPlayer.dependencies.XlinkLoader.eventList = { - ENAME_XLINKELEMENT_LOADED: "xlinkElementLoaded" -}; - -MediaPlayer.dependencies.AbrController = function() { - "use strict"; - var autoSwitchBitrate = true, topQualities = {}, qualityDict = {}, confidenceDict = {}, bitrateDict = {}, streamProcessorDict = {}, abandonmentStateDict = {}, abandonmentTimeout, getInternalQuality = function(type, id) { - var quality; - qualityDict[id] = qualityDict[id] || {}; - if (!qualityDict[id].hasOwnProperty(type)) { - qualityDict[id][type] = 0; - } - quality = qualityDict[id][type]; - return quality; - }, setInternalQuality = function(type, id, value) { - qualityDict[id] = qualityDict[id] || {}; - qualityDict[id][type] = value; - }, getInternalConfidence = function(type, id) { - var confidence; - confidenceDict[id] = confidenceDict[id] || {}; - if (!confidenceDict[id].hasOwnProperty(type)) { - confidenceDict[id][type] = 0; - } - confidence = confidenceDict[id][type]; - return confidence; - }, setInternalConfidence = function(type, id, value) { - confidenceDict[id] = confidenceDict[id] || {}; - confidenceDict[id][type] = value; - }, setTopQualityIndex = function(type, id, value) { - topQualities[id] = topQualities[id] || {}; - topQualities[id][type] = value; - }, getInitialBitrate = function(type) { - return bitrateDict[type]; - }, setInitialBitrate = function(type, value) { - bitrateDict[type] = value; - }, getMaxBitrate = function(type) { - if (bitrateDict.hasOwnProperty("max") && bitrateDict.max.hasOwnProperty(type)) { - return bitrateDict.max[type]; - } - return NaN; - }, setMaxBitrate = function(type, value) { - bitrateDict.max = bitrateDict.max || {}; - bitrateDict.max[type] = value; - }, getTopQualityIndex = function(type, id) { - var idx; - topQualities[id] = topQualities[id] || {}; - if (!topQualities[id].hasOwnProperty(type)) { - topQualities[id][type] = 0; - } - idx = checkMaxBitrate.call(this, topQualities[id][type], type); - return idx; - }, checkMaxBitrate = function(idx, type) { - var maxBitrate = getMaxBitrate(type); - if (isNaN(maxBitrate)) { - return idx; - } - var maxIdx = this.getQualityForBitrate(streamProcessorDict[type].getMediaInfo(), maxBitrate); - return Math.min(idx, maxIdx); - }, onFragmentLoadProgress = function(evt) { - if (MediaPlayer.dependencies.ScheduleController.LOADING_REQUEST_THRESHOLD === 0) { - var self = this, type = evt.data.request.mediaType, rules = self.abrRulesCollection.getRules(MediaPlayer.rules.ABRRulesCollection.prototype.ABANDON_FRAGMENT_RULES), schduleController = streamProcessorDict[type].getScheduleController(), fragmentModel = schduleController.getFragmentModel(), callback = function(switchRequest) { - function setupTimeout(type) { - abandonmentTimeout = setTimeout(function() { - self.setAbandonmentStateFor(type, MediaPlayer.dependencies.AbrController.ALLOW_LOAD); - }, MediaPlayer.dependencies.AbrController.ABANDON_TIMEOUT); - } - if (switchRequest.confidence === MediaPlayer.rules.SwitchRequest.prototype.STRONG) { - var requests = fragmentModel.getRequests({ - state: MediaPlayer.dependencies.FragmentModel.states.LOADING - }), newQuality = switchRequest.value, currentQuality = self.getQualityFor(type, self.streamController.getActiveStreamInfo()); - if (newQuality < currentQuality) { - fragmentModel.abortRequests(); - self.setAbandonmentStateFor(type, MediaPlayer.dependencies.AbrController.ABANDON_LOAD); - self.setPlaybackQuality(type, self.streamController.getActiveStreamInfo(), newQuality); - schduleController.replaceCanceledRequests(requests); - setupTimeout(type); - } - } - }; - self.rulesController.applyRules(rules, streamProcessorDict[type], callback, evt, function(currentValue, newValue) { - return newValue; - }); - } - }; - return { - log: undefined, - abrRulesCollection: undefined, - rulesController: undefined, - notify: undefined, - subscribe: undefined, - unsubscribe: undefined, - streamController: undefined, - setup: function() { - this[MediaPlayer.dependencies.FragmentLoader.eventList.ENAME_LOADING_PROGRESS] = onFragmentLoadProgress; - }, - initialize: function(type, streamProcessor) { - streamProcessorDict[type] = streamProcessor; - abandonmentStateDict[type] = abandonmentStateDict[type] || {}; - abandonmentStateDict[type].state = MediaPlayer.dependencies.AbrController.ALLOW_LOAD; - }, - getAutoSwitchBitrate: function() { - return autoSwitchBitrate; - }, - setAutoSwitchBitrate: function(value) { - autoSwitchBitrate = value; - }, - getPlaybackQuality: function(streamProcessor) { - var self = this, type = streamProcessor.getType(), streamId = streamProcessor.getStreamInfo().id, quality, oldQuality, rules, confidence, callback = function(res) { - var topQualityIdx = getTopQualityIndex.call(self, type, streamId); - quality = res.value; - confidence = res.confidence; - if (quality < 0) { - quality = 0; - } - if (quality > topQualityIdx) { - quality = topQualityIdx; - } - oldQuality = getInternalQuality(type, streamId); - if (quality === oldQuality || abandonmentStateDict[type].state === MediaPlayer.dependencies.AbrController.ABANDON_LOAD && quality > oldQuality) return; - setInternalQuality(type, streamId, quality); - setInternalConfidence(type, streamId, confidence); - self.notify(MediaPlayer.dependencies.AbrController.eventList.ENAME_QUALITY_CHANGED, { - mediaType: type, - streamInfo: streamProcessor.getStreamInfo(), - oldQuality: oldQuality, - newQuality: quality - }); - }; - quality = getInternalQuality(type, streamId); - confidence = getInternalConfidence(type, streamId); - if (!autoSwitchBitrate) return; - rules = self.abrRulesCollection.getRules(MediaPlayer.rules.ABRRulesCollection.prototype.QUALITY_SWITCH_RULES); - self.rulesController.applyRules(rules, streamProcessor, callback.bind(self), quality, function(currentValue, newValue) { - currentValue = currentValue === MediaPlayer.rules.SwitchRequest.prototype.NO_CHANGE ? 0 : currentValue; - return Math.max(currentValue, newValue); - }); - }, - setPlaybackQuality: function(type, streamInfo, newPlaybackQuality) { - var id = streamInfo.id, quality = getInternalQuality(type, id), isInt = newPlaybackQuality !== null && !isNaN(newPlaybackQuality) && newPlaybackQuality % 1 === 0; - if (!isInt) throw "argument is not an integer"; - if (newPlaybackQuality !== quality && newPlaybackQuality >= 0 && newPlaybackQuality <= getTopQualityIndex.call(this, type, id)) { - setInternalQuality(type, streamInfo.id, newPlaybackQuality); - this.notify(MediaPlayer.dependencies.AbrController.eventList.ENAME_QUALITY_CHANGED, { - mediaType: type, - streamInfo: streamInfo, - oldQuality: quality, - newQuality: newPlaybackQuality - }); - } - }, - setAbandonmentStateFor: function(type, state) { - abandonmentStateDict[type].state = state; - }, - getAbandonmentStateFor: function(type) { - return abandonmentStateDict[type].state; - }, - getQualityFor: function(type, streamInfo) { - return getInternalQuality(type, streamInfo.id); - }, - getConfidenceFor: function(type, streamInfo) { - return getInternalConfidence(type, streamInfo.id); - }, - setInitialBitrateFor: function(type, value) { - setInitialBitrate(type, value); - }, - getInitialBitrateFor: function(type) { - return getInitialBitrate(type); - }, - setMaxAllowedBitrateFor: function(type, value) { - setMaxBitrate(type, value); - }, - getMaxAllowedBitrateFor: function(type) { - return getMaxBitrate(type); - }, - getQualityForBitrate: function(mediaInfo, bitrate) { - var bitrateList = this.getBitrateList(mediaInfo), ln = bitrateList.length, bitrateInfo; - for (var i = 0; i < ln; i += 1) { - bitrateInfo = bitrateList[i]; - if (bitrate * 1e3 <= bitrateInfo.bitrate) { - return Math.max(i - 1, 0); - } - } - return ln - 1; - }, - getBitrateList: function(mediaInfo) { - if (!mediaInfo || !mediaInfo.bitrateList) return null; - var bitrateList = mediaInfo.bitrateList, type = mediaInfo.type, infoList = [], bitrateInfo; - for (var i = 0, ln = bitrateList.length; i < ln; i += 1) { - bitrateInfo = new MediaPlayer.vo.BitrateInfo(); - bitrateInfo.mediaType = type; - bitrateInfo.qualityIndex = i; - bitrateInfo.bitrate = bitrateList[i]; - infoList.push(bitrateInfo); - } - return infoList; - }, - updateTopQualityIndex: function(mediaInfo) { - var type = mediaInfo.type, streamId = mediaInfo.streamInfo.id, max; - max = mediaInfo.trackCount - 1; - setTopQualityIndex(type, streamId, max); - return max; - }, - isPlayingAtTopQuality: function(streamInfo) { - var self = this, isAtTop, streamId = streamInfo.id, audioQuality = self.getQualityFor("audio", streamInfo), videoQuality = self.getQualityFor("video", streamInfo); - isAtTop = audioQuality === getTopQualityIndex.call(this, "audio", streamId) && videoQuality === getTopQualityIndex.call(this, "video", streamId); - return isAtTop; - }, - getTopQualityIndexFor: getTopQualityIndex, - reset: function() { - autoSwitchBitrate = true; - topQualities = {}; - qualityDict = {}; - confidenceDict = {}; - streamProcessorDict = {}; - abandonmentStateDict = {}; - clearTimeout(abandonmentTimeout); - abandonmentTimeout = null; - } - }; -}; - -MediaPlayer.dependencies.AbrController.prototype = { - constructor: MediaPlayer.dependencies.AbrController -}; - -MediaPlayer.dependencies.AbrController.eventList = { - ENAME_QUALITY_CHANGED: "qualityChanged" -}; - -MediaPlayer.dependencies.AbrController.DEFAULT_VIDEO_BITRATE = 1e3; - -MediaPlayer.dependencies.AbrController.DEFAULT_AUDIO_BITRATE = 100; - -MediaPlayer.dependencies.AbrController.ABANDON_LOAD = "abandonload"; - -MediaPlayer.dependencies.AbrController.ALLOW_LOAD = "allowload"; - -MediaPlayer.dependencies.AbrController.ABANDON_TIMEOUT = 1e4; - -MediaPlayer.dependencies.AbrController.BANDWIDTH_SAFETY = .9; - -MediaPlayer.dependencies.BufferController = function() { - "use strict"; - var STALL_THRESHOLD = .5, requiredQuality = 0, currentQuality = -1, isBufferingCompleted = false, bufferLevel = 0, bufferTarget = 0, criticalBufferLevel = Number.POSITIVE_INFINITY, mediaSource, maxAppendedIndex = -1, lastIndex = -1, type, buffer = null, minBufferTime, hasSufficientBuffer = null, appendedBytesInfo, isBufferLevelOutrun = false, isAppendingInProgress = false, inbandEventFound = false, createBuffer = function(mediaInfo) { - if (!mediaInfo || !mediaSource || !this.streamProcessor) return null; - var sourceBuffer = null; - try { - sourceBuffer = this.sourceBufferExt.createSourceBuffer(mediaSource, mediaInfo); - if (sourceBuffer && sourceBuffer.hasOwnProperty("initialize")) { - sourceBuffer.initialize(type, this); - } - } catch (e) { - this.errHandler.mediaSourceError("Error creating " + type + " source buffer."); - } - this.setBuffer(sourceBuffer); - updateBufferTimestampOffset.call(this, this.streamProcessor.getTrackForQuality(requiredQuality).MSETimeOffset); - return sourceBuffer; - }, isActive = function() { - var thisStreamId = this.streamProcessor.getStreamInfo().id, activeStreamId = this.streamController.getActiveStreamInfo().id; - return thisStreamId === activeStreamId; - }, waitingForInit = function() { - var loadingReqs = this.streamProcessor.getFragmentModel().getRequests({ - state: MediaPlayer.dependencies.FragmentModel.states.LOADING - }), streamId = getStreamId.call(this), mediaData = this.virtualBuffer.getChunks({ - streamId: streamId, - mediaType: type, - segmentType: MediaPlayer.vo.metrics.HTTPRequest.MEDIA_SEGMENT_TYPE, - quality: currentQuality - }); - if (currentQuality > requiredQuality && (hasDataForQuality(mediaData, currentQuality) || hasDataForQuality(loadingReqs, currentQuality))) { - return false; - } - return currentQuality !== requiredQuality; - }, hasDataForQuality = function(arr, quality) { - var i = 0, ln = arr.length; - for (i; i < ln; i += 1) { - if (arr[i].quality === quality) return true; - } - return false; - }, onInitializationLoaded = function(e) { - var self = this, chunk; - if (e.data.fragmentModel !== self.streamProcessor.getFragmentModel()) return; - self.log("Initialization finished loading"); - chunk = e.data.chunk; - this.virtualBuffer.append(chunk); - if (chunk.quality !== requiredQuality || !waitingForInit.call(self)) return; - switchInitData.call(self); - }, onMediaLoaded = function(e) { - if (e.data.fragmentModel !== this.streamProcessor.getFragmentModel()) return; - var events, chunk = e.data.chunk, bytes = chunk.bytes, quality = chunk.quality, index = chunk.index, request = this.streamProcessor.getFragmentModel().getRequests({ - state: MediaPlayer.dependencies.FragmentModel.states.EXECUTED, - quality: quality, - index: index - })[0], currentTrack = this.streamProcessor.getTrackForQuality(quality), manifest = this.manifestModel.getValue(), eventStreamMedia = this.adapter.getEventsFor(manifest, currentTrack.mediaInfo, this.streamProcessor), eventStreamTrack = this.adapter.getEventsFor(manifest, currentTrack, this.streamProcessor); - if (eventStreamMedia.length > 0 || eventStreamTrack.length > 0) { - events = handleInbandEvents.call(this, bytes, request, eventStreamMedia, eventStreamTrack); - this.streamProcessor.getEventController().addInbandEvents(events); - } - chunk.bytes = deleteInbandEvents.call(this, bytes); - this.virtualBuffer.append(chunk); - appendNext.call(this); - }, appendToBuffer = function(chunk) { - isAppendingInProgress = true; - appendedBytesInfo = chunk; - var self = this, quality = chunk.quality, isInit = isNaN(chunk.index); - if (quality !== requiredQuality && isInit || quality !== currentQuality && !isInit) { - onMediaRejected.call(self, quality, chunk.index); - return; - } - self.sourceBufferExt.append(buffer, chunk); - }, onAppended = function(e) { - if (buffer !== e.data.buffer) return; - if (this.isBufferingCompleted() && this.streamProcessor.getStreamInfo().isLast) { - this.mediaSourceExt.signalEndOfStream(mediaSource); - } - var self = this, ranges; - if (e.error) { - if (e.error.code === MediaPlayer.dependencies.SourceBufferExtensions.QUOTA_EXCEEDED_ERROR_CODE) { - self.virtualBuffer.append(appendedBytesInfo); - criticalBufferLevel = self.sourceBufferExt.getTotalBufferedTime(buffer) * .8; - self.notify(MediaPlayer.dependencies.BufferController.eventList.ENAME_QUOTA_EXCEEDED, { - criticalBufferLevel: criticalBufferLevel - }); - clearBuffer.call(self); - } - isAppendingInProgress = false; - return; - } - updateBufferLevel.call(self); - if (!hasEnoughSpaceToAppend.call(self)) { - self.notify(MediaPlayer.dependencies.BufferController.eventList.ENAME_QUOTA_EXCEEDED, { - criticalBufferLevel: criticalBufferLevel - }); - clearBuffer.call(self); - } - ranges = self.sourceBufferExt.getAllRanges(buffer); - if (ranges) { - if (ranges.length > 0) { - var i, len; - for (i = 0, len = ranges.length; i < len; i += 1) { - self.log("Buffered Range: " + ranges.start(i) + " - " + ranges.end(i)); - } - } - } - self.notify(MediaPlayer.dependencies.BufferController.eventList.ENAME_BYTES_APPENDED, { - quality: appendedBytesInfo.quality, - index: appendedBytesInfo.index, - bufferedRanges: ranges - }); - onAppendToBufferCompleted.call(self, appendedBytesInfo.quality, appendedBytesInfo.index); - }, updateBufferLevel = function() { - var self = this, currentTime = self.playbackController.getTime(); - bufferLevel = self.sourceBufferExt.getBufferLength(buffer, currentTime); - self.notify(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_UPDATED, { - bufferLevel: bufferLevel - }); - checkGapBetweenBuffers.call(self); - checkIfSufficientBuffer.call(self); - if (bufferLevel < STALL_THRESHOLD) { - notifyIfSufficientBufferStateChanged.call(self, false); - } - return true; - }, handleInbandEvents = function(data, request, mediaInbandEvents, trackInbandEvents) { - var events = [], i = 0, identifier, size, expTwo = Math.pow(256, 2), expThree = Math.pow(256, 3), fragmentStarttime = Math.max(isNaN(request.startTime) ? 0 : request.startTime, 0), eventStreams = [], event, inbandEvents; - inbandEventFound = false; - inbandEvents = mediaInbandEvents.concat(trackInbandEvents); - for (var loop = 0; loop < inbandEvents.length; loop++) { - eventStreams[inbandEvents[loop].schemeIdUri] = inbandEvents[loop]; - } - while (i < data.length) { - identifier = String.fromCharCode(data[i + 4], data[i + 5], data[i + 6], data[i + 7]); - size = data[i] * expThree + data[i + 1] * expTwo + data[i + 2] * 256 + data[i + 3] * 1; - if (identifier == "moov" || identifier == "moof") { - break; - } else if (identifier == "emsg") { - inbandEventFound = true; - var eventBox = [ "", "", 0, 0, 0, 0, "" ], arrIndex = 0, j = i + 12; - while (j < size + i) { - if (arrIndex === 0 || arrIndex == 1 || arrIndex == 6) { - if (data[j] !== 0) { - eventBox[arrIndex] += String.fromCharCode(data[j]); - } else { - arrIndex += 1; - } - j += 1; - } else { - eventBox[arrIndex] = data[j] * expThree + data[j + 1] * expTwo + data[j + 2] * 256 + data[j + 3] * 1; - j += 4; - arrIndex += 1; - } - } - event = this.adapter.getEvent(eventBox, eventStreams, fragmentStarttime); - if (event) { - events.push(event); - } - } - i += size; - } - return events; - }, deleteInbandEvents = function(data) { - if (!inbandEventFound) { - return data; - } - var length = data.length, i = 0, j = 0, identifier, size, expTwo = Math.pow(256, 2), expThree = Math.pow(256, 3), modData = new Uint8Array(data.length); - while (i < length) { - identifier = String.fromCharCode(data[i + 4], data[i + 5], data[i + 6], data[i + 7]); - size = data[i] * expThree + data[i + 1] * expTwo + data[i + 2] * 256 + data[i + 3] * 1; - if (identifier != "emsg") { - for (var l = i; l < i + size; l++) { - modData[j] = data[l]; - j += 1; - } - } - i += size; - } - return modData.subarray(0, j); - }, checkGapBetweenBuffers = function() { - var leastLevel = getLeastBufferLevel.call(this), acceptableGap = minBufferTime * 2, actualGap = bufferLevel - leastLevel; - if (actualGap >= acceptableGap && !isBufferLevelOutrun) { - isBufferLevelOutrun = true; - this.notify(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_OUTRUN); - } else if (actualGap < acceptableGap / 2 && isBufferLevelOutrun) { - this.notify(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_BALANCED); - isBufferLevelOutrun = false; - appendNext.call(this); - } - }, getLeastBufferLevel = function() { - var videoMetrics = this.metricsModel.getReadOnlyMetricsFor("video"), videoBufferLevel = this.metricsExt.getCurrentBufferLevel(videoMetrics), audioMetrics = this.metricsModel.getReadOnlyMetricsFor("audio"), audioBufferLevel = this.metricsExt.getCurrentBufferLevel(audioMetrics), leastLevel = null; - if (videoBufferLevel === null || audioBufferLevel === null) { - leastLevel = audioBufferLevel !== null ? audioBufferLevel.level : videoBufferLevel !== null ? videoBufferLevel.level : null; - } else { - leastLevel = Math.min(audioBufferLevel.level, videoBufferLevel.level); - } - return leastLevel; - }, hasEnoughSpaceToAppend = function() { - var self = this, totalBufferedTime = self.sourceBufferExt.getTotalBufferedTime(buffer); - return totalBufferedTime < criticalBufferLevel; - }, clearBuffer = function() { - var self = this, currentTime, removeStart, removeEnd, range, req; - if (!buffer) return; - currentTime = self.playbackController.getTime(); - req = self.streamProcessor.getFragmentModel().getRequests({ - state: MediaPlayer.dependencies.FragmentModel.states.EXECUTED, - time: currentTime - })[0]; - removeEnd = req && !isNaN(req.startTime) ? req.startTime : Math.floor(currentTime); - range = self.sourceBufferExt.getBufferRange(buffer, currentTime); - if (range === null && buffer.buffered.length > 0) { - removeEnd = buffer.buffered.end(buffer.buffered.length - 1); - } - removeStart = buffer.buffered.start(0); - self.sourceBufferExt.remove(buffer, removeStart, removeEnd, mediaSource); - }, onRemoved = function(e) { - if (buffer !== e.data.buffer) return; - updateBufferLevel.call(this); - this.notify(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_CLEARED, { - from: e.data.from, - to: e.data.to, - hasEnoughSpaceToAppend: hasEnoughSpaceToAppend.call(this) - }); - if (hasEnoughSpaceToAppend.call(this)) return; - setTimeout(clearBuffer.bind(this), minBufferTime * 1e3); - }, checkIfBufferingCompleted = function() { - var isLastIdxAppended = maxAppendedIndex === lastIndex - 1; - if (!isLastIdxAppended || isBufferingCompleted) return; - isBufferingCompleted = true; - this.notify(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFERING_COMPLETED); - }, checkIfSufficientBuffer = function() { - var timeToEnd = this.playbackController.getTimeToStreamEnd(); - if (bufferLevel < STALL_THRESHOLD && minBufferTime < timeToEnd || minBufferTime >= timeToEnd && !isBufferingCompleted) { - notifyIfSufficientBufferStateChanged.call(this, false); - } else { - notifyIfSufficientBufferStateChanged.call(this, true); - } - }, getBufferState = function() { - return hasSufficientBuffer ? MediaPlayer.dependencies.BufferController.BUFFER_LOADED : MediaPlayer.dependencies.BufferController.BUFFER_EMPTY; - }, notifyIfSufficientBufferStateChanged = function(state) { - if (hasSufficientBuffer === state) return; - hasSufficientBuffer = state; - var bufferState = getBufferState(), eventName = bufferState === MediaPlayer.dependencies.BufferController.BUFFER_LOADED ? MediaPlayer.events.BUFFER_LOADED : MediaPlayer.events.BUFFER_EMPTY; - addBufferMetrics.call(this); - this.eventBus.dispatchEvent({ - type: eventName, - data: { - bufferType: type - } - }); - this.notify(MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_STATE_CHANGED, { - hasSufficientBuffer: state - }); - this.log(hasSufficientBuffer ? "Got enough buffer to start." : "Waiting for more buffer before starting playback."); - }, updateBufferTimestampOffset = function(MSETimeOffset) { - if (buffer && buffer.timestampOffset !== MSETimeOffset && !isNaN(MSETimeOffset)) { - buffer.timestampOffset = MSETimeOffset; - } - }, updateBufferState = function() { - if (!buffer) return; - var self = this, fragmentsToLoad = this.streamProcessor.getScheduleController().getFragmentToLoadCount(), fragmentDuration = this.streamProcessor.getCurrentTrack().fragmentDuration; - updateBufferLevel.call(self); - bufferTarget = fragmentsToLoad > 0 ? fragmentsToLoad * fragmentDuration + bufferLevel : bufferTarget; - addBufferMetrics.call(this); - appendNext.call(self); - }, appendNext = function() { - if (waitingForInit.call(this)) { - switchInitData.call(this); - } else { - appendNextMedia.call(this); - } - }, addBufferMetrics = function() { - if (!isActive.call(this)) return; - this.metricsModel.addBufferState(type, getBufferState(), bufferTarget); - var level = bufferLevel, virtualLevel; - virtualLevel = this.virtualBuffer.getTotalBufferLevel(this.streamProcessor.getMediaInfo()); - if (virtualLevel) { - level += virtualLevel; - } - this.metricsModel.addBufferLevel(type, new Date(), level); - }, getStreamId = function() { - return this.streamProcessor.getStreamInfo().id; - }, onAppendToBufferCompleted = function(quality, index) { - isAppendingInProgress = false; - if (!isNaN(index)) { - onMediaAppended.call(this, index); - } else { - onInitAppended.call(this, quality); - } - appendNext.call(this); - }, onMediaRejected = function(quality, index) { - isAppendingInProgress = false; - this.notify(MediaPlayer.dependencies.BufferController.eventList.ENAME_BYTES_REJECTED, { - quality: quality, - index: index - }); - appendNext.call(this); - }, onInitAppended = function(quality) { - currentQuality = quality; - }, onMediaAppended = function(index) { - maxAppendedIndex = Math.max(index, maxAppendedIndex); - checkIfBufferingCompleted.call(this); - }, appendNextMedia = function() { - var streamId = getStreamId.call(this), chunk; - if (!buffer || isBufferLevelOutrun || isAppendingInProgress || waitingForInit.call(this) || !hasEnoughSpaceToAppend.call(this)) return; - chunk = this.virtualBuffer.extract({ - streamId: streamId, - mediaType: type, - segmentType: MediaPlayer.vo.metrics.HTTPRequest.MEDIA_SEGMENT_TYPE, - limit: 1 - })[0]; - if (!chunk) return; - appendToBuffer.call(this, chunk); - }, onDataUpdateCompleted = function(e) { - if (e.error) return; - var self = this, bufferLength; - updateBufferTimestampOffset.call(self, e.data.currentRepresentation.MSETimeOffset); - bufferLength = self.streamProcessor.getStreamInfo().manifestInfo.minBufferTime; - if (minBufferTime !== bufferLength) { - self.setMinBufferTime(bufferLength); - self.notify(MediaPlayer.dependencies.BufferController.eventList.ENAME_MIN_BUFFER_TIME_UPDATED, { - minBufferTime: bufferLength - }); - } - }, onStreamCompleted = function(e) { - var self = this; - if (e.data.fragmentModel !== self.streamProcessor.getFragmentModel()) return; - lastIndex = e.data.request.index; - checkIfBufferingCompleted.call(self); - }, onQualityChanged = function(e) { - if (type !== e.data.mediaType || this.streamProcessor.getStreamInfo().id !== e.data.streamInfo.id) return; - var self = this, newQuality = e.data.newQuality; - if (requiredQuality === newQuality) return; - updateBufferTimestampOffset.call(self, self.streamProcessor.getTrackForQuality(newQuality).MSETimeOffset); - requiredQuality = newQuality; - if (!waitingForInit.call(self)) return; - switchInitData.call(self); - }, onChunkAppended = function() { - addBufferMetrics.call(this); - }, switchInitData = function() { - var self = this, streamId = getStreamId.call(self), filter = { - streamId: streamId, - mediaType: type, - segmentType: MediaPlayer.vo.metrics.HTTPRequest.INIT_SEGMENT_TYPE, - quality: requiredQuality - }, chunk = self.virtualBuffer.getChunks(filter)[0]; - if (chunk) { - if (isAppendingInProgress || !buffer) return; - appendToBuffer.call(self, chunk); - } else { - self.notify(MediaPlayer.dependencies.BufferController.eventList.ENAME_INIT_REQUESTED, { - requiredQuality: requiredQuality - }); - } - }, onWallclockTimeUpdated = function() { - appendNext.call(this); - }, onPlaybackRateChanged = function() { - checkIfSufficientBuffer.call(this); - }; - return { - sourceBufferExt: undefined, - eventBus: undefined, - bufferMax: undefined, - manifestModel: undefined, - errHandler: undefined, - mediaSourceExt: undefined, - metricsModel: undefined, - metricsExt: undefined, - streamController: undefined, - playbackController: undefined, - adapter: undefined, - log: undefined, - abrController: undefined, - system: undefined, - notify: undefined, - subscribe: undefined, - unsubscribe: undefined, - virtualBuffer: undefined, - setup: function() { - this[Dash.dependencies.RepresentationController.eventList.ENAME_DATA_UPDATE_COMPLETED] = onDataUpdateCompleted; - this[MediaPlayer.dependencies.FragmentController.eventList.ENAME_INIT_FRAGMENT_LOADED] = onInitializationLoaded; - this[MediaPlayer.dependencies.FragmentController.eventList.ENAME_MEDIA_FRAGMENT_LOADED] = onMediaLoaded; - this[MediaPlayer.dependencies.FragmentController.eventList.ENAME_STREAM_COMPLETED] = onStreamCompleted; - this[MediaPlayer.dependencies.AbrController.eventList.ENAME_QUALITY_CHANGED] = onQualityChanged; - this[MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_PROGRESS] = updateBufferState; - this[MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_SEEKING] = updateBufferState; - this[MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_TIME_UPDATED] = updateBufferState; - this[MediaPlayer.dependencies.PlaybackController.eventList.ENAME_PLAYBACK_RATE_CHANGED] = onPlaybackRateChanged; - this[MediaPlayer.dependencies.PlaybackController.eventList.ENAME_WALLCLOCK_TIME_UPDATED] = onWallclockTimeUpdated; - onAppended = onAppended.bind(this); - onRemoved = onRemoved.bind(this); - onChunkAppended = onChunkAppended.bind(this); - this.sourceBufferExt.subscribe(MediaPlayer.dependencies.SourceBufferExtensions.eventList.ENAME_SOURCEBUFFER_APPEND_COMPLETED, this, onAppended); - this.sourceBufferExt.subscribe(MediaPlayer.dependencies.SourceBufferExtensions.eventList.ENAME_SOURCEBUFFER_REMOVE_COMPLETED, this, onRemoved); - this.virtualBuffer.subscribe(MediaPlayer.utils.VirtualBuffer.eventList.CHUNK_APPENDED, this, onChunkAppended); - }, - initialize: function(typeValue, source, streamProcessor) { - var self = this; - type = typeValue; - self.setMediaType(type); - self.setMediaSource(source); - self.streamProcessor = streamProcessor; - self.fragmentController = streamProcessor.fragmentController; - self.scheduleController = streamProcessor.scheduleController; - requiredQuality = self.abrController.getQualityFor(type, streamProcessor.getStreamInfo()); - }, - createBuffer: createBuffer, - getStreamProcessor: function() { - return this.streamProcessor; - }, - setStreamProcessor: function(value) { - this.streamProcessor = value; - }, - getBuffer: function() { - return buffer; - }, - setBuffer: function(value) { - buffer = value; - }, - getBufferLevel: function() { - return bufferLevel; - }, - getMinBufferTime: function() { - return minBufferTime; - }, - setMinBufferTime: function(value) { - minBufferTime = value; - }, - getCriticalBufferLevel: function() { - return criticalBufferLevel; - }, - setMediaSource: function(value) { - mediaSource = value; - }, - isBufferingCompleted: function() { - return isBufferingCompleted; - }, - reset: function(errored) { - var self = this; - criticalBufferLevel = Number.POSITIVE_INFINITY; - hasSufficientBuffer = null; - minBufferTime = null; - currentQuality = -1; - lastIndex = -1; - maxAppendedIndex = -1; - requiredQuality = 0; - self.sourceBufferExt.unsubscribe(MediaPlayer.dependencies.SourceBufferExtensions.eventList.ENAME_SOURCEBUFFER_APPEND_COMPLETED, self, onAppended); - self.sourceBufferExt.unsubscribe(MediaPlayer.dependencies.SourceBufferExtensions.eventList.ENAME_SOURCEBUFFER_REMOVE_COMPLETED, self, onRemoved); - appendedBytesInfo = null; - this.virtualBuffer.unsubscribe(MediaPlayer.utils.VirtualBuffer.eventList.CHUNK_APPENDED, self, onChunkAppended); - isBufferLevelOutrun = false; - isAppendingInProgress = false; - if (!errored) { - self.sourceBufferExt.abort(mediaSource, buffer); - self.sourceBufferExt.removeSourceBuffer(mediaSource, buffer); - } - buffer = null; - } - }; -}; - -MediaPlayer.dependencies.BufferController.BUFFER_SIZE_REQUIRED = "required"; - -MediaPlayer.dependencies.BufferController.BUFFER_SIZE_MIN = "min"; - -MediaPlayer.dependencies.BufferController.BUFFER_SIZE_INFINITY = "infinity"; - -MediaPlayer.dependencies.BufferController.DEFAULT_MIN_BUFFER_TIME = 12; - -MediaPlayer.dependencies.BufferController.LOW_BUFFER_THRESHOLD = 4; - -MediaPlayer.dependencies.BufferController.BUFFER_TIME_AT_TOP_QUALITY = 30; - -MediaPlayer.dependencies.BufferController.BUFFER_TIME_AT_TOP_QUALITY_LONG_FORM = 300; - -MediaPlayer.dependencies.BufferController.LONG_FORM_CONTENT_DURATION_THRESHOLD = 600; - -MediaPlayer.dependencies.BufferController.RICH_BUFFER_THRESHOLD = 20; - -MediaPlayer.dependencies.BufferController.BUFFER_LOADED = "bufferLoaded"; - -MediaPlayer.dependencies.BufferController.BUFFER_EMPTY = "bufferStalled"; - -MediaPlayer.dependencies.BufferController.prototype = { - constructor: MediaPlayer.dependencies.BufferController -}; - -MediaPlayer.dependencies.BufferController.eventList = { - ENAME_BUFFER_LEVEL_STATE_CHANGED: "bufferLevelStateChanged", - ENAME_BUFFER_LEVEL_UPDATED: "bufferLevelUpdated", - ENAME_QUOTA_EXCEEDED: "quotaExceeded", - ENAME_BYTES_APPENDED: "bytesAppended", - ENAME_BYTES_REJECTED: "bytesRejected", - ENAME_BUFFERING_COMPLETED: "bufferingCompleted", - ENAME_BUFFER_CLEARED: "bufferCleared", - ENAME_INIT_REQUESTED: "initRequested", - ENAME_BUFFER_LEVEL_OUTRUN: "bufferLevelOutrun", - ENAME_BUFFER_LEVEL_BALANCED: "bufferLevelBalanced", - ENAME_MIN_BUFFER_TIME_UPDATED: "minBufferTimeUpdated" -}; - -MediaPlayer.dependencies.EventController = function() { - "use strict"; - var inlineEvents = {}, inbandEvents = {}, activeEvents = {}, eventInterval = null, refreshDelay = 100, presentationTimeThreshold = refreshDelay / 1e3, MPD_RELOAD_SCHEME = "urn:mpeg:dash:event:2012", MPD_RELOAD_VALUE = 1, reset = function() { - clear(); - inlineEvents = null; - inbandEvents = null; - activeEvents = null; - }, clear = function() { - if (eventInterval !== null) { - clearInterval(eventInterval); - eventInterval = null; - } - }, start = function() { - var self = this; - self.log("Start Event Controller"); - if (!isNaN(refreshDelay)) { - eventInterval = setInterval(onEventTimer.bind(this), refreshDelay); - } - }, addInlineEvents = function(values) { - var self = this; - inlineEvents = {}; - if (values) { - for (var i = 0; i < values.length; i++) { - var event = values[i]; - inlineEvents[event.id] = event; - self.log("Add inline event with id " + event.id); - } - } - self.log("Added " + values.length + " inline events"); - }, addInbandEvents = function(values) { - var self = this; - for (var i = 0; i < values.length; i++) { - var event = values[i]; - if (!(event.id in inbandEvents)) { - inbandEvents[event.id] = event; - self.log("Add inband event with id " + event.id); - } else { - self.log("Repeated event with id " + event.id); - } - } - }, onEventTimer = function() { - triggerEvents.call(this, inbandEvents); - triggerEvents.call(this, inlineEvents); - removeEvents.call(this); - }, triggerEvents = function(events) { - var self = this, currentVideoTime = this.videoModel.getCurrentTime(), presentationTime; - if (events) { - var eventIds = Object.keys(events); - for (var i = 0; i < eventIds.length; i++) { - var eventId = eventIds[i]; - var curr = events[eventId]; - if (curr !== undefined) { - presentationTime = curr.presentationTime / curr.eventStream.timescale; - if (presentationTime === 0 || presentationTime <= currentVideoTime && presentationTime + presentationTimeThreshold > currentVideoTime) { - self.log("Start Event " + eventId + " at " + currentVideoTime); - if (curr.duration > 0) activeEvents[eventId] = curr; - if (curr.eventStream.schemeIdUri == MPD_RELOAD_SCHEME && curr.eventStream.value == MPD_RELOAD_VALUE) refreshManifest.call(this); - delete events[eventId]; - } - } - } - } - }, removeEvents = function() { - var self = this; - if (activeEvents) { - var currentVideoTime = this.videoModel.getCurrentTime(); - var eventIds = Object.keys(activeEvents); - for (var i = 0; i < eventIds.length; i++) { - var eventId = eventIds[i]; - var curr = activeEvents[eventId]; - if (curr !== null && (curr.duration + curr.presentationTime) / curr.eventStream.timescale < currentVideoTime) { - self.log("Remove Event " + eventId + " at time " + currentVideoTime); - curr = null; - delete activeEvents[eventId]; - } - } - } - }, refreshManifest = function() { - var manifest = this.manifestModel.getValue(), url = manifest.url; - if (manifest.hasOwnProperty("Location")) { - url = manifest.Location; - } - this.log("Refresh manifest @ " + url); - this.manifestUpdater.getManifestLoader().load(url); - }; - return { - manifestModel: undefined, - manifestUpdater: undefined, - log: undefined, - system: undefined, - videoModel: undefined, - addInlineEvents: addInlineEvents, - addInbandEvents: addInbandEvents, - reset: reset, - clear: clear, - start: start - }; -}; - -MediaPlayer.dependencies.EventController.prototype = { - constructor: MediaPlayer.dependencies.EventController -}; - -MediaPlayer.dependencies.FragmentController = function() { - "use strict"; - var fragmentModels = [], inProgress = false, findModel = function(context) { - var ln = fragmentModels.length; - for (var i = 0; i < ln; i++) { - if (fragmentModels[i].getContext() == context) { - return fragmentModels[i]; - } - } - return null; - }, getRequestsToLoad = function(current, callback) { - var self = this, streamProcessor = fragmentModels[0].getContext().streamProcessor, streamId = streamProcessor.getStreamInfo().id, rules = self.scheduleRulesCollection.getRules(MediaPlayer.rules.ScheduleRulesCollection.prototype.FRAGMENTS_TO_EXECUTE_RULES); - if (rules.indexOf(this.scheduleRulesCollection.sameTimeRequestRule) !== -1) { - this.scheduleRulesCollection.sameTimeRequestRule.setFragmentModels(fragmentModels, streamId); - } - self.rulesController.applyRules(rules, streamProcessor, callback, current, function(currentValue, newValue) { - return newValue; - }); - }, createDataChunk = function(bytes, request, streamId) { - var chunk = new MediaPlayer.vo.DataChunk(); - chunk.streamId = streamId; - chunk.mediaType = request.mediaType; - chunk.segmentType = request.type; - chunk.start = request.startTime; - chunk.duration = request.duration; - chunk.end = chunk.start + chunk.duration; - chunk.bytes = bytes; - chunk.index = request.index; - chunk.quality = request.quality; - return chunk; - }, onFragmentLoadingStart = function(e) { - var self = this, request = e.data.request; - if (self.isInitializationRequest(request)) { - self.notify(MediaPlayer.dependencies.FragmentController.eventList.ENAME_INIT_FRAGMENT_LOADING_START, { - request: request, - fragmentModel: e.sender - }); - } else { - self.notify(MediaPlayer.dependencies.FragmentController.eventList.ENAME_MEDIA_FRAGMENT_LOADING_START, { - request: request, - fragmentModel: e.sender - }); - } - }, onFragmentLoadingCompleted = function(e) { - var self = this, request = e.data.request, bytes = self.process(e.data.response), streamId = e.sender.getContext().streamProcessor.getStreamInfo().id, isInit = this.isInitializationRequest(request), eventName = isInit ? MediaPlayer.dependencies.FragmentController.eventList.ENAME_INIT_FRAGMENT_LOADED : MediaPlayer.dependencies.FragmentController.eventList.ENAME_MEDIA_FRAGMENT_LOADED, chunk; - if (bytes === null) { - self.log("No " + request.mediaType + " bytes to push."); - return; - } - chunk = createDataChunk.call(this, bytes, request, streamId); - self.notify(eventName, { - chunk: chunk, - fragmentModel: e.sender - }); - executeRequests.call(this); - }, onStreamCompleted = function(e) { - this.notify(MediaPlayer.dependencies.FragmentController.eventList.ENAME_STREAM_COMPLETED, { - request: e.data.request, - fragmentModel: e.sender - }); - }, onBufferLevelBalanced = function() { - executeRequests.call(this); - }, onGetRequests = function(result) { - var reqsToExecute = result.value, mediaType, r, m, i, j; - for (i = 0; i < reqsToExecute.length; i += 1) { - r = reqsToExecute[i]; - if (!r) continue; - for (j = 0; j < fragmentModels.length; j += 1) { - m = fragmentModels[j]; - mediaType = m.getContext().streamProcessor.getType(); - if (r.mediaType !== mediaType) continue; - if (!(r instanceof MediaPlayer.vo.FragmentRequest)) { - r = m.getRequests({ - state: MediaPlayer.dependencies.FragmentModel.states.PENDING, - time: r.startTime - })[0]; - } - m.executeRequest(r); - } - } - inProgress = false; - }, executeRequests = function(request) { - if (inProgress) return; - inProgress = true; - getRequestsToLoad.call(this, request, onGetRequests.bind(this)); - }; - return { - system: undefined, - log: undefined, - scheduleRulesCollection: undefined, - rulesController: undefined, - notify: undefined, - subscribe: undefined, - unsubscribe: undefined, - setup: function() { - this[MediaPlayer.dependencies.FragmentModel.eventList.ENAME_FRAGMENT_LOADING_STARTED] = onFragmentLoadingStart; - this[MediaPlayer.dependencies.FragmentModel.eventList.ENAME_FRAGMENT_LOADING_COMPLETED] = onFragmentLoadingCompleted; - this[MediaPlayer.dependencies.FragmentModel.eventList.ENAME_STREAM_COMPLETED] = onStreamCompleted; - this[MediaPlayer.dependencies.BufferController.eventList.ENAME_BUFFER_LEVEL_BALANCED] = onBufferLevelBalanced; - if (this.scheduleRulesCollection.sameTimeRequestRule) { - this.subscribe(MediaPlayer.dependencies.FragmentController.eventList.ENAME_STREAM_COMPLETED, this.scheduleRulesCollection.sameTimeRequestRule); - } - }, - process: function(bytes) { - var result = null; - if (bytes !== null && bytes !== undefined && bytes.byteLength > 0) { - result = new Uint8Array(bytes); - } - return result; - }, - getModel: function(context) { - if (!context) return null; - var model = findModel(context); - if (!model) { - model = this.system.getObject("fragmentModel"); - model.setContext(context); - fragmentModels.push(model); - } - return model; - }, - detachModel: function(model) { - var idx = fragmentModels.indexOf(model); - if (idx > -1) { - fragmentModels.splice(idx, 1); - } - }, - isInitializationRequest: function(request) { - return request && request.type && request.type === MediaPlayer.vo.metrics.HTTPRequest.INIT_SEGMENT_TYPE; - }, - prepareFragmentForLoading: function(fragmentModel, request) { - if (!fragmentModel || !request) return; - if (fragmentModel.addRequest(request)) { - executeRequests.call(this, request); - } - }, - executePendingRequests: function() { - executeRequests.call(this); - }, - reset: function() { - fragmentModels = []; - if (this.scheduleRulesCollection.sameTimeRequestRule) { - this.unsubscribe(MediaPlayer.dependencies.FragmentController.eventList.ENAME_STREAM_COMPLETED, this.scheduleRulesCollection.sameTimeRequestRule); - } - } - }; -}; - -MediaPlayer.dependencies.FragmentController.prototype = { - constructor: MediaPlayer.dependencies.FragmentController -}; - -MediaPlayer.dependencies.FragmentController.eventList = { - ENAME_STREAM_COMPLETED: "streamCompleted", - ENAME_INIT_FRAGMENT_LOADING_START: "initFragmentLoadingStart", - ENAME_MEDIA_FRAGMENT_LOADING_START: "mediaFragmentLoadingStart", - ENAME_INIT_FRAGMENT_LOADED: "initFragmentLoaded", - ENAME_MEDIA_FRAGMENT_LOADED: "mediaFragmentLoaded" -}; - -MediaPlayer.dependencies.PlaybackController = function() { - "use strict"; - var WALLCLOCK_TIME_UPDATE_INTERVAL = 1e3, currentTime = 0, liveStartTime = NaN, wallclockTimeIntervalId = null, commonEarliestTime = {}, firstAppended = {}, streamInfo, videoModel, isDynamic, liveDelayFragmentCount = NaN, useSuggestedPresentationDelay, getStreamStartTime = function(streamInfo) { - var presentationStartTime, startTimeOffset = parseInt(this.uriQueryFragModel.getURIFragmentData().s); - if (isDynamic) { - if (!isNaN(startTimeOffset) && startTimeOffset > 1262304e3) { - presentationStartTime = startTimeOffset - streamInfo.manifestInfo.availableFrom.getTime() / 1e3; - if (presentationStartTime > liveStartTime || presentationStartTime < liveStartTime - streamInfo.manifestInfo.DVRWindowSize) { - presentationStartTime = null; - } - } - presentationStartTime = presentationStartTime || liveStartTime; - } else { - if (!isNaN(startTimeOffset) && startTimeOffset < streamInfo.duration && startTimeOffset >= 0) { - presentationStartTime = startTimeOffset; - } else { - presentationStartTime = streamInfo.start; - } - } - return presentationStartTime; - }, getActualPresentationTime = function(currentTime) { - var self = this, metrics = self.metricsModel.getReadOnlyMetricsFor("video") || self.metricsModel.getReadOnlyMetricsFor("audio"), DVRMetrics = self.metricsExt.getCurrentDVRInfo(metrics), DVRWindow = DVRMetrics ? DVRMetrics.range : null, actualTime; - if (!DVRWindow) return NaN; - if (currentTime >= DVRWindow.start && currentTime <= DVRWindow.end) { - return currentTime; - } - actualTime = Math.max(DVRWindow.end - streamInfo.manifestInfo.minBufferTime * 2, DVRWindow.start); - return actualTime; - }, startUpdatingWallclockTime = function() { - if (wallclockTimeIntervalId !== null) return; - var self = this, tick = function() { - onWallclockTime.call(self); - }; - wallclockTimeIntervalId = setInterval(tick, WALLCLOCK_TIME_UPDATE_INTERVAL); - }, stopUpdatingWallclockTime = function() { - clearInterval(wallclockTimeIntervalId); - wallclockTimeIntervalId = null; - }, initialStart = function() { - if (firstAppended[streamInfo.id] || this.isSeeking()) return; - var initialSeekTime = getStreamStartTime.call(this, streamInfo); - this.log("Starting playback at offset: " + initialSeekTime); - this.seek(initialSeekTime); - }, updateCurrentTime = function() { - if (this.isPaused() || !isDynamic || videoModel.getElement().readyState === 0) return; - var currentTime = this.getTime(), actualTime = getActualPresentationTime.call(this, currentTime), timeChanged = !isNaN(actualTime) && actualTime !== currentTime; - if (timeChanged) { - this.seek(actualTime); - } - }, onDataUpdateCompleted = function(e) { - if (e.error) return; - var track = this.adapter.convertDataToTrack(this.manifestModel.getValue(), e.data.currentRepresentation), info = track.mediaInfo.streamInfo; - if (streamInfo.id !== info.id) return; - streamInfo = track.mediaInfo.streamInfo; - updateCurrentTime.call(this); - }, onLiveEdgeSearchCompleted = function(e) { - if (e.error || videoModel.getElement().readyState === 0) return; - initialStart.call(this); - }, removeAllListeners = function() { - if (!videoModel) return; - videoModel.unlisten("play", onPlaybackStart); - videoModel.unlisten("playing", onPlaybackPlaying); - videoModel.unlisten("pause", onPlaybackPaused); - videoModel.unlisten("error", onPlaybackError); - videoModel.unlisten("seeking", onPlaybackSeeking); - videoModel.unlisten("seeked", onPlaybackSeeked); - videoModel.unlisten("timeupdate", onPlaybackTimeUpdated); - videoModel.unlisten("progress", onPlaybackProgress); - videoModel.unlisten("ratechange", onPlaybackRateChanged); - videoModel.unlisten("loadedmetadata", onPlaybackMetaDataLoaded); - videoModel.unlisten("ended", onPlaybackEnded); - }, onCanPlay = function() { - this.notify(MediaPlayer.dependencies.PlaybackController.eventList.ENAME_CAN_PLAY); - }, onPlaybackStart = function() { - this.log("
"+lMainModelData.pwdMsg+"
"+b.pm+"
","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w(" - - - -
- - - - diff --git a/docs/MB-920/power_platform_clickthrough/project.txt b/docs/MB-920/power_platform_clickthrough/project.txt deleted file mode 100644 index 31f8a8a..0000000 --- a/docs/MB-920/power_platform_clickthrough/project.txt +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"generator":"Captivate","generatorVersion":"11.8.3","schemaVersion":"","author":"author","title":"Power platform clickthrough715 (1)","description":"project description","email":"author@company.com","website":"www.company.com","tags":"","thumbnail":"","source":"assets","durationInFrames":87,"frameRate":30,"totalSlides":29,"width":1280,"height":720,"responsive":false,"scalable":true,"launchFile":"index.html","isVRProject":false},"contentStructure":[{"id":"Click_Box_1","class":"TODO::Senthil","instance":"Click_Box_1","roles":{"click":{"subtype":"button"}}},{"id":"Slide7854","class":"PPTX Slide","instance":" ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide7854"}}},{"id":"Click_Box_2","class":"TODO::Senthil","instance":"Click_Box_2","roles":{"click":{"subtype":"button"}}},{"id":"Slide7870","class":"PPTX Slide","instance":"Slide 2","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide7870"}}},{"id":"Click_Box_3","class":"TODO::Senthil","instance":"Click_Box_3","roles":{"click":{"subtype":"button"}}},{"id":"Slide7886","class":"PPTX Slide","instance":"Create a canvas app ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide7886"}}},{"id":"Click_Box_4","class":"TODO::Senthil","instance":"Click_Box_4","roles":{"click":{"subtype":"button"}}},{"id":"Slide7902","class":"PPTX Slide","instance":"Select More data sources ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide7902"}}},{"id":"Click_Box_5","class":"TODO::Senthil","instance":"Click_Box_5","roles":{"click":{"subtype":"button"}}},{"id":"Slide7918","class":"PPTX Slide","instance":"Create new connection ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide7918"}}},{"id":"Click_Box_6","class":"TODO::Senthil","instance":"Click_Box_6","roles":{"click":{"subtype":"button"}}},{"id":"Slide7934","class":"PPTX Slide","instance":"Select Fin & Ops Apps connector ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide7934"}}},{"id":"Click_Box_7","class":"TODO::Senthil","instance":"Click_Box_7","roles":{"click":{"subtype":"button"}}},{"id":"Slide7950","class":"PPTX Slide","instance":"Create Fin & Ops Apps connector ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide7950"}}},{"id":"Click_Box_8","class":"TODO::Senthil","instance":"Click_Box_8","roles":{"click":{"subtype":"button"}}},{"id":"Slide7966","class":"PPTX Slide","instance":"Enter Fin & Ops Apps credentials ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide7966"}}},{"id":"Click_Box_9","class":"TODO::Senthil","instance":"Click_Box_9","roles":{"click":{"subtype":"button"}}},{"id":"Slide7982","class":"PPTX Slide","instance":"Select Allow access ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide7982"}}},{"id":"Click_Box_10","class":"TODO::Senthil","instance":"Click_Box_10","roles":{"click":{"subtype":"button"}}},{"id":"Slide7998","class":"PPTX Slide","instance":"Select Fin & Ops Apps URL ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide7998"}}},{"id":"Click_Box_11","class":"TODO::Senthil","instance":"Click_Box_11","roles":{"click":{"subtype":"button"}}},{"id":"Slide8014","class":"PPTX Slide","instance":"List of entities ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8014"}}},{"id":"Click_Box_12","class":"TODO::Senthil","instance":"Click_Box_12","roles":{"click":{"subtype":"button"}}},{"id":"Slide8030","class":"PPTX Slide","instance":"Select CustomerGroups entity ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8030"}}},{"id":"Click_Box_13","class":"TODO::Senthil","instance":"Click_Box_13","roles":{"click":{"subtype":"button"}}},{"id":"Slide8046","class":"PPTX Slide","instance":"Canvas App is created ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8046"}}},{"id":"Click_Box_14","class":"TODO::Senthil","instance":"Click_Box_14","roles":{"click":{"subtype":"button"}}},{"id":"Slide8062","class":"PPTX Slide","instance":"Select browser gallery ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8062"}}},{"id":"Click_Box_15","class":"TODO::Senthil","instance":"Click_Box_15","roles":{"click":{"subtype":"button"}}},{"id":"Slide8078","class":"PPTX Slide","instance":"Select fields in gallery ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8078"}}},{"id":"Click_Box_16","class":"TODO::Senthil","instance":"Click_Box_16","roles":{"click":{"subtype":"button"}}},{"id":"Slide8094","class":"PPTX Slide","instance":"Select DetailCustGroup screen ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8094"}}},{"id":"Click_Box_17","class":"TODO::Senthil","instance":"Click_Box_17","roles":{"click":{"subtype":"button"}}},{"id":"Slide8110","class":"PPTX Slide","instance":"Select DetailForm1 ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8110"}}},{"id":"Click_Box_18","class":"TODO::Senthil","instance":"Click_Box_18","roles":{"click":{"subtype":"button"}}},{"id":"Slide8126","class":"PPTX Slide","instance":"Select fields in the DetailCustGroup screen ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8126"}}},{"id":"Click_Box_19","class":"TODO::Senthil","instance":"Click_Box_19","roles":{"click":{"subtype":"button"}}},{"id":"Slide8142","class":"PPTX Slide","instance":"Select EditForm1 an add the relevant columns ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8142"}}},{"id":"Click_Box_20","class":"TODO::Senthil","instance":"Click_Box_20","roles":{"click":{"subtype":"button"}}},{"id":"Slide8158","class":"PPTX Slide","instance":"Save the Canvas App ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8158"}}},{"id":"Click_Box_21","class":"TODO::Senthil","instance":"Click_Box_21","roles":{"click":{"subtype":"button"}}},{"id":"Slide8174","class":"PPTX Slide","instance":"Name the Canvas App ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8174"}}},{"id":"Click_Box_22","class":"TODO::Senthil","instance":"Click_Box_22","roles":{"click":{"subtype":"button"}}},{"id":"Slide8190","class":"PPTX Slide","instance":"Select preview button ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8190"}}},{"id":"Click_Box_23","class":"TODO::Senthil","instance":"Click_Box_23","roles":{"click":{"subtype":"button"}}},{"id":"Slide8206","class":"PPTX Slide","instance":"Select Create new item ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8206"}}},{"id":"Click_Box_24","class":"TODO::Senthil","instance":"Click_Box_24","roles":{"click":{"subtype":"button"}}},{"id":"Slide8222","class":"PPTX Slide","instance":"Enter values ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8222"}}},{"id":"Click_Box_25","class":"TODO::Senthil","instance":"Click_Box_25","roles":{"click":{"subtype":"button"}}},{"id":"Slide8238","class":"PPTX Slide","instance":"New record in the gallery ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8238"}}},{"id":"Click_Box_26","class":"TODO::Senthil","instance":"Click_Box_26","roles":{"click":{"subtype":"button"}}},{"id":"Slide8254","class":"PPTX Slide","instance":"Select Customer groups ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8254"}}},{"id":"Click_Box_27","class":"TODO::Senthil","instance":"Click_Box_27","roles":{"click":{"subtype":"button"}}},{"id":"Slide8270","class":"PPTX Slide","instance":"Newly created record ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8270"}}},{"id":"Click_Box_28","class":"TODO::Senthil","instance":"Click_Box_28","roles":{"click":{"subtype":"button"}}},{"id":"Slide8286","class":"PPTX Slide","instance":"Slide 28","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8286"}}},{"id":"Click_Box_29","class":"TODO::Senthil","instance":"Click_Box_29","roles":{"click":{"subtype":"button"}}},{"id":"Slide8302","class":"PPTX Slide","instance":"Closing slide ","thumbnail":"","children":[],"roles":{"slide":{"durationInFrames":3},"navigation":{"navid":"Slide8302"}}},{"id":"Pool423","class":"pool","roles":{"pool":{"id":423,"name":"Pool1","questions":[]}}},{"id":"Power platform clickthrough715 (1)","class":"project","title":"Power platform clickthrough715 (1)","children":["Slide7854","Slide7870","Slide7886","Slide7902","Slide7918","Slide7934","Slide7950","Slide7966","Slide7982","Slide7998","Slide8014","Slide8030","Slide8046","Slide8062","Slide8078","Slide8094","Slide8110","Slide8126","Slide8142","Slide8158","Slide8174","Slide8190","Slide8206","Slide8222","Slide8238","Slide8254","Slide8270","Slide8286","Slide8302"],"roles":{"quiz":{"id":379,"branched":false,"submitAll":false,"review":true,"questions":[],"minScore":0,"maxScore":0,"passScore":0}}}],"contentSettings":{"global":{"branchAware":false},"toc":{"enabled":false},"playbar":{"enabled":true,"cc":false,"playPause":true,"back":true,"forward":true,"rewind":true,"close":true,"mute":true,"progressBar":true}},"contentReporting":{"CCCriteria":"launch_content","SCCriteria":"launch_content","exitNormalIfCompleted":false},"toc":[{"id":"Slide7854","title":" "},{"id":"Slide7870","title":"Slide 2"},{"id":"Slide7886","title":"Create a canvas app "},{"id":"Slide7902","title":"Select More data sources "},{"id":"Slide7918","title":"Create new connection "},{"id":"Slide7934","title":"Select Fin & Ops Apps connector "},{"id":"Slide7950","title":"Create Fin & Ops Apps connector "},{"id":"Slide7966","title":"Enter Fin & Ops Apps credentials "},{"id":"Slide7982","title":"Select Allow access "},{"id":"Slide7998","title":"Select Fin & Ops Apps URL "},{"id":"Slide8014","title":"List of entities "},{"id":"Slide8030","title":"Select CustomerGroups entity "},{"id":"Slide8046","title":"Canvas App is created "},{"id":"Slide8062","title":"Select browser gallery "},{"id":"Slide8078","title":"Select fields in gallery "},{"id":"Slide8094","title":"Select DetailCustGroup screen "},{"id":"Slide8110","title":"Select DetailForm1 "},{"id":"Slide8126","title":"Select fields in the DetailCustGroup screen "},{"id":"Slide8142","title":"Select EditForm1 an add the relevant columns "},{"id":"Slide8158","title":"Save the Canvas App "},{"id":"Slide8174","title":"Name the Canvas App "},{"id":"Slide8190","title":"Select preview button "},{"id":"Slide8206","title":"Select Create new item "},{"id":"Slide8222","title":"Enter values "},{"id":"Slide8238","title":"New record in the gallery "},{"id":"Slide8254","title":"Select Customer groups "},{"id":"Slide8270","title":"Newly created record "},{"id":"Slide8286","title":"Slide 28"},{"id":"Slide8302","title":"Closing slide "}]} \ No newline at end of file