Help
RSS
API
Feed
Maltego
Contact
Domain > komuweather.mega.page
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-08-28
3.167.246.101
(
ClassC
)
2025-10-23
3.169.173.23
(
ClassC
)
Port 80
HTTP/1.1 200 OKContent-Type: text/htmlContent-Length: 111547Connection: keep-aliveDate: Thu, 23 Oct 2025 19:18:00 GMTLast-Modified: Wed, 22 Oct 2025 14:23:17 GMTx-amz-version-id: LmSLYzn_RRWNjCzPzAbCkbJJ4JqVzi7ZServer: AmazonS3ETag: a79b7cd82521b36eab67e286048eaaa9X-Cache: Miss from cloudfrontVia: 1.1 bc4e0a32a1893d7693b91555def3133e.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P4X-Amz-Cf-Id: 6GC0DMJ--67IHwjgzxjDM-UMSJkDfQLMJJoxyGAGh-RxdsbfMEsvYQ !doctype html>!--if lt IE 7>html classno-js lt-ie9 lt-ie8 lt-ie7> !endif-->!--if IE 7>html classno-js lt-ie9 lt-ie8> !endif-->!--if IE 8>html classno-js lt-ie9> !endif-->!--if gt IE 8>!-->html classno-js>!--!endif-->meta charsetutf-8>title>/title>meta namedescription content>meta nameviewport contentwidthdevice-width,user-scalableno,initial-scale1,minimum-scale1,maximum-scale1>!-- Place favicon.ico and apple-touch-icon.png in the root directory -->link relicon typeimage/x-icon hreffavicon.ico>link hrefthemes/base.css relstylesheet>script typetext/javascript srclib/controllerio/lib/Orbiter.js>/script>script typemodule srclib/controllerio/controllerio.js>/script>/head>!-- Application declaration and Global CSS classes -->body ng-appMegaController ng-classapplyDynamicBodyClasses() ng-controllerApplicationCtrl responsive>!-- Begin Templates -->script typetext/ng-template idviews/album/album-item/album-item.html>div classalbum-item ng-ifalbum ng-clickopenAlbum(album._id)> div classalbum-heading> p classalbum-title>{{album.name}}/p> p classalbum-description>{{album.description}}/p> /div> div classalbum-image-container> !-- Display custom cover image if one is provided, and a cover image is set --> div classalbum-collage-cover-container ng-ifalbumCoverToDisplay(album) custom> img ng-src{{album.presentation.cover.uri}} classcollage-image display-image> /div> !-- Display array of submissions, if display_cover is set to favorites show or does not exist --> div classalbum-collage-cover-container multi-image-container ng-ifalbumCoverToDisplay(album) ! custom> div classhero-image> div classcollage-image ng-repeatsubmission in album.albumCoverSubmissions track by submission._id ng-class{display-image: albumDisplayIndexArray$parent.$index $index, text-only: submission.text_only} ng-style{animation-delay: ($parent.$index * 4) + $index + s}> img ng-if!submission.text_only ng-src{{submission.thumbnails.medium ? submission.thumbnails.medium : submission.url}}> p ng-ifsubmission.text_only && submission.contributor.message> {{submission.contributor.message}} /p> /div> div classno-content ng-ifalbum.albumCoverSubmissions.length 1> span classmaterial-icons>image/span> /div> /div> div classalbum-sidebar-item> img ng-if!album.albumCoverSubmissions0.text_only ng-src{{album.albumCoverSubmissions0.thumbnails.medium ? album.albumCoverSubmissions0.thumbnails.medium : album.albumCoverSubmissions0.url}} class> p ng-ifalbum.albumCoverSubmissions0.text_only && album.albumCoverSubmissions0.contributor.message classalbum-sidebar-text> {{album.albumCoverSubmissions0.contributor.message}} /p> div classno-content ng-ifalbum.albumCoverSubmissions.length 1> span classmaterial-icons>image/span> /div> /div> div classalbum-sidebar-item> img ng-if!album.albumCoverSubmissions1.text_only ng-src{{album.albumCoverSubmissions1.thumbnails.medium ? album.albumCoverSubmissions1.thumbnails.medium : album.albumCoverSubmissions1.url}} class> p ng-ifalbum.albumCoverSubmissions1.text_only && album.albumCoverSubmissions1.contributor.message classalbum-sidebar-text> {{album.albumCoverSubmissions1.contributor.message}} /p> div classno-content ng-ifalbum.albumCoverSubmissions.length 2> span classmaterial-icons>image/span> /div> /div> div classalbum-sidebar-item> img ng-if!album.albumCoverSubmissions2.text_only ng-src{{album.albumCoverSubmissions2.thumbnails.medium ? album.albumCoverSubmissions2.thumbnails.medium : album.albumCoverSubmissions2.url}} class> p ng-ifalbum.albumCoverSubmissions2.text_only && album.albumCoverSubmissions2.contributor.message classalbum-sidebar-text> {{album.albumCoverSubmissions2.contributor.message}} /p> div classno-content ng-ifalbum.albumCoverSubmissions.length 3> span classmaterial-icons>image/span> /div> /div> div classnum-submissions-overlay ng-ifalbum.albumCoverSubmissions.length ! 0> {{album.num_submissions}}+ /div> /div> /div>/div>/script>script typetext/ng-template idviews/album/album.html>!-- List of albums -->div ng-if!selectedAlbumID && !selectedSubmissionID classalbum-list-container animate-fade-in animated> div ng-ifgatherOffer classadd-to-album-button ng-clickopenUGCOfferModal()> span classmaterial-icons-round>add_a_photo/span> span locugc_add_media>/span> /div> div classalbum-list> ng-include srcgetTemplateUrl(album-item/album-item.html) ng-repeatalbum in albums | orderBy:position track by album._id> /div>/div>!-- Album details view -->div ng-ifselectedAlbumID classsubmission-list-container animate-fade-in animated ng-class{list-presentation: !isTilePresentation()}> !-- Display a single submission scrolling view, this is displayed in a modal in the parent page --> ng-include ng-ifselectedSubmissionID srcgetTemplateUrl(scrolling-feed/scrolling-feed.html) onloadregisterLoadMoreScrollHandler()>/ng-include> !-- Display a scrolling grid of submissions --> ng-include ng-if!config.parentWindowURL || (config.parentWindowURL && !selectedSubmissionID) srcgetTemplateUrl(grid-feed/grid-feed.html) onloadregisterLoadMoreScrollHandler()>/ng-include>/div>/script>script typetext/ng-template idviews/album/grid-feed-item/grid-feed-item.html>div classgrid-feed-item ng-mouseentertogglePlayStateOnHover($event, enter) id{{submission._id}} ng-ifisTilePresentation() ng-mouseleavetogglePlayStateOnHover($event, leave)> div classsubmission-media ng-class{text-only:submission.text_only } ng-clickopenModalInParent(submission._id, $event)> !-- Display media for images --> object ng-ifsubmission.type image data{{submission.thumbnails.medium ? submission.thumbnails.medium : submission.url}} ng-style{object-position: mediaAlignment} typeimage/jpeg> img srcimages/image_not_supported.svg?sanitizetrue classmedia-failed-to-load/> /object> video ng-ifsubmission.type video ng-src{{submission.url + #t0.1}} loop media-errormedia-failed-to-load playsinline ng-style{object-position: mediaAlignment} muted> /video> audio ng-ifsubmission.type audio ng-on-playpauseAllOtherAudioMedia($event, submission.id) controls controlslistnodownload noplaybackrate ng-src{{submission.url}} id{{submission.id}}> /audio> div classvideo-audio-control ng-ifsubmission.type video> span ng-ifvideoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_off/span> span ng-if!videoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_up/span> /div> ng-container ng-ifsubmission.text_only> p classquote-text>{{submission.contributor.message | truncate:180}}/p> /ng-container> div classlocation-overlay ng-ifsubmission.contributor && submission.contributor.city> div classmaterial-icons-round>location_on/div> div>{{submission.contributor.city | truncate:60}}/div> /div> /div> div ng-ifsubmission.contributor classsubmission-details> div ng-ifsubmission.contributor.message && !submission.text_only classsubmission-message> {{submission.contributor.message | truncate:60}} /div> div ng-ifsubmission.contributor.name classsubmission-name> span classname ng-ifalbumSettings.truncate_last_names>{{truncateLastNames(submission.contributor.name)}}/span> span classname ng-if!albumSettings.truncate_last_names>{{submission.contributor.name | truncate:20}}/span> - span classtime-stamp from-now datesubmission.source_created_at ? submission.source_created_at : submission.created_at>/span> /div> /div>/div>!-- Comment style UGC items -->div classgrid-feed-item list-item ng-class{text-only: submission.text_only} ng-mouseentertogglePlayStateOnHover($event, enter) id{{submission._id}} ng-if!isTilePresentation() && !isContributorEmpty(submission.contributor) ng-mouseleavetogglePlayStateOnHover($event, leave) ng-clickopenModalInParent(submission._id, $event)> div classlist-item-avatar> !-- Show default person icon --> span classmaterial-icons-round avatar-icon>person/span> /div> div classlist-item-content> div classlist-item-header> span classusername ng-ifalbumSettings.truncate_last_names>{{truncateLastNames(submission.contributor.name)}}/span> span classusername ng-if!albumSettings.truncate_last_names>{{submission.contributor.name | truncate:20}}/span> span classtime-stamp from-now datesubmission.source_created_at ? submission.source_created_at : submission.created_at>/span> !-- Add location if available --> span classlocation ng-ifsubmission.contributor.city> span classmaterial-icons-round location-icon>location_on/span> {{ submission.contributor.city | truncate:30 }} /span> /div> div classlist-item-message ng-ifsubmission.contributor.message> {{ submission.contributor.message }} /div> !-- Media section for list items - optional, can be added if needed --> div classsubmission-media list-media ng-if!submission.text_only && (submission.type image || submission.type video || submission.type audio) > object ng-ifsubmission.type image data{{submission.thumbnails.medium ? submission.thumbnails.medium : submission.url}} ng-style{object-position: mediaAlignment} typeimage/jpeg> img srcimages/image_not_supported.svg?sanitizetrue classmedia-failed-to-load/> /object> video ng-ifsubmission.type video ng-src{{submission.url + #t0.1}} loop ng-style{object-position: mediaAlignment} media-errormedia-failed-to-load playsinline muted> /video> audio ng-ifsubmission.type audio ng-on-playpauseAllOtherAudioMedia($event, submission.id) controls controlslistnodownload noplaybackrate ng-src{{submission.url}} id{{submission.id}}-audio-list> /audio> /div> /div>/div>/script>script typetext/ng-template idviews/album/grid-feed/grid-feed.html>div ng-ifselectedAlbum._id> div classgrid-feed-container {{gridSizeClass()}} ng-ifselectedAlbum.public style{{gridBorderStyles()}}> div classalbum-title-bar> div classalbum-back-button-container> span ng-ifshowBackButton classmaterial-icons-round ng-clickbackToAlbumList()>arrow_back/span> p ng-if!hideAlbumTitle()>{{selectedAlbum.name}}/p> /div> div ng-ifgatherOffer classadd-to-album-button ng-clickopenUGCOfferModal()> span classmaterial-icons-round>{{ isGathererCommentUGC ? add_comment : add_a_photo}}/span> span locugc_add_media>/span> /div> /div> !-- Sponsor media with link if provided --> div classalbum-sponsor-image ng-ifhasSponsor> a ng-ifsponsorLink href{{sponsorLink}} target_blank> img src{{sponsorMedia.medium_uri}}> /a> img ng-if!sponsorLink src{{sponsorMedia.medium_uri}}> /div> div classgrid-feed-scroll-container> ng-include ng-repeatsubmission in selectedAlbum.submissions track by submission._id srcgetTemplateUrl(grid-feed-item/grid-feed-item.html)> /ng-include> /div> div classload-more-submissions-container ng-ifdisplayLoadMoreButton()> button classload-more-button animate-fade-in animated ng-if!isLoadingMoreSubmissions && !albumHasNoOlderSubmissions && selectedAlbum.num_submissions > 15 ng-clickloadMoreSubmissions(false)> Load more/button> div classbubble-loading-container animate-fade-in animated ng-ifisLoadingMoreSubmissions> div>/div> div>/div> div>/div> div>/div> /div> /div> div ng-ifselectedAlbum && !selectedAlbum.submissions classloading-submission-container animate-fade-in-fwd> div classbubble-loading-container dark-loader> div>/div> div>/div> div>/div> div>/div> /div> /div> div classno-submissions-in-album ng-ifselectedAlbum.submissions.length 0> h2 ng-clickopenUGCOfferModal() locugc_album_is_empty>/h2> /div> /div> !-- Display when album is not public --> div classprivate-album-container ng-if!selectedAlbum.public> h2 localbum_is_not_public>/h2> /div>/div>div ng-if!selectedAlbum._id> div classanimate-fade-in-fwd flex-center> div classbubble-loading-container> div>/div> div>/div> div>/div> div>/div> /div> /div>/div>/script>script typetext/ng-template idviews/album/scrolling-feed-item/scrolling-feed-item.html>div classscrolling-feed-item {{submission.type}} id{{submission._id}}> !-- Only load the media if the submission is within 2 indexes of the current submission --> div classsubmission-media ng-clicktoggleVideoPlayState()> div ng-ifsubmission.type image> !-- Display foreground media for images --> object data{{submission.thumbnails.medium ? submission.thumbnails.medium : submission.url}} typeimage/jpeg classforeground-image> img srcimages/image_not_supported.svg?sanitizetrue classmedia-failed-to-load/> /object> !-- Display background media for images --> object data{{submission.thumbnails.small ? submission.thumbnails.small : (submission.thumbnails.medium ? submission.thumbnails.medium : submission.url)}} typeimage/jpeg classbackground-image> /object> /div> div ng-ifsubmission.type video> !-- Background Image --> img classbackground-image ng-src{{submission.thumbnails.small ? submission.thumbnails.small : (submission.thumbnails.medium ? submission.thumbnails.medium : submission.url)}}/> !-- Video --> video classforeground-video stylepointer-events: none; playsinline loop> source ng-src{{submission.url + #t0.1}} typevideo/mp4> !-- Error image --> img srcimages/image_not_supported.svg?sanitizetrue classmedia-failed-to-load/> /video> div ng-ifgetVideoElementFromSubmissionId(selectedSubmissionID).paused && getVideoElementFromSubmissionId(selectedSubmissionID).readyState > 2> span classmaterial-icons-round video-play-icon fadeIn>play_arrow/span> /div> /div> audio controls controlslistnodownload noplaybackrate ng-ifsubmission.type audio ng-src{{submission.url}}> /audio> div ng-ifsubmission.text_only> div classsubmission-message> {{submission.contributor.message}} /div> /div> /div> div ng-ifsubmission.contributor classsubmission-details> span classsubmission-header> span classsubmission-name ng-ifalbumSettings.truncate_last_names>{{truncateLastNames(submission.contributor.name)}}/span> span classsubmission-name ng-if!albumSettings.truncate_last_names>{{submission.contributor.name}}/span> !-- Add location if available --> span classsubmission-location ng-ifsubmission.contributor.city> span classmaterial-icons-round location-icon>location_on/span> {{ submission.contributor.city | truncate:30 }} /span> /span> div ng-ifsubmission.contributor.message && !submission.text_only classsubmission-message> {{submission.contributor.message | truncate:400}} /div> /div> div classsubmission-action-bar> span ng-ifvideoIsMuted && submission.type video classmaterial-icons-round side-bar-icon-button ng-clicktoggleMute($event)>volume_off/span> span ng-if!videoIsMuted && submission.type video classmaterial-icons-round side-bar-icon-button ng-clicktoggleMute($event)>volume_up/span> span classmaterial-icons-round side-bar-icon-button reply-icon ng-clicktoggleShowShareBottomSheet()>reply/span> span ng-ifgatherOffer classmaterial-icons-round side-bar-icon-button small-icon ng-clickopenUGCOfferModal()>{{ isGathererCommentUGC ? add_comment : add_a_photo}}/span> /div> div classscroll-item-navigation> div ng-if$index > 0 classmaterial-icons-round previous-navigation side-bar-icon-button ng-clickpreviousSubmission()> expand_less /div> div ng-if$index ! selectedAlbum.submissions.length - 1 classmaterial-icons-round next-navigation side-bar-icon-button ng-clicknextSubmission()>expand_more /div> /div>/div>/script>script typetext/ng-template idviews/album/scrolling-feed/scrolling-feed.html>div classscrolling-feed-container> div classalbum-lightbox-close-button ng-if!config.parentWindowURL ng-clickunloadAllVideos();setSelectedSubmissionID(null)> svg width20 height20 viewBox0 0 14 14 fillnone xmlnshttp://www.w3.org/2000/svg> path dM13 1L1 13M1 1L13 13 stroke#fff stroke-width2 stroke-linecapround stroke-linejoinround>/path> /svg> /div> !-- Sponsor media with link if provided --> div classalbum-sponsor-image ng-ifhasSponsor> a ng-ifsponsorLink href{{sponsorLink}} target_blank> img src{{sponsorMedia.medium_uri}}> /a> img ng-if!sponsorLink src{{sponsorMedia.medium_uri}}> /div> div classscrolling-feed ng-class{hidden: !scrollFeedLoaded}> ng-include ng-repeatsubmission in selectedAlbum.submissions track by submission._id srcgetTemplateUrl(scrolling-feed-item/scrolling-feed-item.html)> /div> ng-include srcgetTemplateUrl(share-bottom-sheet/share-bottom-sheet.html)>/ng-include> div ng-if!scrollFeedLoaded classloading-submission-container animate-fade-in-fwd> div classbubble-loading-container> div>/div> div>/div> div>/div> div>/div> /div> /div>/div>/script>script typetext/ng-template idviews/album/share-bottom-sheet/share-bottom-sheet.html>div classshare-bottom-sheet-container ng-ifshowShareBottomSheet ng-clickopenLightboxModal(submission._id)> div classshare-bottom-sheet-content> div classshare-bottom-sheet-close-button> span classmaterial-icons-round ng-clicktoggleShowShareBottomSheet()>close/span> /div> div classshare-to-options> !-- Share to WhatsApp --> div classshare-option ng-clickopenShareLink(clipboard)> div classshare-icon copy-link> !-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> span classmaterial-icons-round>link/span> /div> div classshare-name locugc_copy_link>/div> /div> !-- Share to WhatsApp --> div classshare-option ng-clickopenShareLink(whatsapp)> div classshare-icon whatsapp> !-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> svg fill#ffffff height28px width28px version1.1 idLayer_1 xmlnshttp://www.w3.org/2000/svg viewBox0 0 308 308 xml:spacepreserve>g idXMLID_468_> path idXMLID_469_ dM227.904,176.981c-0.6-0.288-23.054-11.345-27.044-12.781c-1.629-0.585-3.374-1.156-5.23-1.156 c-3.032,0-5.579,1.511-7.563,4.479c-2.243,3.334-9.033,11.271-11.131,13.642c-0.274,0.313-0.648,0.687-0.872,0.687 c-0.201,0-3.676-1.431-4.728-1.888c-24.087-10.463-42.37-35.624-44.877-39.867c-0.358-0.61-0.373-0.887-0.376-0.887 c0.088-0.323,0.898-1.135,1.316-1.554c1.223-1.21,2.548-2.805,3.83-4.348c0.607-0.731,1.215-1.463,1.812-2.153 c1.86-2.164,2.688-3.844,3.648-5.79l0.503-1.011c2.344-4.657,0.342-8.587-0.305-9.856c-0.531-1.062-10.012-23.944-11.02-26.348 c-2.424-5.801-5.627-8.502-10.078-8.502c-0.413,0,0,0-1.732,0.073c-2.109,0.089-13.594,1.601-18.672,4.802 c-5.385,3.395-14.495,14.217-14.495,33.249c0,17.129,10.87,33.302,15.537,39.453c0.116,0.155,0.329,0.47,0.638,0.922 c17.873,26.102,40.154,45.446,62.741,54.469c21.745,8.686,32.042,9.69,37.896,9.69c0.001,0,0.001,0,0.001,0 c2.46,0,4.429-0.193,6.166-0.364l1.102-0.105c7.512-0.666,24.02-9.22,27.775-19.655c2.958-8.219,3.738-17.199,1.77-20.458 C233.168,179.508,230.845,178.393,227.904,176.981z/> path idXMLID_470_ dM156.734,0C73.318,0,5.454,67.354,5.454,150.143c0,26.777,7.166,52.988,20.741,75.928L0.212,302.716 c-0.484,1.429-0.124,3.009,0.933,4.085C1.908,307.58,2.943,308,4,308c0.405,0,0.813-0.061,1.211-0.188l79.92-25.396 c21.87,11.685,46.588,17.853,71.604,17.853C240.143,300.27,308,232.923,308,150.143C308,67.354,240.143,0,156.734,0z M156.734,268.994c-23.539,0-46.338-6.797-65.936-19.657c-0.659-0.433-1.424-0.655-2.194-0.655c-0.407,0-0.815,0.062-1.212,0.188 l-40.035,12.726l12.924-38.129c0.418-1.234,0.209-2.595-0.561-3.647c-14.924-20.392-22.813-44.485-22.813-69.677 c0-65.543,53.754-118.867,119.826-118.867c66.064,0,119.812,53.324,119.812,118.867 C276.546,215.678,222.799,268.994,156.734,268.994z/>/g>/svg> /div> div classshare-name>WhatsApp/div> /div> !-- Share to Facebook --> div classshare-option ng-clickopenShareLink(facebook)> div classshare-icon facebook> svg xmlnshttp://www.w3.org/2000/svg width50 height50 viewBox0 0 24 24> path fill#0075FA dM12 0c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm3 8h-1.35c-.538 0-.65.221-.65.778v1.222h2l-.209 2h-1.791v7h-3v-7h-2v-2h2v-2.308c0-1.769.931-2.692 3.029-2.692h1.971v3z/> /svg> /div> div classshare-name>Facebook/div> /div> !-- Share to Twitter --> div classshare-option ng-clickopenShareLink(twitter)> div classshare-icon twitter> svg width1200 height1227 viewBox0 0 1200 1227 fillnone xmlnshttp://www.w3.org/2000/svg> path dM714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z fillwhite/> /svg> /div> div classshare-name>Twitter/div> /div> /div> /div>/div>/script>script typetext/ng-template idviews/album/submission-item/submission-item.html>div classsubmission-item fadeInDown animated ng-clickopenLightboxModal(submission._id)> p classsubmission-name>{{submission.contributor.name}}/p> div classsubmission-image ng-style{background-image: url( + (submission.thumbnails.small ? submission.thumbnails.small : submission.url) + )}> /div>/div>/script>script typetext/ng-template idviews/components/forms/date-picker.html>div classdate-picker columns> select namedate-picker-month ng-modeldate.month ng-changeformValuesfield.name Formservice.dateChanged(date.day, date.month, date.year) iddate-picker-month classcolumn flex-auto ng-requiredfield.requiredkey> option value01>Jan/option> option value02>Feb/option> option value03>Mar/option> option value04>Apr/option> option value05>May/option> option value06>Jun/option> option value07>Jul/option> option value08>Aug/option> option value09>Sep/option> option value10>Oct/option> option value11>Nov/option> option value12>Dec/option> /select> select namedate-picker-day ng-modeldate.day ng-changeformValuesfield.name Formservice.dateChanged(date.day, date.month, date.year) iddate-picker-day classcolumn flex-auto ng-requiredfield.requiredkey> option value01>1/option> option value02>2/option> option value03>3/option> option value04>4/option> option value05>5/option> option value06>6/option> option value07>7/option> option value08>8/option> option value09>9/option> option value10>10/option> option value11>11/option> option value12>12/option> option value13>13/option> option value14>14/option> option value15>15/option> option value16>16/option> option value17>17/option> option value18>18/option> option value19>19/option> option value20>20/option> option value21>21/option> option value22>22/option> option value23>23/option> option value24>24/option> option value25>25/option> option value26>26/option> option value27>27/option> option value28>28/option> option value29>29/option> option value30>30/option> option value31>31/option> /select> select ng-modeldate.year ng-changeformValuesfield.name Formservice.dateChanged(date.day, date.month, date.year) namedate-picker-year iddate-picker-year classcolumn flex-auto ng-requiredfield.requiredkey> option value2030>2030/option> option value2029>2029/option> option value2028>2028/option> option value2027>2027/option> option value2026>2026/option> option value2025>2025/option> option value2024>2024/option> option value2023>2023/option> option value2022>2022/option> option value2021>2021/option> option value2020>2020/option> option value2019>2019/option> option value2018>2018/option> option value2017>2017/option> option value2016>2016/option> option value2015>2015/option> option value2014>2014/option> option value2013>2013/option> option value2012>2012/option> option value2011>2011/option> option value2010>2010/option> option value2009>2009/option> option value2008>2008/option> option value2007>2007/option> option value2006>2006/option> option value2005>2005/option> option value2004>2004/option> option value2003>2003/option> option value2002>2002/option> option value2001>2001/option> option value2000>2000/option> option value1999>1999/option> option value1998>1998/option> option value1997>1997/option> option value1996>1996/option> option value1995>1995/option> option value1994>1994/option> option value1993>1993/option> option value1992>1992/option> option value1991>1991/option> option value1990>1990/option> option value1989>1989/option> option value1988>1988/option> option value1987>1987/option> option value1986>1986/option> option value1985>1985/option> option value1984>1984/option> option value1983>1983/option> option value1982>1982/option> option value1981>1981/option> option value1980>1980/option> option value1979>1979/option> option value1978>1978/option> option value1977>1977/option> option value1976>1976/option> option value1975>1975/option> option value1974>1974/option> option value1973>1973/option> option value1972>1972/option> option value1971>1971/option> option value1970>1970/option> option value1969>1969/option> option value1968>1968/option> option value1967>1967/option> option value1966>1966/option> option value1965>1965/option> option value1964>1964/option> option value1963>1963/option> option value1962>1962/option> option value1961>1961/option> option value1960>1960/option> option value1959>1959/option> option value1958>1958/option> option value1957>1957/option> option value1956>1956/option> option value1955>1955/option> option value1954>1954/option> option value1953>1953/option> option value1952>1952/option> option value1951>1951/option> option value1950>1950/option> option value1949>1949/option> option value1948>1948/option> option value1947>1947/option> option value1946>1946/option> option value1945>1945/option> option value1944>1944/option> option value1943>1943/option> option value1942>1942/option> option value1941>1941/option> option value1940>1940/option> option value1939>1939/option> option value1938>1938/option> option value1937>1937/option> option value1936>1936/option> option value1935>1935/option> option value1934>1934/option> option value1933>1933/option> option value1932>1932/option> option value1931>1931/option> option value1930>1930/option> option value1929>1929/option> option value1928>1928/option> option value1927>1927/option> option value1926>1926/option> option value1925>1925/option> option value1924>1924/option> option value1923>1923/option> option value1922>1922/option> option value1921>1921/option> option value1920>1920/option> option value1919>1919/option> option value1918>1918/option> option value1917>1917/option> option value1916>1916/option> option value1915>1915/option> option value1914>1914/option> option value1913>1913/option> option value1912>1912/option> option value1911>1911/option> option value1910>1910/option> option value1909>1909/option> option value1908>1908/option> option value1907>1907/option> option value1906>1906/option> option value1905>1905/option> option value1904>1904/option> option value1903>1903/option> option value1901>1901/option> option value1900>1900/option> /select> input class id{{field.name}} name{{field.name}} typetext ng-modelformValuesfield.name ng-initformValuesfield.name >/div>/script>script typetext/ng-template idviews/directives/debug.html>div classdebug-content-container> div classdebug-heading ng-repeatconnectionDebugItem in connectionDebugItems | orderBy: $index track by connectionDebugItem.name ng-clickcopyValueToClipboard(connectionDebugItem.value)> h4>{{connectionDebugItem.name}}/h4> h4>{{connectionDebugItem.value}}/h4> /div> div classdebug-item ng-repeatdebugItem in debugItems | orderBy:name track by debugItem.name ng-class{is-embedded: isEmbedded}> div>{{debugItem.name}}/div> div classdebug-output>{{debugItem.output}}/div> div classcopy-button ng-if!isEmbedded ng-clickcopyValueToClipboard({debugItem.name: debugItem.output})> span classmaterial-icons-round>copy/span> span>Copy/span> /div> /div>/div>/script>script typetext/ng-template idviews/directives/inlineOffers.html>div> ul stylelist-style: none; padding: 0; margin: 0;> !-- Standard Display --> li ng-repeatoffer in current.inlineOffers track by $index > div classinline-offer offer-modal id{{offer.id}} ng-classoffer.type ng-ifoffer.position inline> div inline-offer offeroffer>/div> /div> /li> /ul>/div>/script>script typetext/ng-template idviews/directives/inlineOffersPages.html>!-- If the scene has its own offers, only display the offers that have ids in the scene.offers array -->div ng-ifscene.offers.length > 0> ul stylelist-style: none; padding: 0; margin: 0;> !-- Standard Display --> li ng-repeatoffer in current.inlineOffers track by $index > div classinline-offer offer-modal id{{offer.id}} ng-classoffer.type ng-ifoffer.position inline && isOfferInScene(offer.id, scene.offers)> div inline-offer offeroffer>/div> /div> /li> /ul>/div>!-- If the scene DOES NOT have its own offers, only display project offers -->div ng-ifscene.offers.length 0> ul stylelist-style: none; padding: 0; margin: 0;> !-- Standard Display --> li ng-repeatoffer in current.inlineProjectOffers track by $index > div classinline-offer offer-modal id{{offer.id}} ng-classoffer.type ng-ifoffer.position inline> div inline-offer offeroffer>/div> /div> /li> /ul>/div>/script>script typetext/ng-template idviews/directives/inlinePageOffers.html>div> ul stylelist-style: none; padding: 0; margin: 0;> !-- Standard Display --> li ng-repeatoffer in current.inlinePageOffers track by $index > div classinline-offer offer-modal id{{offer.id}} ng-classoffer.type ng-ifoffer.position inline> div inline-offer offeroffer>/div> /div> /li> /ul>/div>/script>script typetext/ng-template idviews/directives/leaderboard.html>div classrankings-container> div ng-repeatuser in overall_rankings | limitTo: limitToValue | orderBy: user.rank ng-class{your-rank-highlight: isCurrentUser(user), first-place: user.rank 1, second-place: user.rank 2, third-place: user.rank 3} classranking columns> div classflex-center> !-- First place image --> img ng-ifuser.rank 1 classfirst-place animated fadeInLeft ng-src{{current.themeAssetURL}}/images/leaderboard/first-rank.png> !-- Second place image --> img ng-ifuser.rank 2 classsecond-place animated fadeInLeft ng-src{{current.themeAssetURL}}/images/leaderboard/second-rank.png> !-- Third place image --> img ng-ifuser.rank 3 classthird-place animated fadeInLeft ng-src{{current.themeAssetURL}}/images/leaderboard/third-rank.png> div ng-ifuser.rank > 4 classrank-align>/div> !-- Rank number --> span>{{getRankText(user.rank)}}/span> /div> !-- Users score --> div classrank-score flex-center> {{user.score}} span points-suffix countuser.score>/span> /div> !-- Users name --> div classflex-center user-name> span>{{user.label}}/span>  span ng-showisCurrentUser(user) loclabel-is-user>/span> /div> /div> div ng-ifdisplayUserRank classranking columns your-rank-highlight rank-not-in-list> !-- Rank number --> div classflex-center> div classrank-align>/div> span>{{getRankText(currentUserRanking.rank)}}/span> /div> !-- Rank number --> div classrank-score flex-center> {{currentUserRanking.score}} span points-suffix countcurrentUserRanking.score>/span> /div> !-- Users name --> div classflex-center user-name> span>{{currentUserRanking.label}}/span>  span loclabel-is-user>/span> /div> /div>/div>!-- Show more or less rankings in rankings list -->button classshow-more-rankings ng-showoverall_rankings.length > 3 ng-clicktoggleRankingLimit()> span ng-if!displayAllRankings>+/span> span ng-ifdisplayAllRankings>-/span>/button>/script>script typetext/ng-template idviews/directives/predictions/rankings-list.html>!-- Rankings list - START -->div classexpanded-leaderboard-container prediction-rankings-container> div ng-repeatleaderboardItem in campaignLeaderboard track by leaderboardItem.user_id classleaderboard-summary-item> p classrank-number>{{leaderboardItem.rank}}/p> div classuser-image> div> {{getInitialsFromName(leaderboardItem.label)}} /div> div classuser-profile-picture ng-ifleaderboardItem.picture> dynamic-image valueleaderboardItem.picture>/dynamic-image> /div> img classrank-icon altFirst place ng-ifleaderboardItem.rank 1 ng-src{{current.themeAssetURL}}/images/leaderboard/first-rank.png> img classrank-icon altSecond place ng-ifleaderboardItem.rank 2 ng-src{{current.themeAssetURL}}/images/leaderboard/second-rank.png> img classrank-icon altThird place ng-ifleaderboardItem.rank 3 ng-src{{current.themeAssetURL}}/images/leaderboard/third-rank.png> /div> p classuser-name>{{leaderboardItem.label}}/p> p classuser-points>{{leaderboardItem.score | number : fractionSize}} span locprediction_points_name_abbreviation>/span>/p> /div>/div>!-- Rankings list - END -->/script>script typetext/ng-template idviews/directives/predictions/rankings.html>!-- Leaderboard - START -->div classrankings-wrapper fullscreen-panel> div ng-clickcloseRankings() classclose-panel-button> /div> div> ng-include srcviews/directives/predictions/top-rankings-summary.html>/ng-include> /div> !-- Expanded list of leaderboard users --> div classscroll-wrapper> ng-include srcviews/directives/predictions/rankings-list.html>/ng-include> /div> div classprediction-share-button-container> button ng-clickopenShareScoreModal()> span classmaterial-icons>reply/span> span locshare-your-score-button>/span> /button> /div>/div>!-- Leaderboard - END -->/script>script typetext/ng-template idviews/directives/predictions/top-rankings-summary.html>!-- Leaderboard top 3 rankings -->div classprediction-rankings-container> div ng-repeatleaderboardItem in campaignLeaderboardSummaryUsers track by leaderboardItem.user_id classleaderboard-summary-item ng-class{first-place: leaderboardItem.rank 1, second-place: leaderboardItem.rank 2, third-place: leaderboardItem.rank 3}> div classfirst-place-background bg-confetti-animated ng-ifleaderboardItem.rank 1>/div> div classuser-image> div ng-if!leaderboardItem.placeholder> {{getInitialsFromName(leaderboardItem.label)}} /div> div classcoming-soon-icon ng-ifleaderboardItem.placeholder> {{getOrdinal(leaderboardItem.rank)}} /div> div classuser-profile-picture ng-ifleaderboardItem.picture> dynamic-image valueleaderboardItem.picture>/dynamic-image> /div> img classrank-icon altFirst place ng-ifleaderboardItem.rank 1 ng-src{{current.themeAssetURL}}/images/leaderboard/first-rank.png> img classrank-icon altSecond place ng-ifleaderboardItem.rank 2 ng-src{{current.themeAssetURL}}/images/leaderboard/second-rank.png> img classrank-icon altThird place ng-ifleaderboardItem.rank 3 ng-src{{current.themeAssetURL}}/images/leaderboard/third-rank.png> /div> p classuser-name>{{leaderboardItem.label}}/p> p classuser-points ng-ifleaderboardItem.score> span tween-number tween-valueleaderboardItem.score tween-formatcomma>/span> span locprediction_points_name_abbreviation>/span> /p> /div>/div>/script>script typetext/ng-template idviews/directives/predictions/user-results.html>!-- Your Results - START -->div classyour-results-wrapper fullscreen-panel> div ng-clickcloseUserResults() classclose-panel-button> /div> h3 locprediction_your_results>/h3> div classuser-results-list-container> div ng-repeat(dateLabel, value) in sortedCampaignResultsByDate track by $index classuser-result-item> p classdate-heading>{{dateLabel}}/p> div ng-repeatresult in value track by $index> div classuser-result-wrapper ng-class{earned-points: result.pointsAwarded > 0}> div classpoints-container> span ng-ifresult.pointsAwarded > 0>+/span>{{result.pointsAwarded}} span locprediction_points_name_abbreviation>/span> /div> div classpoints-awarded-text> span ng-ifresult.pointsAwarded > 0 locprediction_answered_correctly>/span> span ng-ifresult.pointsAwarded 0 locprediction_answered_incorrectly>/span> /div> /div> /div> /div> /div> div classtag-line> span locprediction_keep_making_predictions>/span> /div>/div>!-- Your Results - END -->/script>script typetext/ng-template idviews/directives/slider.html>div classslider> div classslider-main> div classslider-track editable> div classslider-knob>/div> div classslider-track-fg>/div> /div> div classslider-track popular> div classslider-track-fg>/div> /div> /div>/div>/script>script typetext/ng-template idviews/directives/sound.html>audio id{{name}}> source ng-src{{sourceogg}} typeaudio/ogg; codecstheora, vorbis /> source ng-src{{sourcemp3}} typeaudio/mpeg />/audio>/script>script typetext/ng-template idviews/modals/debug-feedback.html>div classmodal-header> h4 classmodal-title>About this Form.../h4>/div>div classmodal-body> div ng-ifisWinner> p>You are currently the winner./p> p>Please either return to the winner form and submit your information or disable your winner status and exit the form./p> /div> div ng-if!isWinner> table> tr> td>Application/td> td>MegaController/td> /tr> tr> td>Deployment Key/td> td>{{deploymentKey}}/td> /tr> tr> td>Controller Key/td> td>{{controllerKey}}/td> /tr> tr> td>Version/td> td>{{versionNumber}}/td> /tr> tr> td>Controller Number/td> td>{{controllerNumber}}/td> /tr> tr> td>Winner/td> td>{{isWinner}}/td> /tr> tr> td>Score/td> td>{{score}}/td> /tr> tr> td>Rank/td> td>{{rank}}/td> /tr> /table> /div>/div>div classmodal-footer> button classbtn btn-success ng-clickcancel()>Return to form/button> button classbtn btn-danger ng-clickdisableWinnerAndBack()>Exit form/button>/div>div>/div>/script>script typetext/ng-template idviews/modals/debug.html>div classdebug-modal> div classmodal-header> h4 classmodal-title> span classdebug-title>Info/span> span classdebug-timestamp>Last built: {{config.buildDate | date: MMM d, y HH:mm:ss}}/span> /h4> /div> div classmodal-body> div debug>/div> /div> div classmodal-footer> button classbtn ng-clickcancel()>OK/button> /div>/div>/script>script typetext/ng-template idviews/modals/draftMode.html>div classmodal-body draft-mode-modal-body> h1 locpoll_will_open_soon>/h1> !-- Navigate back button --> div classnavigate-back-button ng-ifgetBackButtonText ng-clickcancel()> img src./images/back-arrow-black.png> p>span locpredictions_back_to>/span> {{getBackButtonText}}/p> /div>/div>/script>script typetext/ng-template idviews/modals/login.html>div classmodal-body login-modal-body> !-- Select login method --> div ng-if!isAuthorizing classanimate-fade-in> div classlogin-header-image> img classheader-image altClose login ng-if(current.showMedia.medium && !current.showMedia.medium.includes(blank.png)) || (current.showMedia.small && !current.showMedia.small.includes(blank.png)) ng-src{{current.showMedia.medium || current.showMedia.small}}> /div> div classlogin-button-wrapper> p loclogin_to_authorize>/p> div classsocial-login-button-container> div classbutton-container ng-repeatprovider in enabledProviders> a ng-ifprovider.label consts.CognitoProviders.FACEBOOK ng-clickstartAuthorization(provider) classsocial-button idfacebook-connect> span classmaterial-icons material-icons-round>/span> span classsocial-button-text loclogin-button-text-facebook>/span> /a> a ng-ifprovider.label consts.CognitoProviders.GOOGLE ng-clickstartAuthorization(provider) classsocial-button idgoogle-connect> span classmaterial-icons material-icons-round>/span> span classsocial-button-text loclogin-button-text-google>/span> /a> a ng-ifprovider.label consts.CognitoProviders.NBCU ng-clickstartAuthorization(provider) classsocial-button idnbcu-connect> span classmaterial-icons material-icons-round>person/span> span classsocial-button-text>span loclogin-button-text-generic>/span>span> {{provider.client.label ? provider.client.label : provider.label}}/span>/span> /a> /div> /div> /div> /div> !-- Authorization in progress --> div ng-ifisAuthorizing classanimate-fade-in login-in-progress-container ng-class{login-complete: isAuthorizationComplete}> div classlogin-header-image> img classheader-image ng-src{{profilePicture()}}> h2 classuser-name-container animated fadeIn ng-ifisAuthorizationComplete> span locwelcome>/span>, {{userName()}}/h2> /div> div classlogin-button-wrapper> p ng-if!isAuthorizationComplete locauthorizing_continue_in_other_window>/p> div classcircle-loader ng-class{load-complete: isAuthorizationComplete}> div classcheckmark draw>/div> /div> button ng-if!isAuthorizationComplete classcancel-authorization-button flex-center guttered ng-clickcancelAuthorization() loccancel_authorization>/button> /div> /div> !-- Close button--> div classclose-button ng-clickcancel()>/div>/div>/script>script typetext/ng-template idviews/modals/offer.html>div classmodal-body ng-class{app-container feedback: isForm() && offer.position ! inline, hide-inline-offer :offer.position inline && inlineOfferSubmitted, tiny-width :deviceState.mediaQuerySize.isTiny, small-width :deviceState.mediaQuerySize.isSmall, medium-width :deviceState.mediaQuerySize.isMedium}> !-- Billboard Offer --> div classbillboard-offer ng-ifisBillboard()> ng-include srcgetTemplateUrl(billboard.html)>/ng-include> /div> !-- Webpage Offer --> div classwebpage-offer ng-ifisWebpage()> ng-include srcgetTemplateUrl(webpage.html)>/ng-include> /div> !-- Form Offer --> div classform-offer feedback ng-ifisForm()> ng-include srcgetTemplateUrl(form.html)>/ng-include> /div> !-- App Install Offer --> div classappinstall-offer ng-ifisAppInstall()> div app-install offer-dataoffer offer-keykey>/div> /div> !-- Footer --> footer footer ng-class{hide-footer-media: !isVisible(offer.content.footer.sponsor.visible), hide-footer-policies: !isVisible(offer.content.footer.policies.visible)} ng-ifisVisible(offer.content.footer.sponsor.visible) || isVisible(offer.content.footer.policies.visible)> /footer> !-- CTA & Close buttons (not used for Form offers) --> div classcolumns offer-modal-buttons flex-center> !--CTA button (Learn more)--> a ng-ifisVisible(offer.content.cta.visible) && !isForm() && (offer.position popup || !offer.position) ng-clickvisitOffer() ng-href{{getCascadingUri()}} target{{getNavigationTarget()}}> button>{{getCascadingFormContent(offer.content.cta)}}/button> /a> !-- Close button--> button ng-ifisVisible(offer.content.cancel.visible) && (offer.position popup || !offer.position) && !isForm() ng-click$dismiss(dismissed)> {{getCascadingFormContent(offer.content.cancel)}} /button> /div>/div>div classrows flex-auto inline-offer-submitted ng-ifinlineOfferSubmitted> h3 classflex-center locfeedback_thanks_for_your_submission>/h3> button classflex-center ng-clickopenInlineOffer() locok>/button>/div>/script>script typetext/ng-template idviews/modals/offers/billboard.html>!-- Offer Copy -->div classrows> a ng-href{{getCascadingUri()}} target{{getNavigationTarget()}} ng-class{no-href : offer.actiongetActionKey().type ! navigate} ng-clickvisitOffer()> h2 ng-ifisVisible(offer.content.title.visible)>{{getCascadingFormContent(offer.content.title)}}/h2> h3 ng-ifisVisible(offer.content.subtitle.visible)>{{getCascadingFormContent(offer.content.subtitle)}}/h3> /a> !--Small Offer Media START --> !--Small Offer Background --> div classoffer-background-image ng-ifdeviceState.mediaQuerySize.isSmall || deviceState.mediaQuerySize.isTiny ng-class{has-background-image : offer.content.background.media.medium.uri || offer.content.background.media.uri} ng-style{background-image:url(+(offer.content.background.media.small.uri || offer.content.background.media.uri)+)}> !--Small Offer Foreground --> a ng-href{{getCascadingUri()}} target{{getNavigationTarget()}} ng-class{no-href : offer.actiongetActionKey().type ! navigate} ng-clickvisitOffer()> img classoffer-foreground-image ng-if(offer.content.foreground.media.uri || offer.content.foreground.media.small.uri) && mediaIsImage ng-src{{offer.content.foreground.media.small.uri || offer.content.foreground.media.uri}}> /a> div classvideo-container video-controls ng-if(offer.content.foreground.media.uri || offer.content.foreground.media.small.uri) && !mediaIsImage> video classoffer-foreground-video video-element ng-clickclickVideoControl($event) width100% heightauto playsinline id{{offer.id}}> source ng-src{{offer.content.foreground.media.small.uri + #t0.1 || offer.content.background.media.small.uri + #t0.1}} typevideo/mp4> /video> span classmaterial-icons-round play-button>play_circle_outline/span> div ng-ifvideoIsDone classwatch-again-overlay> button ng-clickwatchAgain($event)> span classmaterial-icons-round>replay/span> span locwatch_again>/span> /button> /div> span classmaterial-icons-round pause-icon ng-if!videoIsDone>pause/span> div classvideo-controls ng-if!videoIsDone> div classaudio-control> span ng-ifvideoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_off/span> span ng-if!videoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_up/span> /div> div classfullscreen-control ng-ifshowFullscreenButton> span classmaterial-icons-round ng-clicktoggleFullscreen($event)>fullscreen/span> /div> /div> /div> /div> !--Small Offer Media END --> !--Medium Offer Media START --> !-- Background Media --> div classoffer-background-image ng-ifdeviceState.mediaQuerySize.isMedium ng-class{has-background-image : offer.content.background.media.medium.uri || offer.content.background.media.uri} ng-style{background-image:url(+(offer.content.background.media.medium.uri || offer.content.background.media.uri)+)}> !-- Foreground Media --> a ng-href{{getCascadingUri()}} target{{getNavigationTarget()}} ng-class{no-href : offer.actiongetActionKey().type ! navigate} ng-clickvisitOffer()> img classoffer-foreground-image ng-if(offer.content.foreground.media.uri || offer.content.foreground.media.medium.uri) && mediaIsImage ng-src{{offer.content.foreground.media.medium.uri || offer.content.foreground.media.uri}}> /a> div classvideo-container video-controls ng-if(offer.content.foreground.media.uri || offer.content.foreground.media.medium.uri) && !mediaIsImage> video classoffer-foreground-video video-element ng-clickclickVideoControl($event) width100% heightauto playsinline id{{offer.id}}> source ng-src{{offer.content.foreground.media.medium.uri + #t0.1 || offer.content.background.media.medium.uri + #t0.1}} typevideo/mp4> /video> span classmaterial-icons-round play-button>play_circle_outline/span> div ng-ifvideoIsDone classwatch-again-overlay> button ng-clickwatchAgain($event)> span classmaterial-icons-round>replay/span> span locwatch_again>/span> /button> /div> span classmaterial-icons-round pause-icon ng-if!videoIsDone>pause/span> div classvideo-controls ng-if!videoIsDone> div classaudio-control> span ng-ifvideoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_off/span> span ng-if!videoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_up/span> /div> div classfullscreen-control ng-ifshowFullscreenButton> span classmaterial-icons-round ng-clicktoggleFullscreen($event)>fullscreen/span> /div> /div> /div> /div> !--Medium Offer Media END -->/div>/script>script typetext/ng-template idviews/modals/offers/cameraField.html>div classcamera-container ng-class{small-iframe : iframeIsSmall}> div classfile-upload-container> !-- Loading bubbles displayed anytime an action is in progress --> div classaction-in-progress-container animate-fade-in animated ng-ifphotoBoothActionInProgress> div classbubble-loading-container> div>/div> div>/div> div>/div> div>/div> /div> /div> !-- Media Preview Container --> div classmedia-preview-container photo-booth-container animate-fade-in animated idmediaPreviewContainer ng-class{show-media-preview : mediaPreviewExists && !mediaStream, show-media-preview-fullscreen: (!mediaPreviewExists && mediaStream) || photoBoothActionInProgress, one-column : mediaPreviewArray.length 1, two-column: mediaPreviewArray.length 2, three-column: mediaPreviewArray.length 3, grid: mediaPreviewArray.length > 4}> !-- Media Preview Array --> div ng-repeatmedia in mediaPreviewArray track by $index ng-classmedia.type> !-- Display image preview if the selected content is an image --> div classmedia-height-wrapper ng-ifmedia.type image> img idimage-preview classpreview-image animate-fade-in animated ng-src{{media.preview}}/> /div> !-- Display video preview if the selected content is a video --> !-- iOS Safari bug workaround: iOS Safari often crashes or fails to autoplay when multiple videos are selected, so dont autoplay unless the user chooses a single video only. --> !-- Future consideration 1: If iOS Safaris multi-file video autoplay issues are one day fixed: --> !-- Display and autoplay videos on all devices --> !-- Future consideration 2: If iOS Safaris multi-file crashing is fixed, but autoplay still fails: --> !-- Display videos on Safari, but instead of autoplaying, advance to .5s using .currentTime --> !-- Do not use #t0.5 as that seems to fail in Safari. It might also be necessary to invoke --> !-- load() on the video in Safari to force the poster frame to appear. --> !-- iOS Safari: video failure research references: --> !-- https://stackoverflow.com/questions/41255841/how-to-get-html5-video-thumbnail-without-using-poster-on-safari-or-ios/75889611#75889611 --> !-- https://bugs.webkit.org/show_bug.cgi?id232076 --> !-- https://github.com/GoogleChrome/workbox/issues/3004 --> video ng-ifmedia.type video && !photoBoothActionInProgress && ($root.config.devicePlatform ! ios || ($root.config.devicePlatform ios && mediaPreviewArray.length 1)) ng-src{{media.preview}} playsinline controls muted ng-attr-autoplay{{mediaPreviewArray.length 1 || undefined}} classpreview-image> /video> audio controls controlslistnodownload noplaybackrate ng-ifmedia.type audio ng-src{{media.preview}}> /audio> div classios-video-placeholder ng-ifmedia.type video && !photoBoothActionInProgress && ($root.config.devicePlatform ios && mediaPreviewArray.length > 1)> span classmaterial-icons material-icons-round>movie/span> span> span locphotobooth_nav_video>/span> {{media.videoCount}}/span> /div> /div> !-- Video Recording timer - displays as 00:00:00 --> div ng-ifvideoBoothRecorder.state recording classvideo-recording-timer animate-fade-in animated> p>{{formattedSeconds}}/p> /div> !-- Display video stream while taking a photo or video --> video ng-showmediaStream && !photoBoothActionInProgress idvideo-preview ng-class{no-pointer-events animate-fade-in animated: mediaStream} autoplay playsinline controls muted> /video> !-- Take photo button --> div classrecord-button photo animate-fade-in animated clickable ng-ifmediaStream && mediaAction photoBooth ng-clicktakePhoto()> div classinner>/div> /div> !-- Record video button --> div ng-ifmediaStream && mediaAction videoBooth classrecord-button animate-fade-in animated clickable ng-class{recording: videoBoothRecorder && videoBoothRecorder.state recording} ng-clickrecordButtonClickHandler(field.name)> div classinner>/div> /div> !-- Video recording progress bar --> div ng-ifmediaStream && mediaAction videoBooth && videoBoothRecorder && videoBoothRecorder.state recording classvideo-recording-progress-bar animate-fade-in animated> div classvideo-recording-progress-bar-inner ng-style{width: mediaUploadVideoProgress + %}>/div> /div> !-- Change camera button --> span ng-ifcaptureDevices.length > 1 && mediaStream && videoBoothRecorder.state ! recording ng-clickgetNextCamera() classmaterial-icons-round change-camera animate-fade-in animated>cached/span> !-- Cancel or Retake bar after media is present --> div classcancel-retake-bar animate-fade-in animated ng-ifmediaStream || mediaPreviewExists> !-- Cancel button --> p ng-clickclearMediaPreview() classanimate-fade-in animated locphotobooth_cancel>/p> !-- Change button for media upload--> p ng-ifmediaAction upload classanimate-fade-in animated ng-clickopenUploadFileSelectorByID(file-upload-input); scrollToTopOfElement(.camera-container) locphotobooth_change>/p> !-- Retake button for photos --> p ng-ifmediaAction photoBooth && !mediaStream && !photoBoothActionInProgress classanimate-fade-in animated ng-clickuseNativeCapture.photo ? openUploadFileSelectorByID(native-image-file-upload-input) : startMediaStream(true, true); scrollToTopOfElement(.camera-container) locphotobooth_retake> /p> !-- Retake button for videos --> p ng-ifmediaAction videoBooth && !mediaStream && !photoBoothActionInProgress classanimate-fade-in animated ng-clickuseNativeCapture.video ? openUploadFileSelectorByID(native-video-file-upload-input) : startMediaStream(true, true); scrollToTopOfElement(.camera-container) locphotobooth_retake> /p> /div> /div> !-- Display welcome UI for Upload media --> div classanimate-fade-in animated media-height-wrapper ng-ifmediaAction upload && !mediaPreviewExists && !mediaStream && !photoBoothActionInProgress> !-- Open media selector --> label classfile-upload-icon file-upload-action ng-clickopenUploadFileSelectorByID(file-upload-input); scrollToTopOfElement(.camera-container)> span classmaterial-icons-round>collections/span> span classno-preview-text locphotobooth_upload_photo_video>/span> span ng-ifmultifileUploadIsAllowed classupload-max-text>{{mediaUploadMaxMessage}}/span> /label> /div> !-- Display welcome UI for Photo Booth --> div classanimate-fade-in animated media-height-wrapper ng-ifmediaAction photoBooth && !mediaPreviewExists && !mediaStream && !photoBoothActionInProgress> !-- Start Taking a photo. Uses native camera if on android or iOS, otherwise uses photo-booth --> label classfile-upload-icon ng-clickuseNativeCapture.photo ? openUploadFileSelectorByID(native-image-file-upload-input) : startMediaStream(true, true); scrollToTopOfElement(.camera-container)> span classmaterial-icons-round>photo_camera/span> span classno-preview-text locphotobooth_take_photo>/span> /label> /div> !-- Display welcome UI for Video Booth --> div classanimate-fade-in animated media-height-wrapper ng-ifmediaAction videoBooth && !mediaPreviewExists && !mediaStream && !photoBoothActionInProgress> !-- Start Taking a video. Uses native camera if on android or iOS, otherwise uses photo-booth --> label id{{offer.id}}_{{field.name}}Label for{{offer.id}}_{{field.name}} ng-clickuseNativeCapture.video ? openUploadFileSelectorByID(native-video-file-upload-input) : startMediaStream(true, true); scrollToTopOfElement(.camera-container) classfile-upload-icon> span classmaterial-icons-round>photo_camera/span> span classno-preview-text locphotobooth_start_recording>/span> /label> /div> !-- Media input for native Android/iOS uploads & capturing --> input typefile acceptimage/* classupload captureenvironment idnative-image-file-upload-input onchangeangular.element(this).scope().handleMediaUpload(this, event) ng-requiredfield.requiredkey ng-initformValuesfield.name > input typefile acceptvideo/* classupload captureenvironment idnative-video-file-upload-input onchangeangular.element(this).scope().handleMediaUpload(this, event) ng-requiredfield.requiredkey ng-initformValuesfield.name > !-- Media input for image uploads --> !-- Note: iOS Safari apparently crashes when the name attribute is not provided. See: https://stackoverflow.com/questions/29225824/mobile-safari-crashing-while-capturing-photo-using-input-type-file --> input typefile classupload acceptimage/jpg, image/jpeg, image/png, video/*, audio/wav, audio/mp3, audio/mp4, audio/webm, audio/ogg idfile-upload-input namefileupload onchangeangular.element(this).scope().handleMediaUpload(this, event) ng-requiredfield.requiredkey ng-initformValuesfield.name > !-- Output recorded content to preview-canvas --> canvas idpreview-canvas styledisplay: none;>/canvas> /div> !-- Media action selection --> div classcamera-button-container animate-fade-in animated ng-if!mediaStream && !mediaPreviewExists && !photoBoothActionInProgress && showMediaActions> button ng-iffield.options.video && allowCameraOnDesktop ng-class{selected: mediaAction videoBooth} typebutton ng-clickselectMediaAction(videoBooth, field); scrollToTopOfElement(.camera-container) locphotobooth_nav_video> /button> button ng-iffield.options.photo && allowCameraOnDesktop ng-class{selected: mediaAction photoBooth} typebutton ng-clickselectMediaAction(photoBooth, field); scrollToTopOfElement(.camera-container) locphotobooth_nav_photo> /button> button ng-iffield.options.upload ng-class{selected: mediaAction upload} typebutton ng-clickselectMediaAction(upload, field); scrollToTopOfElement(.camera-container) locphotobooth_nav_upload> /button> /div> span classerrorText media-error-text flex-center ng-showmediaArrayForUpload 0 && form.attempted> span locphotobooth_provide_media>/span> {{mediaAction}}. /span> !-- Error when media is too large --> span classerrorText media-error-text flex-center ng-showmediaForUploadTooLarge> {{mediaForUploadTooLargeErrorMessage}} /span> !-- Error when media file limit has been exceeded --> span classerrorText media-error-text flex-center ng-showmediaFileLimitExceeded> {{mediaFileLimitErrorMessage}} /span> !-- Error text when media is invalid --> span classerrorText media-error-text flex-center ng-show!validMedia locphotobooth_invalid_media>/span>/div>/script>script typetext/ng-template idviews/modals/offers/form.html>!-- Small Offer Image Or Video -->div classrows ng-ifdeviceState.mediaQuerySize.isSmall || deviceState.mediaQuerySize.isTiny> a ng-href{{getCascadingUri()}} target{{getNavigationTarget()}} ng-class{no-href : offer.actiongetActionKey().type ! navigate} ng-clickvisitOffer()> img classoffer-foreground-image ng-class{submitted-form-media : clickableFormMedia && formSubmissionSuccessful} ng-if(offer.content.foreground.media.uri || offer.content.foreground.media.small.uri) && mediaIsImage ng-src{{offer.content.foreground.media.small.uri || offer.content.foreground.media.uri}}> /a> div classvideo-container video-controls ng-if(offer.content.foreground.media.uri || offer.content.foreground.media.small.uri) && !mediaIsImage> video classoffer-foreground-video video-element ng-clickclickVideoControl($event) width100% heightauto playsinline id{{offer.id}}> source ng-src{{offer.content.foreground.media.small.uri + #t0.1 || offer.content.background.media.small.uri + #t0.1}} typevideo/mp4> /video> span classmaterial-icons-round play-button>play_circle_outline/span> div ng-ifvideoIsDone classwatch-again-overlay> button ng-clickwatchAgain($event)> span classmaterial-icons-round>replay/span> span locwatch_again>/span> /button> /div> span classmaterial-icons-round pause-icon ng-if!videoIsDone>pause/span> div classvideo-controls ng-if!videoIsDone> div classaudio-control> span ng-ifvideoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_off/span> span ng-if!videoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_up/span> /div> div classfullscreen-control ng-ifshowFullscreenButton> span classmaterial-icons-round ng-clicktoggleFullscreen($event)>fullscreen/span> /div> /div> /div>/div>!-- Medium Offer Image Or Video -->div classrows ng-ifdeviceState.mediaQuerySize.isMedium> a ng-href{{getCascadingUri()}} target{{getNavigationTarget()}} ng-class{no-href : offer.actiongetActionKey().type ! navigate} ng-clickvisitOffer()> img classoffer-foreground-image ng-class{submitted-form-media : clickableFormMedia && formSubmissionSuccessful} ng-if(offer.content.foreground.media.uri || offer.content.foreground.media.medium.uri) && mediaIsImage ng-src{{offer.content.foreground.media.medium.uri || offer.content.foreground.media.uri}}> /a> div classvideo-container video-controls ng-if(offer.content.foreground.media.uri || offer.content.foreground.media.medium.uri) && !mediaIsImage> video classoffer-foreground-video video-element ng-clickclickVideoControl($event) width100% heightauto playsinline id{{offer.id}}> source ng-src{{offer.content.foreground.media.medium.uri + #t0.1 || offer.content.background.media.medium.uri + #t0.1}} typevideo/mp4> /video> span classmaterial-icons-round play-button>play_circle_outline/span> div ng-ifvideoIsDone classwatch-again-overlay> button ng-clickwatchAgain($event)> span classmaterial-icons-round>replay/span> span locwatch_again>/span> /button> /div> span classmaterial-icons-round pause-icon ng-if!videoIsDone>pause/span> div classvideo-controls ng-if!videoIsDone> div classaudio-control> span ng-ifvideoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_off/span> span ng-if!videoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_up/span> /div> div classfullscreen-control ng-ifshowFullscreenButton> span classmaterial-icons-round ng-clicktoggleFullscreen($event)>fullscreen/span> /div> /div> /div>/div>!-- Offer Heading text -->a ng-href{{getCascadingUri()}} target{{getNavigationTarget()}} ng-class{no-href : offer.actiongetActionKey().type ! navigate} ng-clickvisitOffer()> h2 classfeedback-title ng-ifisVisible(offer.content.title.visible)>{{getCascadingFormContent(offer.content.title)}}/h2>/a>a ng-href{{getCascadingUri()}} target{{getNavigationTarget()}} ng-class{no-href : offer.actiongetActionKey().type ! navigate} ng-clickvisitOffer()> h3 ng-ifisVisible(offer.content.subtitle.visible)>{{getCascadingFormContent(offer.content.subtitle)}}/h3>/a>!-- Offer Form -->form nameform novalidate ng-class{attempted: form.attempted}> div ng-repeatsection in offer.content.form.sections classform-section ng-class{multiple-sections : offer.content.form.sections.length > 1}> !-- Section titles and descriptions --> p ng-ifsection.title.text classsection-title> {{section.title.text}}/p> p ng-ifsection.subtitle.text classsection-subtitle> {{section.subtitle.text}}/p> p ng-ifsection.description.text classsection-description> {{section.description.text}}/p> ul ng-show(clickableFormMedia && !formSubmissionSuccessful) || !clickableFormMedia> li ng-repeatfield in section.fields classitem-{{field.type}} ng-class{touched: field.touched, guttered-top: $first && field.type camera} ng-ifisVisible(field.visible)> !-- checkbox --> input id{{offer.id}}_{{field.name}} name{{offer.id}}_{{field.name}} ng-blurfield.touched true ng-ifFormservice.isCheckbox(field) type{{field.type}} ng-modelformValuesfield.name ng-requiredfield.requiredkey ng-initformValuesfield.name false> label for{{offer.id}}_{{field.name}} ng-if!Formservice.isCamera(field)> span ng-bind-htmlfield.label>/span> span classrequired ng-iffield.requiredkey locfeedback_required>/span> /label> !-- text, email, tel, and number --> input id{{offer.id}}_{{field.name}} name{{offer.id}}_{{field.name}} ng-blurfield.touched true ng-ifFormservice.isInput(field) type{{field.type}} ng-modelformValuesfield.name ng-requiredfield.requiredkey ng-changefield.type number ? formValuesfield.name Formservice.isValidNumber(formValuesfield.name) : null; checkFormIsEmpty(); ng-attr-maxlength{{field.name name || field.name email || field.name city ? 100 : 1000}} ng-initformValuesfield.name > !-- textarea --> textarea id{{offer.id}}_{{field.name}} name{{offer.id}}_{{field.name}} ng-blurfield.touched true ng-ifFormservice.isTextarea(field) ng-modelformValuesfield.name ng-requiredfield.requiredkey ng-changecheckFormIsEmpty(); ng-attr-maxlength{{field.name name || field.name email || field.name city ? 100 : 1000}} ng-initformValuesfield.name >/textarea> !-- date --> ng-include srcviews/components/forms/date-picker.html ng-ifFormservice.isDate(field)>/ng-include> !-- list --> select id{{offer.id}}_{{field.name}} name{{offer.id}}_{{field.name}} classdropdown-list ng-ifFormservice.isList(field) ng-modelformValuesfield.name ng-requiredfield.requiredkey ng-optionsoption.label as option.label for option in field.options> option selected value disabled locfeedback_empty_select>/option> /select> !-- radio group --> ul classradio-inline ng-ifFormservice.isRadio(field)> li classradio ng-repeatoption in field.options id{{offer.id}}_{{field.name}} name{{offer.id}}_{{field.name}}> label> input type{{field.type}} ng-modelformValuesfield.name ng-requiredfield.requiredkey ng-valueoption.label ng-initformValuesfield.name stylewidth: unset;> {{ option.label }} /label> /li> /ul> !-- checkbox group --> div ng-ifFormservice.isCheckboxGroup(field)> ul classcheckbox-group ng-initformValuesfield.name > li ng-repeatoption in field.options classitem-checkbox> input id{{offer.id}}_{{field.name}}_{{$index}} name{{offer.id}}_{{field.name}}_{{$index}} ng-blurfield.touched true typecheckbox ng-checkedformValuesfield.name.indexOf(option.label) > -1 ng-requiredfield.requiredkey && isCheckboxGroupEmpty(field) ng-clicktoggleCheckboxOption(field.name, option.label); checkFormIsEmpty();> label for{{offer.id}}_{{field.name}}_{{$index}}> span ng-bind-htmloption.label>/span> /label> /li> /ul> /div> !-- camera --> ng-include onloadcameraFieldInit(field) ng-ifFormservice.isCamera(field) srcgetTemplateUrl(cameraField.html)>/ng-include> !-- Generic error text --> div classerrorText ng-showformfield.name.$invalid && (field.touched || form.attempted)> span classmaterial-icons-round errorText>error/span> span classerrorText ng-bindFormservice.getErrorText(field)>/span> /div> /li> /ul> /div> !-- Offer Rules --> div classrows flex-center offer-rules-container> !-- Privacy Policy --> a ng-ifoffer.content.privacy_policy.visible && offer.content.privacy_policy.text ng-show(clickableFormMedia && !formSubmissionSuccessful) || !clickableFormMedia classrules-cta row ng-href{{offer.content.privacy_policy.uri}} target_blank> {{offer.content.privacy_policy.text}} /a> !-- Link out to rules --> a ng-if(offer.content.terms.cta.visible && offer.content.terms.uri && !offer.content.terms.official.visible) || (offer.content.terms.cta.visible null && offer.content.terms.uri) ng-show(clickableFormMedia && !formSubmissionSuccessful) || !clickableFormMedia classrules-cta row ng-href{{offer.content.terms.uri}} target_blank> {{offer.content.terms.cta.text ? offer.content.terms.cta.text : offer.content.terms.uri}} /a> !-- Expandable rules --> div classexpandable-rules ng-show(clickableFormMedia && !formSubmissionSuccessful) || !clickableFormMedia> !-- Abbreviated rules --> p classabbreviated-rules ng-ifoffer.content.terms.abbreviated.visible || (offer.content.terms.abbreviated.visible null && offer.content.terms.abbreviated.text)> {{offer.content.terms.abbreviated.text}} /p> a classrules-cta row ng-if(offer.content.terms.cta.visible && offer.content.terms.official.visible) || (offer.content.terms.official.visible null && offer.content.terms.cta.text && !offer.content.terms.uri) ng-clickshowTermsAndConditions()> {{offer.content.terms.cta.text}} /a> !-- Official rules --> div classofficial-rules-text ng-class{show-rules: showOfficialRules}> {{offer.content.terms.official.text}} /div> /div> !-- Buttons --> div classcolumns offer-modal-buttons flex-center> !-- Submit button --> button ng-ifisVisible(offer.content.cta.visible) && !Formservice.getFeedbackSubmitFailed(feedbackSubmitFailed) typebutton ng-class{invalid : form.$invalid || (offer.type ugccamera && mediaIsRequired && mediaArrayForUpload 0), sending : Formservice.getfeedbackAttemptInProgress(feedbackSubmitAttemptInProgress) || submittingMediaForms} ng-disabledform.$invalid || (offer.type ugccamera && mediaIsRequired && mediaArrayForUpload 0) || Formservice.checkFormIsEmpty(formValues) classcolumn ng-show(clickableFormMedia && !formSubmissionSuccessful) || !clickableFormMedia ng-clicksubmit(form); scrollToTopOfElement(.form-offer);> {{Formservice.getfeedbackAttemptInProgress(feedbackSubmitAttemptInProgress) || submittingMediaForms ? : getCascadingFormContent(offer.content.cta)}} div ng-ifFormservice.getfeedbackAttemptInProgress(feedbackSubmitAttemptInProgress) || submittingMediaForms classbubble-loading-container> div>/div> div>/div> div>/div> div>/div> /div> /button> !-- Close button--> button ng-ifisVisible(offer.content.cancel.visible) && (offer.position popup || !offer.position) && isForm() classcolumn typebutton ng-click$dismiss(dismissed)> {{getCascadingFormContent(offer.content.cancel)}} /button> h5 ng-ifFormservice.getFeedbackSubmitFailed(feedbackSubmitFailed) classerrorText locfeedback_sending_error>/h5> span> /span> h5 ng-ifFormservice.getFeedbackSubmitFailed(feedbackSubmitFailed) && offer.type ugccamera classerrorText locplease_try_again>/h5> button ng-ifisVisible(offer.content.cta.visible) && Formservice.getFeedbackSubmitFailed(feedbackSubmitFailed) && offer.type ! ugccamera classrow ng-clicksubmit(form); form.attempted false; scrollToTopOfElement(.form-offer); typebutton locfeedback_try_again>/button> /div> /div> !-- Loading view --> div ng-showFormservice.getfeedbackAttemptInProgress(feedbackSubmitAttemptInProgress) || submittingMediaForms classloading-screen feedback-loading rows flex-center> div classloading-content-container> div ng-ifsubmittingMediaForms classprogress-container> h3 ng-if!mediaIsUploading locprepping_media_upload>/h3> h3 ng-ifmediaIsUploading locuploading_media>/h3> h3 ng-ifmediaIsUploading && mediaArrayForUpload.length > 0> span>{{indexForMediaUploads + 1}} of {{mediaArrayForUpload.length}}/span> /h3> progress ng-ifmediaIsUploading value{{Formservice.getFeedbackMediaUploadProgress()}} max100 idprogressbar>/progress> /div> div ng-ifFormservice.getfeedbackAttemptInProgress(feedbackSubmitAttemptInProgress) && !submittingMediaForms classfeedback-loading-message-container> h3 classfeedback_loading_1 locfeedback_sending>/h3> h3 classfeedback_loading_2 locfeedback_still_sending>/h3> h3 classfeedback_loading_3 locfeedback_little_longer>/h3> h3 classfeedback_loading_4 locfeedback_thanks_for_waiting>/h3> /div> div classbubble-loading-container> div>/div> div>/div> div>/div> div>/div> /div> /div> /div>/form>/script>script typetext/ng-template idviews/modals/offers/webpage.html>iframe id{{offer.id}} ng-ifgetCascadingUri(offer.content.uri) ng-src{{getCascadingUri(offer.content.uri)}} frameborder0>/iframe>/script>script typetext/ng-template idviews/modals/pointsEarned.html>div classmodal-body points-earned-modal-body bg-confetti-animated> h1 locprediction_congratulations>/h1> !-- Animated coin --> div classcoin-container> div classcoin> div classshine>/div> div classtails>/div> div classheads>/div> /div> p classpoints-container> + {{points}} span locprediction_points_name_abbreviation>/span>/p> /div> div classpoints-awarded-summary> span locprediction_have_earned>/span> {{points}} span locprediction_points_name>/span>! /br> span locprediction_have_earned_keep_it_up>/span> /div> button classflex-center ng-clickcancel() locprediction_collect_points>/button>/div>/script>script typetext/ng-template idviews/modals/restrictedip.html>div classmodal-body restricted-ip rows flex-center> h4 classmodal-title locrestricted_ip_sorry>/h4> h4 classmodal-title locrestricted_ip_limit_reached>/h4> button ng-clickcancel() locok>/button>/div>/script>script typetext/ng-template idviews/modals/share-your-score-modal.html>div classmodal-body> div classanimate-fade-in> h1 locshare-title>/h1> div classshare-vote-button-container> a ng-href{{facebookURL}} target_blank classsocial-button idfacebook-connect ng-clickcancel()> img srcimages/social-icons/facebook-white.svg?sanitizetrue classsocial-button-icon> span classsocial-button-text locshare-button-text-facebook>/span> /a> a ng-href{{tweetURL}} target_blank classsocial-button idtwitter-connect ng-clickcancel()> img srcimages/social-icons/twitter-white.png classsocial-button-icon> span classsocial-button-text locshare-button-text-twitter>/span> /a> /div> /div> !-- Close button--> div classclose-button material-icons ng-clickcancel()> close /div>/div>/script>script typetext/ng-template idviews/modals/termsAndConditions.html>div classflex-center rows terms-conditions-modal> h2 locterms_and_conditions_title>/h2> p>{{termsAndConditions.text}}/p> a ng-iftermsAndConditions.uri href{{termsAndConditions.uri}} target_blank locfull_terms_and_conditions>/a> button classflex-center ng-clickcancel() locclose>/button>/div>/script>script typetext/ng-template idviews/modals/thirdPartyLogin.html>div classmodal-body login-modal-body third-party-login> div classlogin-header-image> img classheader-image altClose login ng-if(current.showMedia.medium && !current.showMedia.medium.includes(blank.png)) || (current.showMedia.small && !current.showMedia.small.includes(blank.png)) ng-src{{current.showMedia.medium || current.showMedia.small}}> /div> p>To continue, please sign in to your {{enabledProviders0.client ? enabledProviders0.client.label : enabledProviders0.label}} account./p> !-- Close button--> div classclose-button ng-clickcancel()>/div>/div>/script>script typetext/ng-template idviews/modals/toomanyrequests.html>div classmodal-body rows flex-center> h4 classmodal-title loctoo-many-requests>/h4> h4 classmodal-title loctoo-many-requests-subtext>/h4> button ng-clickcancel() locok>/button>/div>/script>script typetext/ng-template idviews/modals/voteNotAccepted.html>div classmodal-body rows vote-not-accepted-modal> h2> {{headingText}} /h2> p> span locwebpoll_vote_not_accepted_current_answer>/span> br> b>{{lastAcceptedVote.text}}/b> /p> button ng-clickcancel() locok>/button>/div>/script>script typetext/ng-template idviews/pages/defaults/Block/template.html>div classblock-content ng-class{fancy-text : currentQuestion.content.body.type rich_text} ng-bind-htmlhtmlContent>/div>div classtheme-font-color-test-container> !-- Display all common types of elements to test against --> h1>/h1> h2>/h2> h3>/h3> p>/p> a href#>Link/a> ul> li>/li> /ul>/div>/script>script typetext/ng-template idviews/pages/page.html>!-- MegaChatter - TOP -->div classbring-to-front ng-ifmegachatter.presentation.position top && megachatter.enabled> megachatter-presentations>/megachatter-presentations>/div>div classpage-container rows ng-class{onescreen-container: isOneScreen}> !-- Repeater for each scene within a multi-scene web poll (aka a MegaPage) --> div ng-repeatscene in webpollQuestionsArray track by scene.id ng-ifconfig.isVerticalStackModeWebpoll> div classscene-wrapper> ng-include srcgetTemplateUrl()>/ng-include> div classmultiselect-vote-button-container ng-if(isWebpoll || currentQuestion.isWebPoll) && multiselect.enabled && scene.product ! Block> multiple-vote-button passed-scene-valuescene>/multiple-vote-button> /div> ng-include ng-ifscene.product ! Block srcviews/directives/inlineOffersPages.html>/ng-include> /div> /div> !-- Archive scenes --> div classarchive-scenes-container ng-ifshowSceneArchive() && config.isVerticalStackModeWebpoll> !-- Archive Title --> h1 classpage-scene-archive-title ng-ifshowSceneArchiveTitle()> span ng-if!currentWebPoll.scene_archive.title locwebpoll_scene_archive_title>/span> span ng-ifcurrentWebPoll.scene_archive.title>{{currentWebPoll.scene_archive.title}}/span> /h1> !-- Repeater for each scene within a multi-scene web poll (aka a MegaPage) --> div ng-repeatscene in archivedWebpollQuestionsArray track by scene.id> div classscene-wrapper> ng-include srcgetTemplateUrl()>/ng-include> div classmultiselect-vote-button-container ng-if(isWebpoll || currentQuestion.isWebPoll) && multiselect.enabled && scene.product ! Block> multiple-vote-button passed-scene-valuescene>/multiple-vote-button> /div> ng-include ng-ifscene.product ! Block srcviews/directives/inlineOffersPages.html>/ng-include> /div> /div> /div> !-- Repeater for carousel web poll --> div ng-if!config.isVerticalStackModeWebpoll> !-- Only display --> div scene-animation classscene-wrapper> ng-include srcgetTemplateUrl()>/ng-include> /div> !-- Multi-scene Web Poll navigation --> div classquiz-next-button-container ng-ifshowNextAndBackButtons()> !-- Previous Scene Button --> button ng-class{disabled: pageVoteInProgress} ng-ifdisplayBackButton() classquiz-back-button ng-click!pageVoteInProgress && previousWebPollScene()> span classmaterial-icons-round>arrow_back/span> span locwebpoll_previous_scene>/span> /button> !-- Next Scene Button --> button ng-class{disabled: pageVoteInProgress} classquiz-next-button ng-ifdisplayNextButton() && !showFinalResultsNextButton && !showStartOverButton ng-click!pageVoteInProgress && advanceToNextWebPollScene()> !-- Display different text when the current scene is the first one --> span loc{{nextButtonLocale}}>/span> span classmaterial-icons-round>arrow_forward/span> /button> !-- Final Results View Button --> button ng-class{disabled: pageVoteInProgress} classquiz-final-results-next-button ng-ifshowFinalResultsNextButton ng-click!pageVoteInProgress && advanceToNextWebPollScene()> span locwebpoll_advance_to_final_results>/span> span classmaterial-icons-round>arrow_forward/span> /button> !-- Start Over Button --> button classquiz-start-over-button ng-ifcurrentWebPoll.scenes.length > 1 && showStartOverButton ng-clickstartWebPollOver()> span locwebpoll_start_over>/span> span classmaterial-icons-round>replay/span> /button> /div> div classmultiselect-vote-button-container ng-if(isWebpoll || currentQuestion.isWebPoll) && multiselect.enabled && currentQuestion.product ! Block> multiple-vote-button passed-scene-valuecurrentQuestion>/multiple-vote-button> /div> ng-include ng-ifscene.product ! Block srcviews/directives/inlineOffers.html>/ng-include> /div> ng-include ng-ifcurrent.inlinePageOffers.length > 0 srcviews/directives/inlinePageOffers.html>/ng-include>/div>!-- MegaChatter - BOTTOM -->div classbring-to-front ng-ifmegachatter.presentation.position bottom && megachatter.enabled> megachatter-presentations>/megachatter-presentations>/div>/script>script typetext/ng-template idviews/pages/quiz_final_results.html>div classquiz-final-results-container bg-confetti-animated> h2 classquiz-name ng-ifcurrentWebPoll.name>{{currentWebPoll.name}}/h2> h2 classquiz-name ng-if!currentWebPoll.name locleaderboard_title>/h2> div classresult-progress-container> svg width200 height200 viewBox-25 -25 250 250 version1.1 xmlnshttp://www.w3.org/2000/svg styletransform:rotate(-90deg)> !-- Background circle --> circle r90 cx100 cy100 filltransparent stroke#ffffff stroke-width16px stroke-dasharray565.48px stroke-dashoffset0>/circle> !-- Foreground circle --> circle idquizProgressRing r90 cx100 cy100 stroke#2ecc71 stroke-width16px stroke-linecapround stroke-dashoffset565.48px filltransparent stroke-dasharray565.48px>/circle> /svg> div classquiz-results> div classquiz-totals> span classcorrect-quiz-answers>{{correctAnswers}}/span>/{{totalQuestions}}/div> div classquiz-point-container> span classquiz-points>{{currentRun.totalPoints}}/span> span loc{{ currentRun.totalPoints 1 ? points_suffix_singular : points_suffix }}>/span> /div> /div> /div> button ng-ifcurrentWebPoll && currentWebPoll.replay && currentWebPoll.replay.enabled ng-click!resettingQuiz && playQuizAgain() ng-class{disabled: resettingQuiz}> span ng-if!resettingQuiz locwebpoll_play_again>/span> span ng-ifresettingQuiz locwebpoll_play_again_resetting>/span> /button>/div>/script>script typetext/ng-template idviews/pages/sceneTemplate.html>div classanimate-scene-in product-container bulletin passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.BULLETIN)>/div>div classanimate-scene-in product-container configurable-poll passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.CONFIGURABLEPOLL)>/div>div classanimate-scene-in product-container face-off passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.FACE_OFF)>/div>div classanimate-scene-in product-container five-stars passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.FIVE_STARS)>/div>div classanimate-scene-in product-container guess-gauge passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.GUESS_GAUGE)>/div>div classanimate-scene-in product-container hot-or-not passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.HOT_OR_NOT)>/div>div classanimate-scene-in product-container mood-meter passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.MOOD_METER)>/div>div classanimate-scene-in product-container pic-pick passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.PICPICK)>/div>div classanimate-scene-in product-container poster passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.POSTER)>/div>div classanimate-scene-in product-container readers-choice passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.READERS_CHOICE)>/div>div classanimate-scene-in product-container user-generated-content passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.UGC)>/div>div classanimate-scene-in product-container ugc-album passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.UGCALBUM)>/div>div classanimate-scene-in product-container viewers-choice passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.VIEWERS_CHOICE)>/div>div classanimate-scene-in product-container block passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.BLOCK)>/div>div classis-album is-page-album ng-controllerAlbumCtrl ng-initpassedScene scene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.ALBUM)> ng-include srcviews/album/album.html>/ng-include>/div>/script>!-- End Templates -->!--if lt IE 7> p classbrowsehappy>You are using an strong>outdated/strong> browser. Please a hrefhttp://browsehappy.com/>upgrade your browser/a> to improve your experience./p> !endiflogo-image-->div classmain-content-container ng-hideconfig.isInAppBrowser ng-class{'megachatter-onescreen' : host_app ! 'multiview' && megachatter.enabled, 'megachatter-hidden' : host_app ! 'multiview' && (megachatter.collapsed || !megachatter.visible)}>!-- DO NOT TOUCH! LOADS GOOGLE MATERIAL ICON/SYMBOL FONTS TO PREVENT ICON/SYMBOL POP IN --> span classmaterial-icons styleopacity: 0; height: 0; width: 0; font-size: 0; position: absolute; left: -10000px; z-index: -10000>favorite/span> span classmaterial-icons-round styleopacity: 0; height: 0; width: 0; font-size: 0; position: absolute; left: -10000px; z-index: -10000>favorite/span>!-- Loading view -->div ng-show!ccoLoaded || !config.themesLoaded classloading-screen rows flex-center ng-class{'loading-album-modal': config.isAlbumModal}>div classloading-failure-container>h3 ng-showccoFailedToLoad locunabletoloadcco>/h3>h3 ng-shownoLocalStorage loclocalstoragenotsupported>/h3>/div>div classloading-image-container>div ng-show!ccoFailedToLoad && nexusPayload classlogo-image animate-fade-in animated ng-style{'background-image':'url('+ (welcomeScreenMedia ? welcomeScreenMedia : 'images/megaphone-logo-black.png') +')'}>/div>div ng-show!ccoFailedToLoad && !nexusPayload classlogo-image-place-holder>/div>/div>!-- Loading Animation -->div ng-show!ccoFailedToLoad classbubble-loading-container animate-fade>div>/div>div>/div>div>/div>div>/div>/div>div ng-ifgameType 2 && !noLocalStorage classwebpoll_loading_container>div ng-if!webpollDisabled && !activeWebpollNotFound && !webpollIDNotFound>h3 classwebpoll_loading_1 locwebpoll_loading_1>/h3>h3 classwebpoll_loading_2 locwebpoll_loading_2>/h3>h3 classwebpoll_loading_3 locwebpoll_loading_3>/h3>h3 classwebpoll_loading_4 locwebpoll_loading_4>/h3>/div>div ng-ifwebpollDisabled>h3 locwebpoll_unable_to_load>/h3>/div>div ng-ifactiveWebpollNotFound>h3 locactive_webpoll_not_found>/h3>/div>div ng-ifwebpollIDNotFound>h3 locwebpoll_not_found>/h3>/div>/div>/div>!-- If content load is being distributed, display loading UI -->div ng-ifloadDistributionDuration > 0 classload-distribution-in-progress-container animate-fade>!-- Display loading bubbles if the wait time is 10 seconds or less. -->div classbubble-loading-container animate-fade fadeIn ng-ifloadDistributionDuration < 10>div>/div>div>/div>div>/div>div>/div>/div>!-- Display loading bar if the wait time is more than 10 seconds -->div classloading-progress-bar animate-fade fadeIn ng-ifloadDistributionDuration > 10>div classloading-progress-bar-inner ng-style{'animation-duration': loadDistributionDuration + 's'}>/div>/div>/div>!-- Application view -->gdpr-banner ng-ifccoLoaded && config.themesLoaded>/gdpr-banner>facebook-login ng-ifccoLoaded && facebookSDKLoaded && config.themesLoaded && config.loginType ! 'passthrough' && ((!config.isPredictionCampaign && config.enableFacebookSignIn) || (config.isPredictionCampaign && userAccessToken))>/facebook-login>section classapp-container ng-showccoLoaded>article classapp-height-element>header ng-ifconfig.themesLoaded && !config.isAlbum && !isEmbeddedInController header>/header>button ng-ifisWinner && !currentRun.finalResultsReceived && gameType _constants.GameType.PLAYLIST && deployment.controller.feedback_form_visibility ! hideAll classwinner-feedback-button ng-clickfs.setState(_constants.FeedbackState.OPEN)>div classwinner-icon>/div>span locwinner_feedback_button>/span>/button>!-- ng-class determines presentation of Megachatter-->div idviewContainer classview-container ng-class{'show-megachatter' : host_app ! 'multiview' && ((megachatter.enabled && gameType ! _constants.GameType.WEBPOLL) || (megachatter.webpoll_enabled && gameType _constants.GameType.WEBPOLL)), 'megachatter-top' : megachatter.presentation.position 'top', 'megachatter-bottom' : megachatter.presentation.position 'bottom', '{{megachatter.presentation.mode.medium}}' : host_app ! 'multiview' && deviceState.mediaQuerySize.isMedium && megachatter.enabled && megachatter.send_only_mode false, '{{megachatter.presentation.mode.small}}' : host_app ! 'multiview' && deviceState.mediaQuerySize.isSmall && megachatter.enabled && megachatter.send_only_mode false, 'tiny-width' :deviceState.mediaQuerySize.isTiny, 'small-width' :deviceState.mediaQuerySize.isSmall, 'medium-width' :deviceState.mediaQuerySize.isMedium, 'animate-view-in' : !config.isAlbum}>/div>footer ng-ifconfig.themesLoaded && !config.isAlbum && !isEmbeddedInController ng-class{'no-scene-content': config.isWebpoll && (!currentQuestion || (currentWebPoll.scenes && currentWebPoll.scenes.length 0))} footer>/footer>/article>/section>/div>!-- Display message to users that they cannot continue within an in application browser (Facebook/Instagram)-->div ng-ifconfig.isInAppBrowser && config.themesLoaded classin-app-browser-container animated fadeIn>div classin-app-browser-container-content>span locin_app_message_before_icon>/span> span classmaterial-symbols-outlined>more_horiz /span>span locin_app_message_after_icon>/span>/div>/div>!-- Sounds -->!-- TODO: In future, a project setting to enable sounds should be added. When that setting is added, then in controller, if sound is enabled for the current project, lazy load sound files. Until the enable sounds project setting exists, do not load sounds at all. The code below is left intact for historical reference, but is expected to be replaced entirely in future by a new sound loader. -->!-- div sound nameaudio_correct sourcesound/correct>/div>-->!-- div sound nameaudio_incorrect sourcesound/incorrect>/div>-->!-- div sound nameaudio_winner sourcesound/winner>/div>-->!--if lt IE 9> script srcbower_components/es5-shim/es5-shim.js>/script> script srcbower_components/json3/lib/json3.min.js>/script> !endif-->script srcscripts/vendor.js>/script>script srcscripts/scripts.js>/script>
Port 443
HTTP/1.1 200 OKContent-Type: text/htmlContent-Length: 111547Connection: keep-aliveDate: Thu, 23 Oct 2025 19:18:00 GMTLast-Modified: Wed, 22 Oct 2025 14:23:17 GMTx-amz-version-id: LmSLYzn_RRWNjCzPzAbCkbJJ4JqVzi7ZServer: AmazonS3ETag: a79b7cd82521b36eab67e286048eaaa9X-Cache: Hit from cloudfrontVia: 1.1 e765e4220a4552156eaeff06c1304e0c.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P4X-Amz-Cf-Id: lSdHK9LVg55SdQOdTA-h32Iai0IrVwbGsF2wnqioDOPArcEAfz5O9w !doctype html>!--if lt IE 7>html classno-js lt-ie9 lt-ie8 lt-ie7> !endif-->!--if IE 7>html classno-js lt-ie9 lt-ie8> !endif-->!--if IE 8>html classno-js lt-ie9> !endif-->!--if gt IE 8>!-->html classno-js>!--!endif-->meta charsetutf-8>title>/title>meta namedescription content>meta nameviewport contentwidthdevice-width,user-scalableno,initial-scale1,minimum-scale1,maximum-scale1>!-- Place favicon.ico and apple-touch-icon.png in the root directory -->link relicon typeimage/x-icon hreffavicon.ico>link hrefthemes/base.css relstylesheet>script typetext/javascript srclib/controllerio/lib/Orbiter.js>/script>script typemodule srclib/controllerio/controllerio.js>/script>/head>!-- Application declaration and Global CSS classes -->body ng-appMegaController ng-classapplyDynamicBodyClasses() ng-controllerApplicationCtrl responsive>!-- Begin Templates -->script typetext/ng-template idviews/album/album-item/album-item.html>div classalbum-item ng-ifalbum ng-clickopenAlbum(album._id)> div classalbum-heading> p classalbum-title>{{album.name}}/p> p classalbum-description>{{album.description}}/p> /div> div classalbum-image-container> !-- Display custom cover image if one is provided, and a cover image is set --> div classalbum-collage-cover-container ng-ifalbumCoverToDisplay(album) custom> img ng-src{{album.presentation.cover.uri}} classcollage-image display-image> /div> !-- Display array of submissions, if display_cover is set to favorites show or does not exist --> div classalbum-collage-cover-container multi-image-container ng-ifalbumCoverToDisplay(album) ! custom> div classhero-image> div classcollage-image ng-repeatsubmission in album.albumCoverSubmissions track by submission._id ng-class{display-image: albumDisplayIndexArray$parent.$index $index, text-only: submission.text_only} ng-style{animation-delay: ($parent.$index * 4) + $index + s}> img ng-if!submission.text_only ng-src{{submission.thumbnails.medium ? submission.thumbnails.medium : submission.url}}> p ng-ifsubmission.text_only && submission.contributor.message> {{submission.contributor.message}} /p> /div> div classno-content ng-ifalbum.albumCoverSubmissions.length 1> span classmaterial-icons>image/span> /div> /div> div classalbum-sidebar-item> img ng-if!album.albumCoverSubmissions0.text_only ng-src{{album.albumCoverSubmissions0.thumbnails.medium ? album.albumCoverSubmissions0.thumbnails.medium : album.albumCoverSubmissions0.url}} class> p ng-ifalbum.albumCoverSubmissions0.text_only && album.albumCoverSubmissions0.contributor.message classalbum-sidebar-text> {{album.albumCoverSubmissions0.contributor.message}} /p> div classno-content ng-ifalbum.albumCoverSubmissions.length 1> span classmaterial-icons>image/span> /div> /div> div classalbum-sidebar-item> img ng-if!album.albumCoverSubmissions1.text_only ng-src{{album.albumCoverSubmissions1.thumbnails.medium ? album.albumCoverSubmissions1.thumbnails.medium : album.albumCoverSubmissions1.url}} class> p ng-ifalbum.albumCoverSubmissions1.text_only && album.albumCoverSubmissions1.contributor.message classalbum-sidebar-text> {{album.albumCoverSubmissions1.contributor.message}} /p> div classno-content ng-ifalbum.albumCoverSubmissions.length 2> span classmaterial-icons>image/span> /div> /div> div classalbum-sidebar-item> img ng-if!album.albumCoverSubmissions2.text_only ng-src{{album.albumCoverSubmissions2.thumbnails.medium ? album.albumCoverSubmissions2.thumbnails.medium : album.albumCoverSubmissions2.url}} class> p ng-ifalbum.albumCoverSubmissions2.text_only && album.albumCoverSubmissions2.contributor.message classalbum-sidebar-text> {{album.albumCoverSubmissions2.contributor.message}} /p> div classno-content ng-ifalbum.albumCoverSubmissions.length 3> span classmaterial-icons>image/span> /div> /div> div classnum-submissions-overlay ng-ifalbum.albumCoverSubmissions.length ! 0> {{album.num_submissions}}+ /div> /div> /div>/div>/script>script typetext/ng-template idviews/album/album.html>!-- List of albums -->div ng-if!selectedAlbumID && !selectedSubmissionID classalbum-list-container animate-fade-in animated> div ng-ifgatherOffer classadd-to-album-button ng-clickopenUGCOfferModal()> span classmaterial-icons-round>add_a_photo/span> span locugc_add_media>/span> /div> div classalbum-list> ng-include srcgetTemplateUrl(album-item/album-item.html) ng-repeatalbum in albums | orderBy:position track by album._id> /div>/div>!-- Album details view -->div ng-ifselectedAlbumID classsubmission-list-container animate-fade-in animated ng-class{list-presentation: !isTilePresentation()}> !-- Display a single submission scrolling view, this is displayed in a modal in the parent page --> ng-include ng-ifselectedSubmissionID srcgetTemplateUrl(scrolling-feed/scrolling-feed.html) onloadregisterLoadMoreScrollHandler()>/ng-include> !-- Display a scrolling grid of submissions --> ng-include ng-if!config.parentWindowURL || (config.parentWindowURL && !selectedSubmissionID) srcgetTemplateUrl(grid-feed/grid-feed.html) onloadregisterLoadMoreScrollHandler()>/ng-include>/div>/script>script typetext/ng-template idviews/album/grid-feed-item/grid-feed-item.html>div classgrid-feed-item ng-mouseentertogglePlayStateOnHover($event, enter) id{{submission._id}} ng-ifisTilePresentation() ng-mouseleavetogglePlayStateOnHover($event, leave)> div classsubmission-media ng-class{text-only:submission.text_only } ng-clickopenModalInParent(submission._id, $event)> !-- Display media for images --> object ng-ifsubmission.type image data{{submission.thumbnails.medium ? submission.thumbnails.medium : submission.url}} ng-style{object-position: mediaAlignment} typeimage/jpeg> img srcimages/image_not_supported.svg?sanitizetrue classmedia-failed-to-load/> /object> video ng-ifsubmission.type video ng-src{{submission.url + #t0.1}} loop media-errormedia-failed-to-load playsinline ng-style{object-position: mediaAlignment} muted> /video> audio ng-ifsubmission.type audio ng-on-playpauseAllOtherAudioMedia($event, submission.id) controls controlslistnodownload noplaybackrate ng-src{{submission.url}} id{{submission.id}}> /audio> div classvideo-audio-control ng-ifsubmission.type video> span ng-ifvideoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_off/span> span ng-if!videoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_up/span> /div> ng-container ng-ifsubmission.text_only> p classquote-text>{{submission.contributor.message | truncate:180}}/p> /ng-container> div classlocation-overlay ng-ifsubmission.contributor && submission.contributor.city> div classmaterial-icons-round>location_on/div> div>{{submission.contributor.city | truncate:60}}/div> /div> /div> div ng-ifsubmission.contributor classsubmission-details> div ng-ifsubmission.contributor.message && !submission.text_only classsubmission-message> {{submission.contributor.message | truncate:60}} /div> div ng-ifsubmission.contributor.name classsubmission-name> span classname ng-ifalbumSettings.truncate_last_names>{{truncateLastNames(submission.contributor.name)}}/span> span classname ng-if!albumSettings.truncate_last_names>{{submission.contributor.name | truncate:20}}/span> - span classtime-stamp from-now datesubmission.source_created_at ? submission.source_created_at : submission.created_at>/span> /div> /div>/div>!-- Comment style UGC items -->div classgrid-feed-item list-item ng-class{text-only: submission.text_only} ng-mouseentertogglePlayStateOnHover($event, enter) id{{submission._id}} ng-if!isTilePresentation() && !isContributorEmpty(submission.contributor) ng-mouseleavetogglePlayStateOnHover($event, leave) ng-clickopenModalInParent(submission._id, $event)> div classlist-item-avatar> !-- Show default person icon --> span classmaterial-icons-round avatar-icon>person/span> /div> div classlist-item-content> div classlist-item-header> span classusername ng-ifalbumSettings.truncate_last_names>{{truncateLastNames(submission.contributor.name)}}/span> span classusername ng-if!albumSettings.truncate_last_names>{{submission.contributor.name | truncate:20}}/span> span classtime-stamp from-now datesubmission.source_created_at ? submission.source_created_at : submission.created_at>/span> !-- Add location if available --> span classlocation ng-ifsubmission.contributor.city> span classmaterial-icons-round location-icon>location_on/span> {{ submission.contributor.city | truncate:30 }} /span> /div> div classlist-item-message ng-ifsubmission.contributor.message> {{ submission.contributor.message }} /div> !-- Media section for list items - optional, can be added if needed --> div classsubmission-media list-media ng-if!submission.text_only && (submission.type image || submission.type video || submission.type audio) > object ng-ifsubmission.type image data{{submission.thumbnails.medium ? submission.thumbnails.medium : submission.url}} ng-style{object-position: mediaAlignment} typeimage/jpeg> img srcimages/image_not_supported.svg?sanitizetrue classmedia-failed-to-load/> /object> video ng-ifsubmission.type video ng-src{{submission.url + #t0.1}} loop ng-style{object-position: mediaAlignment} media-errormedia-failed-to-load playsinline muted> /video> audio ng-ifsubmission.type audio ng-on-playpauseAllOtherAudioMedia($event, submission.id) controls controlslistnodownload noplaybackrate ng-src{{submission.url}} id{{submission.id}}-audio-list> /audio> /div> /div>/div>/script>script typetext/ng-template idviews/album/grid-feed/grid-feed.html>div ng-ifselectedAlbum._id> div classgrid-feed-container {{gridSizeClass()}} ng-ifselectedAlbum.public style{{gridBorderStyles()}}> div classalbum-title-bar> div classalbum-back-button-container> span ng-ifshowBackButton classmaterial-icons-round ng-clickbackToAlbumList()>arrow_back/span> p ng-if!hideAlbumTitle()>{{selectedAlbum.name}}/p> /div> div ng-ifgatherOffer classadd-to-album-button ng-clickopenUGCOfferModal()> span classmaterial-icons-round>{{ isGathererCommentUGC ? add_comment : add_a_photo}}/span> span locugc_add_media>/span> /div> /div> !-- Sponsor media with link if provided --> div classalbum-sponsor-image ng-ifhasSponsor> a ng-ifsponsorLink href{{sponsorLink}} target_blank> img src{{sponsorMedia.medium_uri}}> /a> img ng-if!sponsorLink src{{sponsorMedia.medium_uri}}> /div> div classgrid-feed-scroll-container> ng-include ng-repeatsubmission in selectedAlbum.submissions track by submission._id srcgetTemplateUrl(grid-feed-item/grid-feed-item.html)> /ng-include> /div> div classload-more-submissions-container ng-ifdisplayLoadMoreButton()> button classload-more-button animate-fade-in animated ng-if!isLoadingMoreSubmissions && !albumHasNoOlderSubmissions && selectedAlbum.num_submissions > 15 ng-clickloadMoreSubmissions(false)> Load more/button> div classbubble-loading-container animate-fade-in animated ng-ifisLoadingMoreSubmissions> div>/div> div>/div> div>/div> div>/div> /div> /div> div ng-ifselectedAlbum && !selectedAlbum.submissions classloading-submission-container animate-fade-in-fwd> div classbubble-loading-container dark-loader> div>/div> div>/div> div>/div> div>/div> /div> /div> div classno-submissions-in-album ng-ifselectedAlbum.submissions.length 0> h2 ng-clickopenUGCOfferModal() locugc_album_is_empty>/h2> /div> /div> !-- Display when album is not public --> div classprivate-album-container ng-if!selectedAlbum.public> h2 localbum_is_not_public>/h2> /div>/div>div ng-if!selectedAlbum._id> div classanimate-fade-in-fwd flex-center> div classbubble-loading-container> div>/div> div>/div> div>/div> div>/div> /div> /div>/div>/script>script typetext/ng-template idviews/album/scrolling-feed-item/scrolling-feed-item.html>div classscrolling-feed-item {{submission.type}} id{{submission._id}}> !-- Only load the media if the submission is within 2 indexes of the current submission --> div classsubmission-media ng-clicktoggleVideoPlayState()> div ng-ifsubmission.type image> !-- Display foreground media for images --> object data{{submission.thumbnails.medium ? submission.thumbnails.medium : submission.url}} typeimage/jpeg classforeground-image> img srcimages/image_not_supported.svg?sanitizetrue classmedia-failed-to-load/> /object> !-- Display background media for images --> object data{{submission.thumbnails.small ? submission.thumbnails.small : (submission.thumbnails.medium ? submission.thumbnails.medium : submission.url)}} typeimage/jpeg classbackground-image> /object> /div> div ng-ifsubmission.type video> !-- Background Image --> img classbackground-image ng-src{{submission.thumbnails.small ? submission.thumbnails.small : (submission.thumbnails.medium ? submission.thumbnails.medium : submission.url)}}/> !-- Video --> video classforeground-video stylepointer-events: none; playsinline loop> source ng-src{{submission.url + #t0.1}} typevideo/mp4> !-- Error image --> img srcimages/image_not_supported.svg?sanitizetrue classmedia-failed-to-load/> /video> div ng-ifgetVideoElementFromSubmissionId(selectedSubmissionID).paused && getVideoElementFromSubmissionId(selectedSubmissionID).readyState > 2> span classmaterial-icons-round video-play-icon fadeIn>play_arrow/span> /div> /div> audio controls controlslistnodownload noplaybackrate ng-ifsubmission.type audio ng-src{{submission.url}}> /audio> div ng-ifsubmission.text_only> div classsubmission-message> {{submission.contributor.message}} /div> /div> /div> div ng-ifsubmission.contributor classsubmission-details> span classsubmission-header> span classsubmission-name ng-ifalbumSettings.truncate_last_names>{{truncateLastNames(submission.contributor.name)}}/span> span classsubmission-name ng-if!albumSettings.truncate_last_names>{{submission.contributor.name}}/span> !-- Add location if available --> span classsubmission-location ng-ifsubmission.contributor.city> span classmaterial-icons-round location-icon>location_on/span> {{ submission.contributor.city | truncate:30 }} /span> /span> div ng-ifsubmission.contributor.message && !submission.text_only classsubmission-message> {{submission.contributor.message | truncate:400}} /div> /div> div classsubmission-action-bar> span ng-ifvideoIsMuted && submission.type video classmaterial-icons-round side-bar-icon-button ng-clicktoggleMute($event)>volume_off/span> span ng-if!videoIsMuted && submission.type video classmaterial-icons-round side-bar-icon-button ng-clicktoggleMute($event)>volume_up/span> span classmaterial-icons-round side-bar-icon-button reply-icon ng-clicktoggleShowShareBottomSheet()>reply/span> span ng-ifgatherOffer classmaterial-icons-round side-bar-icon-button small-icon ng-clickopenUGCOfferModal()>{{ isGathererCommentUGC ? add_comment : add_a_photo}}/span> /div> div classscroll-item-navigation> div ng-if$index > 0 classmaterial-icons-round previous-navigation side-bar-icon-button ng-clickpreviousSubmission()> expand_less /div> div ng-if$index ! selectedAlbum.submissions.length - 1 classmaterial-icons-round next-navigation side-bar-icon-button ng-clicknextSubmission()>expand_more /div> /div>/div>/script>script typetext/ng-template idviews/album/scrolling-feed/scrolling-feed.html>div classscrolling-feed-container> div classalbum-lightbox-close-button ng-if!config.parentWindowURL ng-clickunloadAllVideos();setSelectedSubmissionID(null)> svg width20 height20 viewBox0 0 14 14 fillnone xmlnshttp://www.w3.org/2000/svg> path dM13 1L1 13M1 1L13 13 stroke#fff stroke-width2 stroke-linecapround stroke-linejoinround>/path> /svg> /div> !-- Sponsor media with link if provided --> div classalbum-sponsor-image ng-ifhasSponsor> a ng-ifsponsorLink href{{sponsorLink}} target_blank> img src{{sponsorMedia.medium_uri}}> /a> img ng-if!sponsorLink src{{sponsorMedia.medium_uri}}> /div> div classscrolling-feed ng-class{hidden: !scrollFeedLoaded}> ng-include ng-repeatsubmission in selectedAlbum.submissions track by submission._id srcgetTemplateUrl(scrolling-feed-item/scrolling-feed-item.html)> /div> ng-include srcgetTemplateUrl(share-bottom-sheet/share-bottom-sheet.html)>/ng-include> div ng-if!scrollFeedLoaded classloading-submission-container animate-fade-in-fwd> div classbubble-loading-container> div>/div> div>/div> div>/div> div>/div> /div> /div>/div>/script>script typetext/ng-template idviews/album/share-bottom-sheet/share-bottom-sheet.html>div classshare-bottom-sheet-container ng-ifshowShareBottomSheet ng-clickopenLightboxModal(submission._id)> div classshare-bottom-sheet-content> div classshare-bottom-sheet-close-button> span classmaterial-icons-round ng-clicktoggleShowShareBottomSheet()>close/span> /div> div classshare-to-options> !-- Share to WhatsApp --> div classshare-option ng-clickopenShareLink(clipboard)> div classshare-icon copy-link> !-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> span classmaterial-icons-round>link/span> /div> div classshare-name locugc_copy_link>/div> /div> !-- Share to WhatsApp --> div classshare-option ng-clickopenShareLink(whatsapp)> div classshare-icon whatsapp> !-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> svg fill#ffffff height28px width28px version1.1 idLayer_1 xmlnshttp://www.w3.org/2000/svg viewBox0 0 308 308 xml:spacepreserve>g idXMLID_468_> path idXMLID_469_ dM227.904,176.981c-0.6-0.288-23.054-11.345-27.044-12.781c-1.629-0.585-3.374-1.156-5.23-1.156 c-3.032,0-5.579,1.511-7.563,4.479c-2.243,3.334-9.033,11.271-11.131,13.642c-0.274,0.313-0.648,0.687-0.872,0.687 c-0.201,0-3.676-1.431-4.728-1.888c-24.087-10.463-42.37-35.624-44.877-39.867c-0.358-0.61-0.373-0.887-0.376-0.887 c0.088-0.323,0.898-1.135,1.316-1.554c1.223-1.21,2.548-2.805,3.83-4.348c0.607-0.731,1.215-1.463,1.812-2.153 c1.86-2.164,2.688-3.844,3.648-5.79l0.503-1.011c2.344-4.657,0.342-8.587-0.305-9.856c-0.531-1.062-10.012-23.944-11.02-26.348 c-2.424-5.801-5.627-8.502-10.078-8.502c-0.413,0,0,0-1.732,0.073c-2.109,0.089-13.594,1.601-18.672,4.802 c-5.385,3.395-14.495,14.217-14.495,33.249c0,17.129,10.87,33.302,15.537,39.453c0.116,0.155,0.329,0.47,0.638,0.922 c17.873,26.102,40.154,45.446,62.741,54.469c21.745,8.686,32.042,9.69,37.896,9.69c0.001,0,0.001,0,0.001,0 c2.46,0,4.429-0.193,6.166-0.364l1.102-0.105c7.512-0.666,24.02-9.22,27.775-19.655c2.958-8.219,3.738-17.199,1.77-20.458 C233.168,179.508,230.845,178.393,227.904,176.981z/> path idXMLID_470_ dM156.734,0C73.318,0,5.454,67.354,5.454,150.143c0,26.777,7.166,52.988,20.741,75.928L0.212,302.716 c-0.484,1.429-0.124,3.009,0.933,4.085C1.908,307.58,2.943,308,4,308c0.405,0,0.813-0.061,1.211-0.188l79.92-25.396 c21.87,11.685,46.588,17.853,71.604,17.853C240.143,300.27,308,232.923,308,150.143C308,67.354,240.143,0,156.734,0z M156.734,268.994c-23.539,0-46.338-6.797-65.936-19.657c-0.659-0.433-1.424-0.655-2.194-0.655c-0.407,0-0.815,0.062-1.212,0.188 l-40.035,12.726l12.924-38.129c0.418-1.234,0.209-2.595-0.561-3.647c-14.924-20.392-22.813-44.485-22.813-69.677 c0-65.543,53.754-118.867,119.826-118.867c66.064,0,119.812,53.324,119.812,118.867 C276.546,215.678,222.799,268.994,156.734,268.994z/>/g>/svg> /div> div classshare-name>WhatsApp/div> /div> !-- Share to Facebook --> div classshare-option ng-clickopenShareLink(facebook)> div classshare-icon facebook> svg xmlnshttp://www.w3.org/2000/svg width50 height50 viewBox0 0 24 24> path fill#0075FA dM12 0c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm3 8h-1.35c-.538 0-.65.221-.65.778v1.222h2l-.209 2h-1.791v7h-3v-7h-2v-2h2v-2.308c0-1.769.931-2.692 3.029-2.692h1.971v3z/> /svg> /div> div classshare-name>Facebook/div> /div> !-- Share to Twitter --> div classshare-option ng-clickopenShareLink(twitter)> div classshare-icon twitter> svg width1200 height1227 viewBox0 0 1200 1227 fillnone xmlnshttp://www.w3.org/2000/svg> path dM714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z fillwhite/> /svg> /div> div classshare-name>Twitter/div> /div> /div> /div>/div>/script>script typetext/ng-template idviews/album/submission-item/submission-item.html>div classsubmission-item fadeInDown animated ng-clickopenLightboxModal(submission._id)> p classsubmission-name>{{submission.contributor.name}}/p> div classsubmission-image ng-style{background-image: url( + (submission.thumbnails.small ? submission.thumbnails.small : submission.url) + )}> /div>/div>/script>script typetext/ng-template idviews/components/forms/date-picker.html>div classdate-picker columns> select namedate-picker-month ng-modeldate.month ng-changeformValuesfield.name Formservice.dateChanged(date.day, date.month, date.year) iddate-picker-month classcolumn flex-auto ng-requiredfield.requiredkey> option value01>Jan/option> option value02>Feb/option> option value03>Mar/option> option value04>Apr/option> option value05>May/option> option value06>Jun/option> option value07>Jul/option> option value08>Aug/option> option value09>Sep/option> option value10>Oct/option> option value11>Nov/option> option value12>Dec/option> /select> select namedate-picker-day ng-modeldate.day ng-changeformValuesfield.name Formservice.dateChanged(date.day, date.month, date.year) iddate-picker-day classcolumn flex-auto ng-requiredfield.requiredkey> option value01>1/option> option value02>2/option> option value03>3/option> option value04>4/option> option value05>5/option> option value06>6/option> option value07>7/option> option value08>8/option> option value09>9/option> option value10>10/option> option value11>11/option> option value12>12/option> option value13>13/option> option value14>14/option> option value15>15/option> option value16>16/option> option value17>17/option> option value18>18/option> option value19>19/option> option value20>20/option> option value21>21/option> option value22>22/option> option value23>23/option> option value24>24/option> option value25>25/option> option value26>26/option> option value27>27/option> option value28>28/option> option value29>29/option> option value30>30/option> option value31>31/option> /select> select ng-modeldate.year ng-changeformValuesfield.name Formservice.dateChanged(date.day, date.month, date.year) namedate-picker-year iddate-picker-year classcolumn flex-auto ng-requiredfield.requiredkey> option value2030>2030/option> option value2029>2029/option> option value2028>2028/option> option value2027>2027/option> option value2026>2026/option> option value2025>2025/option> option value2024>2024/option> option value2023>2023/option> option value2022>2022/option> option value2021>2021/option> option value2020>2020/option> option value2019>2019/option> option value2018>2018/option> option value2017>2017/option> option value2016>2016/option> option value2015>2015/option> option value2014>2014/option> option value2013>2013/option> option value2012>2012/option> option value2011>2011/option> option value2010>2010/option> option value2009>2009/option> option value2008>2008/option> option value2007>2007/option> option value2006>2006/option> option value2005>2005/option> option value2004>2004/option> option value2003>2003/option> option value2002>2002/option> option value2001>2001/option> option value2000>2000/option> option value1999>1999/option> option value1998>1998/option> option value1997>1997/option> option value1996>1996/option> option value1995>1995/option> option value1994>1994/option> option value1993>1993/option> option value1992>1992/option> option value1991>1991/option> option value1990>1990/option> option value1989>1989/option> option value1988>1988/option> option value1987>1987/option> option value1986>1986/option> option value1985>1985/option> option value1984>1984/option> option value1983>1983/option> option value1982>1982/option> option value1981>1981/option> option value1980>1980/option> option value1979>1979/option> option value1978>1978/option> option value1977>1977/option> option value1976>1976/option> option value1975>1975/option> option value1974>1974/option> option value1973>1973/option> option value1972>1972/option> option value1971>1971/option> option value1970>1970/option> option value1969>1969/option> option value1968>1968/option> option value1967>1967/option> option value1966>1966/option> option value1965>1965/option> option value1964>1964/option> option value1963>1963/option> option value1962>1962/option> option value1961>1961/option> option value1960>1960/option> option value1959>1959/option> option value1958>1958/option> option value1957>1957/option> option value1956>1956/option> option value1955>1955/option> option value1954>1954/option> option value1953>1953/option> option value1952>1952/option> option value1951>1951/option> option value1950>1950/option> option value1949>1949/option> option value1948>1948/option> option value1947>1947/option> option value1946>1946/option> option value1945>1945/option> option value1944>1944/option> option value1943>1943/option> option value1942>1942/option> option value1941>1941/option> option value1940>1940/option> option value1939>1939/option> option value1938>1938/option> option value1937>1937/option> option value1936>1936/option> option value1935>1935/option> option value1934>1934/option> option value1933>1933/option> option value1932>1932/option> option value1931>1931/option> option value1930>1930/option> option value1929>1929/option> option value1928>1928/option> option value1927>1927/option> option value1926>1926/option> option value1925>1925/option> option value1924>1924/option> option value1923>1923/option> option value1922>1922/option> option value1921>1921/option> option value1920>1920/option> option value1919>1919/option> option value1918>1918/option> option value1917>1917/option> option value1916>1916/option> option value1915>1915/option> option value1914>1914/option> option value1913>1913/option> option value1912>1912/option> option value1911>1911/option> option value1910>1910/option> option value1909>1909/option> option value1908>1908/option> option value1907>1907/option> option value1906>1906/option> option value1905>1905/option> option value1904>1904/option> option value1903>1903/option> option value1901>1901/option> option value1900>1900/option> /select> input class id{{field.name}} name{{field.name}} typetext ng-modelformValuesfield.name ng-initformValuesfield.name >/div>/script>script typetext/ng-template idviews/directives/debug.html>div classdebug-content-container> div classdebug-heading ng-repeatconnectionDebugItem in connectionDebugItems | orderBy: $index track by connectionDebugItem.name ng-clickcopyValueToClipboard(connectionDebugItem.value)> h4>{{connectionDebugItem.name}}/h4> h4>{{connectionDebugItem.value}}/h4> /div> div classdebug-item ng-repeatdebugItem in debugItems | orderBy:name track by debugItem.name ng-class{is-embedded: isEmbedded}> div>{{debugItem.name}}/div> div classdebug-output>{{debugItem.output}}/div> div classcopy-button ng-if!isEmbedded ng-clickcopyValueToClipboard({debugItem.name: debugItem.output})> span classmaterial-icons-round>copy/span> span>Copy/span> /div> /div>/div>/script>script typetext/ng-template idviews/directives/inlineOffers.html>div> ul stylelist-style: none; padding: 0; margin: 0;> !-- Standard Display --> li ng-repeatoffer in current.inlineOffers track by $index > div classinline-offer offer-modal id{{offer.id}} ng-classoffer.type ng-ifoffer.position inline> div inline-offer offeroffer>/div> /div> /li> /ul>/div>/script>script typetext/ng-template idviews/directives/inlineOffersPages.html>!-- If the scene has its own offers, only display the offers that have ids in the scene.offers array -->div ng-ifscene.offers.length > 0> ul stylelist-style: none; padding: 0; margin: 0;> !-- Standard Display --> li ng-repeatoffer in current.inlineOffers track by $index > div classinline-offer offer-modal id{{offer.id}} ng-classoffer.type ng-ifoffer.position inline && isOfferInScene(offer.id, scene.offers)> div inline-offer offeroffer>/div> /div> /li> /ul>/div>!-- If the scene DOES NOT have its own offers, only display project offers -->div ng-ifscene.offers.length 0> ul stylelist-style: none; padding: 0; margin: 0;> !-- Standard Display --> li ng-repeatoffer in current.inlineProjectOffers track by $index > div classinline-offer offer-modal id{{offer.id}} ng-classoffer.type ng-ifoffer.position inline> div inline-offer offeroffer>/div> /div> /li> /ul>/div>/script>script typetext/ng-template idviews/directives/inlinePageOffers.html>div> ul stylelist-style: none; padding: 0; margin: 0;> !-- Standard Display --> li ng-repeatoffer in current.inlinePageOffers track by $index > div classinline-offer offer-modal id{{offer.id}} ng-classoffer.type ng-ifoffer.position inline> div inline-offer offeroffer>/div> /div> /li> /ul>/div>/script>script typetext/ng-template idviews/directives/leaderboard.html>div classrankings-container> div ng-repeatuser in overall_rankings | limitTo: limitToValue | orderBy: user.rank ng-class{your-rank-highlight: isCurrentUser(user), first-place: user.rank 1, second-place: user.rank 2, third-place: user.rank 3} classranking columns> div classflex-center> !-- First place image --> img ng-ifuser.rank 1 classfirst-place animated fadeInLeft ng-src{{current.themeAssetURL}}/images/leaderboard/first-rank.png> !-- Second place image --> img ng-ifuser.rank 2 classsecond-place animated fadeInLeft ng-src{{current.themeAssetURL}}/images/leaderboard/second-rank.png> !-- Third place image --> img ng-ifuser.rank 3 classthird-place animated fadeInLeft ng-src{{current.themeAssetURL}}/images/leaderboard/third-rank.png> div ng-ifuser.rank > 4 classrank-align>/div> !-- Rank number --> span>{{getRankText(user.rank)}}/span> /div> !-- Users score --> div classrank-score flex-center> {{user.score}} span points-suffix countuser.score>/span> /div> !-- Users name --> div classflex-center user-name> span>{{user.label}}/span>  span ng-showisCurrentUser(user) loclabel-is-user>/span> /div> /div> div ng-ifdisplayUserRank classranking columns your-rank-highlight rank-not-in-list> !-- Rank number --> div classflex-center> div classrank-align>/div> span>{{getRankText(currentUserRanking.rank)}}/span> /div> !-- Rank number --> div classrank-score flex-center> {{currentUserRanking.score}} span points-suffix countcurrentUserRanking.score>/span> /div> !-- Users name --> div classflex-center user-name> span>{{currentUserRanking.label}}/span>  span loclabel-is-user>/span> /div> /div>/div>!-- Show more or less rankings in rankings list -->button classshow-more-rankings ng-showoverall_rankings.length > 3 ng-clicktoggleRankingLimit()> span ng-if!displayAllRankings>+/span> span ng-ifdisplayAllRankings>-/span>/button>/script>script typetext/ng-template idviews/directives/predictions/rankings-list.html>!-- Rankings list - START -->div classexpanded-leaderboard-container prediction-rankings-container> div ng-repeatleaderboardItem in campaignLeaderboard track by leaderboardItem.user_id classleaderboard-summary-item> p classrank-number>{{leaderboardItem.rank}}/p> div classuser-image> div> {{getInitialsFromName(leaderboardItem.label)}} /div> div classuser-profile-picture ng-ifleaderboardItem.picture> dynamic-image valueleaderboardItem.picture>/dynamic-image> /div> img classrank-icon altFirst place ng-ifleaderboardItem.rank 1 ng-src{{current.themeAssetURL}}/images/leaderboard/first-rank.png> img classrank-icon altSecond place ng-ifleaderboardItem.rank 2 ng-src{{current.themeAssetURL}}/images/leaderboard/second-rank.png> img classrank-icon altThird place ng-ifleaderboardItem.rank 3 ng-src{{current.themeAssetURL}}/images/leaderboard/third-rank.png> /div> p classuser-name>{{leaderboardItem.label}}/p> p classuser-points>{{leaderboardItem.score | number : fractionSize}} span locprediction_points_name_abbreviation>/span>/p> /div>/div>!-- Rankings list - END -->/script>script typetext/ng-template idviews/directives/predictions/rankings.html>!-- Leaderboard - START -->div classrankings-wrapper fullscreen-panel> div ng-clickcloseRankings() classclose-panel-button> /div> div> ng-include srcviews/directives/predictions/top-rankings-summary.html>/ng-include> /div> !-- Expanded list of leaderboard users --> div classscroll-wrapper> ng-include srcviews/directives/predictions/rankings-list.html>/ng-include> /div> div classprediction-share-button-container> button ng-clickopenShareScoreModal()> span classmaterial-icons>reply/span> span locshare-your-score-button>/span> /button> /div>/div>!-- Leaderboard - END -->/script>script typetext/ng-template idviews/directives/predictions/top-rankings-summary.html>!-- Leaderboard top 3 rankings -->div classprediction-rankings-container> div ng-repeatleaderboardItem in campaignLeaderboardSummaryUsers track by leaderboardItem.user_id classleaderboard-summary-item ng-class{first-place: leaderboardItem.rank 1, second-place: leaderboardItem.rank 2, third-place: leaderboardItem.rank 3}> div classfirst-place-background bg-confetti-animated ng-ifleaderboardItem.rank 1>/div> div classuser-image> div ng-if!leaderboardItem.placeholder> {{getInitialsFromName(leaderboardItem.label)}} /div> div classcoming-soon-icon ng-ifleaderboardItem.placeholder> {{getOrdinal(leaderboardItem.rank)}} /div> div classuser-profile-picture ng-ifleaderboardItem.picture> dynamic-image valueleaderboardItem.picture>/dynamic-image> /div> img classrank-icon altFirst place ng-ifleaderboardItem.rank 1 ng-src{{current.themeAssetURL}}/images/leaderboard/first-rank.png> img classrank-icon altSecond place ng-ifleaderboardItem.rank 2 ng-src{{current.themeAssetURL}}/images/leaderboard/second-rank.png> img classrank-icon altThird place ng-ifleaderboardItem.rank 3 ng-src{{current.themeAssetURL}}/images/leaderboard/third-rank.png> /div> p classuser-name>{{leaderboardItem.label}}/p> p classuser-points ng-ifleaderboardItem.score> span tween-number tween-valueleaderboardItem.score tween-formatcomma>/span> span locprediction_points_name_abbreviation>/span> /p> /div>/div>/script>script typetext/ng-template idviews/directives/predictions/user-results.html>!-- Your Results - START -->div classyour-results-wrapper fullscreen-panel> div ng-clickcloseUserResults() classclose-panel-button> /div> h3 locprediction_your_results>/h3> div classuser-results-list-container> div ng-repeat(dateLabel, value) in sortedCampaignResultsByDate track by $index classuser-result-item> p classdate-heading>{{dateLabel}}/p> div ng-repeatresult in value track by $index> div classuser-result-wrapper ng-class{earned-points: result.pointsAwarded > 0}> div classpoints-container> span ng-ifresult.pointsAwarded > 0>+/span>{{result.pointsAwarded}} span locprediction_points_name_abbreviation>/span> /div> div classpoints-awarded-text> span ng-ifresult.pointsAwarded > 0 locprediction_answered_correctly>/span> span ng-ifresult.pointsAwarded 0 locprediction_answered_incorrectly>/span> /div> /div> /div> /div> /div> div classtag-line> span locprediction_keep_making_predictions>/span> /div>/div>!-- Your Results - END -->/script>script typetext/ng-template idviews/directives/slider.html>div classslider> div classslider-main> div classslider-track editable> div classslider-knob>/div> div classslider-track-fg>/div> /div> div classslider-track popular> div classslider-track-fg>/div> /div> /div>/div>/script>script typetext/ng-template idviews/directives/sound.html>audio id{{name}}> source ng-src{{sourceogg}} typeaudio/ogg; codecstheora, vorbis /> source ng-src{{sourcemp3}} typeaudio/mpeg />/audio>/script>script typetext/ng-template idviews/modals/debug-feedback.html>div classmodal-header> h4 classmodal-title>About this Form.../h4>/div>div classmodal-body> div ng-ifisWinner> p>You are currently the winner./p> p>Please either return to the winner form and submit your information or disable your winner status and exit the form./p> /div> div ng-if!isWinner> table> tr> td>Application/td> td>MegaController/td> /tr> tr> td>Deployment Key/td> td>{{deploymentKey}}/td> /tr> tr> td>Controller Key/td> td>{{controllerKey}}/td> /tr> tr> td>Version/td> td>{{versionNumber}}/td> /tr> tr> td>Controller Number/td> td>{{controllerNumber}}/td> /tr> tr> td>Winner/td> td>{{isWinner}}/td> /tr> tr> td>Score/td> td>{{score}}/td> /tr> tr> td>Rank/td> td>{{rank}}/td> /tr> /table> /div>/div>div classmodal-footer> button classbtn btn-success ng-clickcancel()>Return to form/button> button classbtn btn-danger ng-clickdisableWinnerAndBack()>Exit form/button>/div>div>/div>/script>script typetext/ng-template idviews/modals/debug.html>div classdebug-modal> div classmodal-header> h4 classmodal-title> span classdebug-title>Info/span> span classdebug-timestamp>Last built: {{config.buildDate | date: MMM d, y HH:mm:ss}}/span> /h4> /div> div classmodal-body> div debug>/div> /div> div classmodal-footer> button classbtn ng-clickcancel()>OK/button> /div>/div>/script>script typetext/ng-template idviews/modals/draftMode.html>div classmodal-body draft-mode-modal-body> h1 locpoll_will_open_soon>/h1> !-- Navigate back button --> div classnavigate-back-button ng-ifgetBackButtonText ng-clickcancel()> img src./images/back-arrow-black.png> p>span locpredictions_back_to>/span> {{getBackButtonText}}/p> /div>/div>/script>script typetext/ng-template idviews/modals/login.html>div classmodal-body login-modal-body> !-- Select login method --> div ng-if!isAuthorizing classanimate-fade-in> div classlogin-header-image> img classheader-image altClose login ng-if(current.showMedia.medium && !current.showMedia.medium.includes(blank.png)) || (current.showMedia.small && !current.showMedia.small.includes(blank.png)) ng-src{{current.showMedia.medium || current.showMedia.small}}> /div> div classlogin-button-wrapper> p loclogin_to_authorize>/p> div classsocial-login-button-container> div classbutton-container ng-repeatprovider in enabledProviders> a ng-ifprovider.label consts.CognitoProviders.FACEBOOK ng-clickstartAuthorization(provider) classsocial-button idfacebook-connect> span classmaterial-icons material-icons-round>/span> span classsocial-button-text loclogin-button-text-facebook>/span> /a> a ng-ifprovider.label consts.CognitoProviders.GOOGLE ng-clickstartAuthorization(provider) classsocial-button idgoogle-connect> span classmaterial-icons material-icons-round>/span> span classsocial-button-text loclogin-button-text-google>/span> /a> a ng-ifprovider.label consts.CognitoProviders.NBCU ng-clickstartAuthorization(provider) classsocial-button idnbcu-connect> span classmaterial-icons material-icons-round>person/span> span classsocial-button-text>span loclogin-button-text-generic>/span>span> {{provider.client.label ? provider.client.label : provider.label}}/span>/span> /a> /div> /div> /div> /div> !-- Authorization in progress --> div ng-ifisAuthorizing classanimate-fade-in login-in-progress-container ng-class{login-complete: isAuthorizationComplete}> div classlogin-header-image> img classheader-image ng-src{{profilePicture()}}> h2 classuser-name-container animated fadeIn ng-ifisAuthorizationComplete> span locwelcome>/span>, {{userName()}}/h2> /div> div classlogin-button-wrapper> p ng-if!isAuthorizationComplete locauthorizing_continue_in_other_window>/p> div classcircle-loader ng-class{load-complete: isAuthorizationComplete}> div classcheckmark draw>/div> /div> button ng-if!isAuthorizationComplete classcancel-authorization-button flex-center guttered ng-clickcancelAuthorization() loccancel_authorization>/button> /div> /div> !-- Close button--> div classclose-button ng-clickcancel()>/div>/div>/script>script typetext/ng-template idviews/modals/offer.html>div classmodal-body ng-class{app-container feedback: isForm() && offer.position ! inline, hide-inline-offer :offer.position inline && inlineOfferSubmitted, tiny-width :deviceState.mediaQuerySize.isTiny, small-width :deviceState.mediaQuerySize.isSmall, medium-width :deviceState.mediaQuerySize.isMedium}> !-- Billboard Offer --> div classbillboard-offer ng-ifisBillboard()> ng-include srcgetTemplateUrl(billboard.html)>/ng-include> /div> !-- Webpage Offer --> div classwebpage-offer ng-ifisWebpage()> ng-include srcgetTemplateUrl(webpage.html)>/ng-include> /div> !-- Form Offer --> div classform-offer feedback ng-ifisForm()> ng-include srcgetTemplateUrl(form.html)>/ng-include> /div> !-- App Install Offer --> div classappinstall-offer ng-ifisAppInstall()> div app-install offer-dataoffer offer-keykey>/div> /div> !-- Footer --> footer footer ng-class{hide-footer-media: !isVisible(offer.content.footer.sponsor.visible), hide-footer-policies: !isVisible(offer.content.footer.policies.visible)} ng-ifisVisible(offer.content.footer.sponsor.visible) || isVisible(offer.content.footer.policies.visible)> /footer> !-- CTA & Close buttons (not used for Form offers) --> div classcolumns offer-modal-buttons flex-center> !--CTA button (Learn more)--> a ng-ifisVisible(offer.content.cta.visible) && !isForm() && (offer.position popup || !offer.position) ng-clickvisitOffer() ng-href{{getCascadingUri()}} target{{getNavigationTarget()}}> button>{{getCascadingFormContent(offer.content.cta)}}/button> /a> !-- Close button--> button ng-ifisVisible(offer.content.cancel.visible) && (offer.position popup || !offer.position) && !isForm() ng-click$dismiss(dismissed)> {{getCascadingFormContent(offer.content.cancel)}} /button> /div>/div>div classrows flex-auto inline-offer-submitted ng-ifinlineOfferSubmitted> h3 classflex-center locfeedback_thanks_for_your_submission>/h3> button classflex-center ng-clickopenInlineOffer() locok>/button>/div>/script>script typetext/ng-template idviews/modals/offers/billboard.html>!-- Offer Copy -->div classrows> a ng-href{{getCascadingUri()}} target{{getNavigationTarget()}} ng-class{no-href : offer.actiongetActionKey().type ! navigate} ng-clickvisitOffer()> h2 ng-ifisVisible(offer.content.title.visible)>{{getCascadingFormContent(offer.content.title)}}/h2> h3 ng-ifisVisible(offer.content.subtitle.visible)>{{getCascadingFormContent(offer.content.subtitle)}}/h3> /a> !--Small Offer Media START --> !--Small Offer Background --> div classoffer-background-image ng-ifdeviceState.mediaQuerySize.isSmall || deviceState.mediaQuerySize.isTiny ng-class{has-background-image : offer.content.background.media.medium.uri || offer.content.background.media.uri} ng-style{background-image:url(+(offer.content.background.media.small.uri || offer.content.background.media.uri)+)}> !--Small Offer Foreground --> a ng-href{{getCascadingUri()}} target{{getNavigationTarget()}} ng-class{no-href : offer.actiongetActionKey().type ! navigate} ng-clickvisitOffer()> img classoffer-foreground-image ng-if(offer.content.foreground.media.uri || offer.content.foreground.media.small.uri) && mediaIsImage ng-src{{offer.content.foreground.media.small.uri || offer.content.foreground.media.uri}}> /a> div classvideo-container video-controls ng-if(offer.content.foreground.media.uri || offer.content.foreground.media.small.uri) && !mediaIsImage> video classoffer-foreground-video video-element ng-clickclickVideoControl($event) width100% heightauto playsinline id{{offer.id}}> source ng-src{{offer.content.foreground.media.small.uri + #t0.1 || offer.content.background.media.small.uri + #t0.1}} typevideo/mp4> /video> span classmaterial-icons-round play-button>play_circle_outline/span> div ng-ifvideoIsDone classwatch-again-overlay> button ng-clickwatchAgain($event)> span classmaterial-icons-round>replay/span> span locwatch_again>/span> /button> /div> span classmaterial-icons-round pause-icon ng-if!videoIsDone>pause/span> div classvideo-controls ng-if!videoIsDone> div classaudio-control> span ng-ifvideoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_off/span> span ng-if!videoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_up/span> /div> div classfullscreen-control ng-ifshowFullscreenButton> span classmaterial-icons-round ng-clicktoggleFullscreen($event)>fullscreen/span> /div> /div> /div> /div> !--Small Offer Media END --> !--Medium Offer Media START --> !-- Background Media --> div classoffer-background-image ng-ifdeviceState.mediaQuerySize.isMedium ng-class{has-background-image : offer.content.background.media.medium.uri || offer.content.background.media.uri} ng-style{background-image:url(+(offer.content.background.media.medium.uri || offer.content.background.media.uri)+)}> !-- Foreground Media --> a ng-href{{getCascadingUri()}} target{{getNavigationTarget()}} ng-class{no-href : offer.actiongetActionKey().type ! navigate} ng-clickvisitOffer()> img classoffer-foreground-image ng-if(offer.content.foreground.media.uri || offer.content.foreground.media.medium.uri) && mediaIsImage ng-src{{offer.content.foreground.media.medium.uri || offer.content.foreground.media.uri}}> /a> div classvideo-container video-controls ng-if(offer.content.foreground.media.uri || offer.content.foreground.media.medium.uri) && !mediaIsImage> video classoffer-foreground-video video-element ng-clickclickVideoControl($event) width100% heightauto playsinline id{{offer.id}}> source ng-src{{offer.content.foreground.media.medium.uri + #t0.1 || offer.content.background.media.medium.uri + #t0.1}} typevideo/mp4> /video> span classmaterial-icons-round play-button>play_circle_outline/span> div ng-ifvideoIsDone classwatch-again-overlay> button ng-clickwatchAgain($event)> span classmaterial-icons-round>replay/span> span locwatch_again>/span> /button> /div> span classmaterial-icons-round pause-icon ng-if!videoIsDone>pause/span> div classvideo-controls ng-if!videoIsDone> div classaudio-control> span ng-ifvideoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_off/span> span ng-if!videoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_up/span> /div> div classfullscreen-control ng-ifshowFullscreenButton> span classmaterial-icons-round ng-clicktoggleFullscreen($event)>fullscreen/span> /div> /div> /div> /div> !--Medium Offer Media END -->/div>/script>script typetext/ng-template idviews/modals/offers/cameraField.html>div classcamera-container ng-class{small-iframe : iframeIsSmall}> div classfile-upload-container> !-- Loading bubbles displayed anytime an action is in progress --> div classaction-in-progress-container animate-fade-in animated ng-ifphotoBoothActionInProgress> div classbubble-loading-container> div>/div> div>/div> div>/div> div>/div> /div> /div> !-- Media Preview Container --> div classmedia-preview-container photo-booth-container animate-fade-in animated idmediaPreviewContainer ng-class{show-media-preview : mediaPreviewExists && !mediaStream, show-media-preview-fullscreen: (!mediaPreviewExists && mediaStream) || photoBoothActionInProgress, one-column : mediaPreviewArray.length 1, two-column: mediaPreviewArray.length 2, three-column: mediaPreviewArray.length 3, grid: mediaPreviewArray.length > 4}> !-- Media Preview Array --> div ng-repeatmedia in mediaPreviewArray track by $index ng-classmedia.type> !-- Display image preview if the selected content is an image --> div classmedia-height-wrapper ng-ifmedia.type image> img idimage-preview classpreview-image animate-fade-in animated ng-src{{media.preview}}/> /div> !-- Display video preview if the selected content is a video --> !-- iOS Safari bug workaround: iOS Safari often crashes or fails to autoplay when multiple videos are selected, so dont autoplay unless the user chooses a single video only. --> !-- Future consideration 1: If iOS Safaris multi-file video autoplay issues are one day fixed: --> !-- Display and autoplay videos on all devices --> !-- Future consideration 2: If iOS Safaris multi-file crashing is fixed, but autoplay still fails: --> !-- Display videos on Safari, but instead of autoplaying, advance to .5s using .currentTime --> !-- Do not use #t0.5 as that seems to fail in Safari. It might also be necessary to invoke --> !-- load() on the video in Safari to force the poster frame to appear. --> !-- iOS Safari: video failure research references: --> !-- https://stackoverflow.com/questions/41255841/how-to-get-html5-video-thumbnail-without-using-poster-on-safari-or-ios/75889611#75889611 --> !-- https://bugs.webkit.org/show_bug.cgi?id232076 --> !-- https://github.com/GoogleChrome/workbox/issues/3004 --> video ng-ifmedia.type video && !photoBoothActionInProgress && ($root.config.devicePlatform ! ios || ($root.config.devicePlatform ios && mediaPreviewArray.length 1)) ng-src{{media.preview}} playsinline controls muted ng-attr-autoplay{{mediaPreviewArray.length 1 || undefined}} classpreview-image> /video> audio controls controlslistnodownload noplaybackrate ng-ifmedia.type audio ng-src{{media.preview}}> /audio> div classios-video-placeholder ng-ifmedia.type video && !photoBoothActionInProgress && ($root.config.devicePlatform ios && mediaPreviewArray.length > 1)> span classmaterial-icons material-icons-round>movie/span> span> span locphotobooth_nav_video>/span> {{media.videoCount}}/span> /div> /div> !-- Video Recording timer - displays as 00:00:00 --> div ng-ifvideoBoothRecorder.state recording classvideo-recording-timer animate-fade-in animated> p>{{formattedSeconds}}/p> /div> !-- Display video stream while taking a photo or video --> video ng-showmediaStream && !photoBoothActionInProgress idvideo-preview ng-class{no-pointer-events animate-fade-in animated: mediaStream} autoplay playsinline controls muted> /video> !-- Take photo button --> div classrecord-button photo animate-fade-in animated clickable ng-ifmediaStream && mediaAction photoBooth ng-clicktakePhoto()> div classinner>/div> /div> !-- Record video button --> div ng-ifmediaStream && mediaAction videoBooth classrecord-button animate-fade-in animated clickable ng-class{recording: videoBoothRecorder && videoBoothRecorder.state recording} ng-clickrecordButtonClickHandler(field.name)> div classinner>/div> /div> !-- Video recording progress bar --> div ng-ifmediaStream && mediaAction videoBooth && videoBoothRecorder && videoBoothRecorder.state recording classvideo-recording-progress-bar animate-fade-in animated> div classvideo-recording-progress-bar-inner ng-style{width: mediaUploadVideoProgress + %}>/div> /div> !-- Change camera button --> span ng-ifcaptureDevices.length > 1 && mediaStream && videoBoothRecorder.state ! recording ng-clickgetNextCamera() classmaterial-icons-round change-camera animate-fade-in animated>cached/span> !-- Cancel or Retake bar after media is present --> div classcancel-retake-bar animate-fade-in animated ng-ifmediaStream || mediaPreviewExists> !-- Cancel button --> p ng-clickclearMediaPreview() classanimate-fade-in animated locphotobooth_cancel>/p> !-- Change button for media upload--> p ng-ifmediaAction upload classanimate-fade-in animated ng-clickopenUploadFileSelectorByID(file-upload-input); scrollToTopOfElement(.camera-container) locphotobooth_change>/p> !-- Retake button for photos --> p ng-ifmediaAction photoBooth && !mediaStream && !photoBoothActionInProgress classanimate-fade-in animated ng-clickuseNativeCapture.photo ? openUploadFileSelectorByID(native-image-file-upload-input) : startMediaStream(true, true); scrollToTopOfElement(.camera-container) locphotobooth_retake> /p> !-- Retake button for videos --> p ng-ifmediaAction videoBooth && !mediaStream && !photoBoothActionInProgress classanimate-fade-in animated ng-clickuseNativeCapture.video ? openUploadFileSelectorByID(native-video-file-upload-input) : startMediaStream(true, true); scrollToTopOfElement(.camera-container) locphotobooth_retake> /p> /div> /div> !-- Display welcome UI for Upload media --> div classanimate-fade-in animated media-height-wrapper ng-ifmediaAction upload && !mediaPreviewExists && !mediaStream && !photoBoothActionInProgress> !-- Open media selector --> label classfile-upload-icon file-upload-action ng-clickopenUploadFileSelectorByID(file-upload-input); scrollToTopOfElement(.camera-container)> span classmaterial-icons-round>collections/span> span classno-preview-text locphotobooth_upload_photo_video>/span> span ng-ifmultifileUploadIsAllowed classupload-max-text>{{mediaUploadMaxMessage}}/span> /label> /div> !-- Display welcome UI for Photo Booth --> div classanimate-fade-in animated media-height-wrapper ng-ifmediaAction photoBooth && !mediaPreviewExists && !mediaStream && !photoBoothActionInProgress> !-- Start Taking a photo. Uses native camera if on android or iOS, otherwise uses photo-booth --> label classfile-upload-icon ng-clickuseNativeCapture.photo ? openUploadFileSelectorByID(native-image-file-upload-input) : startMediaStream(true, true); scrollToTopOfElement(.camera-container)> span classmaterial-icons-round>photo_camera/span> span classno-preview-text locphotobooth_take_photo>/span> /label> /div> !-- Display welcome UI for Video Booth --> div classanimate-fade-in animated media-height-wrapper ng-ifmediaAction videoBooth && !mediaPreviewExists && !mediaStream && !photoBoothActionInProgress> !-- Start Taking a video. Uses native camera if on android or iOS, otherwise uses photo-booth --> label id{{offer.id}}_{{field.name}}Label for{{offer.id}}_{{field.name}} ng-clickuseNativeCapture.video ? openUploadFileSelectorByID(native-video-file-upload-input) : startMediaStream(true, true); scrollToTopOfElement(.camera-container) classfile-upload-icon> span classmaterial-icons-round>photo_camera/span> span classno-preview-text locphotobooth_start_recording>/span> /label> /div> !-- Media input for native Android/iOS uploads & capturing --> input typefile acceptimage/* classupload captureenvironment idnative-image-file-upload-input onchangeangular.element(this).scope().handleMediaUpload(this, event) ng-requiredfield.requiredkey ng-initformValuesfield.name > input typefile acceptvideo/* classupload captureenvironment idnative-video-file-upload-input onchangeangular.element(this).scope().handleMediaUpload(this, event) ng-requiredfield.requiredkey ng-initformValuesfield.name > !-- Media input for image uploads --> !-- Note: iOS Safari apparently crashes when the name attribute is not provided. See: https://stackoverflow.com/questions/29225824/mobile-safari-crashing-while-capturing-photo-using-input-type-file --> input typefile classupload acceptimage/jpg, image/jpeg, image/png, video/*, audio/wav, audio/mp3, audio/mp4, audio/webm, audio/ogg idfile-upload-input namefileupload onchangeangular.element(this).scope().handleMediaUpload(this, event) ng-requiredfield.requiredkey ng-initformValuesfield.name > !-- Output recorded content to preview-canvas --> canvas idpreview-canvas styledisplay: none;>/canvas> /div> !-- Media action selection --> div classcamera-button-container animate-fade-in animated ng-if!mediaStream && !mediaPreviewExists && !photoBoothActionInProgress && showMediaActions> button ng-iffield.options.video && allowCameraOnDesktop ng-class{selected: mediaAction videoBooth} typebutton ng-clickselectMediaAction(videoBooth, field); scrollToTopOfElement(.camera-container) locphotobooth_nav_video> /button> button ng-iffield.options.photo && allowCameraOnDesktop ng-class{selected: mediaAction photoBooth} typebutton ng-clickselectMediaAction(photoBooth, field); scrollToTopOfElement(.camera-container) locphotobooth_nav_photo> /button> button ng-iffield.options.upload ng-class{selected: mediaAction upload} typebutton ng-clickselectMediaAction(upload, field); scrollToTopOfElement(.camera-container) locphotobooth_nav_upload> /button> /div> span classerrorText media-error-text flex-center ng-showmediaArrayForUpload 0 && form.attempted> span locphotobooth_provide_media>/span> {{mediaAction}}. /span> !-- Error when media is too large --> span classerrorText media-error-text flex-center ng-showmediaForUploadTooLarge> {{mediaForUploadTooLargeErrorMessage}} /span> !-- Error when media file limit has been exceeded --> span classerrorText media-error-text flex-center ng-showmediaFileLimitExceeded> {{mediaFileLimitErrorMessage}} /span> !-- Error text when media is invalid --> span classerrorText media-error-text flex-center ng-show!validMedia locphotobooth_invalid_media>/span>/div>/script>script typetext/ng-template idviews/modals/offers/form.html>!-- Small Offer Image Or Video -->div classrows ng-ifdeviceState.mediaQuerySize.isSmall || deviceState.mediaQuerySize.isTiny> a ng-href{{getCascadingUri()}} target{{getNavigationTarget()}} ng-class{no-href : offer.actiongetActionKey().type ! navigate} ng-clickvisitOffer()> img classoffer-foreground-image ng-class{submitted-form-media : clickableFormMedia && formSubmissionSuccessful} ng-if(offer.content.foreground.media.uri || offer.content.foreground.media.small.uri) && mediaIsImage ng-src{{offer.content.foreground.media.small.uri || offer.content.foreground.media.uri}}> /a> div classvideo-container video-controls ng-if(offer.content.foreground.media.uri || offer.content.foreground.media.small.uri) && !mediaIsImage> video classoffer-foreground-video video-element ng-clickclickVideoControl($event) width100% heightauto playsinline id{{offer.id}}> source ng-src{{offer.content.foreground.media.small.uri + #t0.1 || offer.content.background.media.small.uri + #t0.1}} typevideo/mp4> /video> span classmaterial-icons-round play-button>play_circle_outline/span> div ng-ifvideoIsDone classwatch-again-overlay> button ng-clickwatchAgain($event)> span classmaterial-icons-round>replay/span> span locwatch_again>/span> /button> /div> span classmaterial-icons-round pause-icon ng-if!videoIsDone>pause/span> div classvideo-controls ng-if!videoIsDone> div classaudio-control> span ng-ifvideoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_off/span> span ng-if!videoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_up/span> /div> div classfullscreen-control ng-ifshowFullscreenButton> span classmaterial-icons-round ng-clicktoggleFullscreen($event)>fullscreen/span> /div> /div> /div>/div>!-- Medium Offer Image Or Video -->div classrows ng-ifdeviceState.mediaQuerySize.isMedium> a ng-href{{getCascadingUri()}} target{{getNavigationTarget()}} ng-class{no-href : offer.actiongetActionKey().type ! navigate} ng-clickvisitOffer()> img classoffer-foreground-image ng-class{submitted-form-media : clickableFormMedia && formSubmissionSuccessful} ng-if(offer.content.foreground.media.uri || offer.content.foreground.media.medium.uri) && mediaIsImage ng-src{{offer.content.foreground.media.medium.uri || offer.content.foreground.media.uri}}> /a> div classvideo-container video-controls ng-if(offer.content.foreground.media.uri || offer.content.foreground.media.medium.uri) && !mediaIsImage> video classoffer-foreground-video video-element ng-clickclickVideoControl($event) width100% heightauto playsinline id{{offer.id}}> source ng-src{{offer.content.foreground.media.medium.uri + #t0.1 || offer.content.background.media.medium.uri + #t0.1}} typevideo/mp4> /video> span classmaterial-icons-round play-button>play_circle_outline/span> div ng-ifvideoIsDone classwatch-again-overlay> button ng-clickwatchAgain($event)> span classmaterial-icons-round>replay/span> span locwatch_again>/span> /button> /div> span classmaterial-icons-round pause-icon ng-if!videoIsDone>pause/span> div classvideo-controls ng-if!videoIsDone> div classaudio-control> span ng-ifvideoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_off/span> span ng-if!videoIsMuted classmaterial-icons-round ng-clicktoggleMute($event)>volume_up/span> /div> div classfullscreen-control ng-ifshowFullscreenButton> span classmaterial-icons-round ng-clicktoggleFullscreen($event)>fullscreen/span> /div> /div> /div>/div>!-- Offer Heading text -->a ng-href{{getCascadingUri()}} target{{getNavigationTarget()}} ng-class{no-href : offer.actiongetActionKey().type ! navigate} ng-clickvisitOffer()> h2 classfeedback-title ng-ifisVisible(offer.content.title.visible)>{{getCascadingFormContent(offer.content.title)}}/h2>/a>a ng-href{{getCascadingUri()}} target{{getNavigationTarget()}} ng-class{no-href : offer.actiongetActionKey().type ! navigate} ng-clickvisitOffer()> h3 ng-ifisVisible(offer.content.subtitle.visible)>{{getCascadingFormContent(offer.content.subtitle)}}/h3>/a>!-- Offer Form -->form nameform novalidate ng-class{attempted: form.attempted}> div ng-repeatsection in offer.content.form.sections classform-section ng-class{multiple-sections : offer.content.form.sections.length > 1}> !-- Section titles and descriptions --> p ng-ifsection.title.text classsection-title> {{section.title.text}}/p> p ng-ifsection.subtitle.text classsection-subtitle> {{section.subtitle.text}}/p> p ng-ifsection.description.text classsection-description> {{section.description.text}}/p> ul ng-show(clickableFormMedia && !formSubmissionSuccessful) || !clickableFormMedia> li ng-repeatfield in section.fields classitem-{{field.type}} ng-class{touched: field.touched, guttered-top: $first && field.type camera} ng-ifisVisible(field.visible)> !-- checkbox --> input id{{offer.id}}_{{field.name}} name{{offer.id}}_{{field.name}} ng-blurfield.touched true ng-ifFormservice.isCheckbox(field) type{{field.type}} ng-modelformValuesfield.name ng-requiredfield.requiredkey ng-initformValuesfield.name false> label for{{offer.id}}_{{field.name}} ng-if!Formservice.isCamera(field)> span ng-bind-htmlfield.label>/span> span classrequired ng-iffield.requiredkey locfeedback_required>/span> /label> !-- text, email, tel, and number --> input id{{offer.id}}_{{field.name}} name{{offer.id}}_{{field.name}} ng-blurfield.touched true ng-ifFormservice.isInput(field) type{{field.type}} ng-modelformValuesfield.name ng-requiredfield.requiredkey ng-changefield.type number ? formValuesfield.name Formservice.isValidNumber(formValuesfield.name) : null; checkFormIsEmpty(); ng-attr-maxlength{{field.name name || field.name email || field.name city ? 100 : 1000}} ng-initformValuesfield.name > !-- textarea --> textarea id{{offer.id}}_{{field.name}} name{{offer.id}}_{{field.name}} ng-blurfield.touched true ng-ifFormservice.isTextarea(field) ng-modelformValuesfield.name ng-requiredfield.requiredkey ng-changecheckFormIsEmpty(); ng-attr-maxlength{{field.name name || field.name email || field.name city ? 100 : 1000}} ng-initformValuesfield.name >/textarea> !-- date --> ng-include srcviews/components/forms/date-picker.html ng-ifFormservice.isDate(field)>/ng-include> !-- list --> select id{{offer.id}}_{{field.name}} name{{offer.id}}_{{field.name}} classdropdown-list ng-ifFormservice.isList(field) ng-modelformValuesfield.name ng-requiredfield.requiredkey ng-optionsoption.label as option.label for option in field.options> option selected value disabled locfeedback_empty_select>/option> /select> !-- radio group --> ul classradio-inline ng-ifFormservice.isRadio(field)> li classradio ng-repeatoption in field.options id{{offer.id}}_{{field.name}} name{{offer.id}}_{{field.name}}> label> input type{{field.type}} ng-modelformValuesfield.name ng-requiredfield.requiredkey ng-valueoption.label ng-initformValuesfield.name stylewidth: unset;> {{ option.label }} /label> /li> /ul> !-- checkbox group --> div ng-ifFormservice.isCheckboxGroup(field)> ul classcheckbox-group ng-initformValuesfield.name > li ng-repeatoption in field.options classitem-checkbox> input id{{offer.id}}_{{field.name}}_{{$index}} name{{offer.id}}_{{field.name}}_{{$index}} ng-blurfield.touched true typecheckbox ng-checkedformValuesfield.name.indexOf(option.label) > -1 ng-requiredfield.requiredkey && isCheckboxGroupEmpty(field) ng-clicktoggleCheckboxOption(field.name, option.label); checkFormIsEmpty();> label for{{offer.id}}_{{field.name}}_{{$index}}> span ng-bind-htmloption.label>/span> /label> /li> /ul> /div> !-- camera --> ng-include onloadcameraFieldInit(field) ng-ifFormservice.isCamera(field) srcgetTemplateUrl(cameraField.html)>/ng-include> !-- Generic error text --> div classerrorText ng-showformfield.name.$invalid && (field.touched || form.attempted)> span classmaterial-icons-round errorText>error/span> span classerrorText ng-bindFormservice.getErrorText(field)>/span> /div> /li> /ul> /div> !-- Offer Rules --> div classrows flex-center offer-rules-container> !-- Privacy Policy --> a ng-ifoffer.content.privacy_policy.visible && offer.content.privacy_policy.text ng-show(clickableFormMedia && !formSubmissionSuccessful) || !clickableFormMedia classrules-cta row ng-href{{offer.content.privacy_policy.uri}} target_blank> {{offer.content.privacy_policy.text}} /a> !-- Link out to rules --> a ng-if(offer.content.terms.cta.visible && offer.content.terms.uri && !offer.content.terms.official.visible) || (offer.content.terms.cta.visible null && offer.content.terms.uri) ng-show(clickableFormMedia && !formSubmissionSuccessful) || !clickableFormMedia classrules-cta row ng-href{{offer.content.terms.uri}} target_blank> {{offer.content.terms.cta.text ? offer.content.terms.cta.text : offer.content.terms.uri}} /a> !-- Expandable rules --> div classexpandable-rules ng-show(clickableFormMedia && !formSubmissionSuccessful) || !clickableFormMedia> !-- Abbreviated rules --> p classabbreviated-rules ng-ifoffer.content.terms.abbreviated.visible || (offer.content.terms.abbreviated.visible null && offer.content.terms.abbreviated.text)> {{offer.content.terms.abbreviated.text}} /p> a classrules-cta row ng-if(offer.content.terms.cta.visible && offer.content.terms.official.visible) || (offer.content.terms.official.visible null && offer.content.terms.cta.text && !offer.content.terms.uri) ng-clickshowTermsAndConditions()> {{offer.content.terms.cta.text}} /a> !-- Official rules --> div classofficial-rules-text ng-class{show-rules: showOfficialRules}> {{offer.content.terms.official.text}} /div> /div> !-- Buttons --> div classcolumns offer-modal-buttons flex-center> !-- Submit button --> button ng-ifisVisible(offer.content.cta.visible) && !Formservice.getFeedbackSubmitFailed(feedbackSubmitFailed) typebutton ng-class{invalid : form.$invalid || (offer.type ugccamera && mediaIsRequired && mediaArrayForUpload 0), sending : Formservice.getfeedbackAttemptInProgress(feedbackSubmitAttemptInProgress) || submittingMediaForms} ng-disabledform.$invalid || (offer.type ugccamera && mediaIsRequired && mediaArrayForUpload 0) || Formservice.checkFormIsEmpty(formValues) classcolumn ng-show(clickableFormMedia && !formSubmissionSuccessful) || !clickableFormMedia ng-clicksubmit(form); scrollToTopOfElement(.form-offer);> {{Formservice.getfeedbackAttemptInProgress(feedbackSubmitAttemptInProgress) || submittingMediaForms ? : getCascadingFormContent(offer.content.cta)}} div ng-ifFormservice.getfeedbackAttemptInProgress(feedbackSubmitAttemptInProgress) || submittingMediaForms classbubble-loading-container> div>/div> div>/div> div>/div> div>/div> /div> /button> !-- Close button--> button ng-ifisVisible(offer.content.cancel.visible) && (offer.position popup || !offer.position) && isForm() classcolumn typebutton ng-click$dismiss(dismissed)> {{getCascadingFormContent(offer.content.cancel)}} /button> h5 ng-ifFormservice.getFeedbackSubmitFailed(feedbackSubmitFailed) classerrorText locfeedback_sending_error>/h5> span> /span> h5 ng-ifFormservice.getFeedbackSubmitFailed(feedbackSubmitFailed) && offer.type ugccamera classerrorText locplease_try_again>/h5> button ng-ifisVisible(offer.content.cta.visible) && Formservice.getFeedbackSubmitFailed(feedbackSubmitFailed) && offer.type ! ugccamera classrow ng-clicksubmit(form); form.attempted false; scrollToTopOfElement(.form-offer); typebutton locfeedback_try_again>/button> /div> /div> !-- Loading view --> div ng-showFormservice.getfeedbackAttemptInProgress(feedbackSubmitAttemptInProgress) || submittingMediaForms classloading-screen feedback-loading rows flex-center> div classloading-content-container> div ng-ifsubmittingMediaForms classprogress-container> h3 ng-if!mediaIsUploading locprepping_media_upload>/h3> h3 ng-ifmediaIsUploading locuploading_media>/h3> h3 ng-ifmediaIsUploading && mediaArrayForUpload.length > 0> span>{{indexForMediaUploads + 1}} of {{mediaArrayForUpload.length}}/span> /h3> progress ng-ifmediaIsUploading value{{Formservice.getFeedbackMediaUploadProgress()}} max100 idprogressbar>/progress> /div> div ng-ifFormservice.getfeedbackAttemptInProgress(feedbackSubmitAttemptInProgress) && !submittingMediaForms classfeedback-loading-message-container> h3 classfeedback_loading_1 locfeedback_sending>/h3> h3 classfeedback_loading_2 locfeedback_still_sending>/h3> h3 classfeedback_loading_3 locfeedback_little_longer>/h3> h3 classfeedback_loading_4 locfeedback_thanks_for_waiting>/h3> /div> div classbubble-loading-container> div>/div> div>/div> div>/div> div>/div> /div> /div> /div>/form>/script>script typetext/ng-template idviews/modals/offers/webpage.html>iframe id{{offer.id}} ng-ifgetCascadingUri(offer.content.uri) ng-src{{getCascadingUri(offer.content.uri)}} frameborder0>/iframe>/script>script typetext/ng-template idviews/modals/pointsEarned.html>div classmodal-body points-earned-modal-body bg-confetti-animated> h1 locprediction_congratulations>/h1> !-- Animated coin --> div classcoin-container> div classcoin> div classshine>/div> div classtails>/div> div classheads>/div> /div> p classpoints-container> + {{points}} span locprediction_points_name_abbreviation>/span>/p> /div> div classpoints-awarded-summary> span locprediction_have_earned>/span> {{points}} span locprediction_points_name>/span>! /br> span locprediction_have_earned_keep_it_up>/span> /div> button classflex-center ng-clickcancel() locprediction_collect_points>/button>/div>/script>script typetext/ng-template idviews/modals/restrictedip.html>div classmodal-body restricted-ip rows flex-center> h4 classmodal-title locrestricted_ip_sorry>/h4> h4 classmodal-title locrestricted_ip_limit_reached>/h4> button ng-clickcancel() locok>/button>/div>/script>script typetext/ng-template idviews/modals/share-your-score-modal.html>div classmodal-body> div classanimate-fade-in> h1 locshare-title>/h1> div classshare-vote-button-container> a ng-href{{facebookURL}} target_blank classsocial-button idfacebook-connect ng-clickcancel()> img srcimages/social-icons/facebook-white.svg?sanitizetrue classsocial-button-icon> span classsocial-button-text locshare-button-text-facebook>/span> /a> a ng-href{{tweetURL}} target_blank classsocial-button idtwitter-connect ng-clickcancel()> img srcimages/social-icons/twitter-white.png classsocial-button-icon> span classsocial-button-text locshare-button-text-twitter>/span> /a> /div> /div> !-- Close button--> div classclose-button material-icons ng-clickcancel()> close /div>/div>/script>script typetext/ng-template idviews/modals/termsAndConditions.html>div classflex-center rows terms-conditions-modal> h2 locterms_and_conditions_title>/h2> p>{{termsAndConditions.text}}/p> a ng-iftermsAndConditions.uri href{{termsAndConditions.uri}} target_blank locfull_terms_and_conditions>/a> button classflex-center ng-clickcancel() locclose>/button>/div>/script>script typetext/ng-template idviews/modals/thirdPartyLogin.html>div classmodal-body login-modal-body third-party-login> div classlogin-header-image> img classheader-image altClose login ng-if(current.showMedia.medium && !current.showMedia.medium.includes(blank.png)) || (current.showMedia.small && !current.showMedia.small.includes(blank.png)) ng-src{{current.showMedia.medium || current.showMedia.small}}> /div> p>To continue, please sign in to your {{enabledProviders0.client ? enabledProviders0.client.label : enabledProviders0.label}} account./p> !-- Close button--> div classclose-button ng-clickcancel()>/div>/div>/script>script typetext/ng-template idviews/modals/toomanyrequests.html>div classmodal-body rows flex-center> h4 classmodal-title loctoo-many-requests>/h4> h4 classmodal-title loctoo-many-requests-subtext>/h4> button ng-clickcancel() locok>/button>/div>/script>script typetext/ng-template idviews/modals/voteNotAccepted.html>div classmodal-body rows vote-not-accepted-modal> h2> {{headingText}} /h2> p> span locwebpoll_vote_not_accepted_current_answer>/span> br> b>{{lastAcceptedVote.text}}/b> /p> button ng-clickcancel() locok>/button>/div>/script>script typetext/ng-template idviews/pages/defaults/Block/template.html>div classblock-content ng-class{fancy-text : currentQuestion.content.body.type rich_text} ng-bind-htmlhtmlContent>/div>div classtheme-font-color-test-container> !-- Display all common types of elements to test against --> h1>/h1> h2>/h2> h3>/h3> p>/p> a href#>Link/a> ul> li>/li> /ul>/div>/script>script typetext/ng-template idviews/pages/page.html>!-- MegaChatter - TOP -->div classbring-to-front ng-ifmegachatter.presentation.position top && megachatter.enabled> megachatter-presentations>/megachatter-presentations>/div>div classpage-container rows ng-class{onescreen-container: isOneScreen}> !-- Repeater for each scene within a multi-scene web poll (aka a MegaPage) --> div ng-repeatscene in webpollQuestionsArray track by scene.id ng-ifconfig.isVerticalStackModeWebpoll> div classscene-wrapper> ng-include srcgetTemplateUrl()>/ng-include> div classmultiselect-vote-button-container ng-if(isWebpoll || currentQuestion.isWebPoll) && multiselect.enabled && scene.product ! Block> multiple-vote-button passed-scene-valuescene>/multiple-vote-button> /div> ng-include ng-ifscene.product ! Block srcviews/directives/inlineOffersPages.html>/ng-include> /div> /div> !-- Archive scenes --> div classarchive-scenes-container ng-ifshowSceneArchive() && config.isVerticalStackModeWebpoll> !-- Archive Title --> h1 classpage-scene-archive-title ng-ifshowSceneArchiveTitle()> span ng-if!currentWebPoll.scene_archive.title locwebpoll_scene_archive_title>/span> span ng-ifcurrentWebPoll.scene_archive.title>{{currentWebPoll.scene_archive.title}}/span> /h1> !-- Repeater for each scene within a multi-scene web poll (aka a MegaPage) --> div ng-repeatscene in archivedWebpollQuestionsArray track by scene.id> div classscene-wrapper> ng-include srcgetTemplateUrl()>/ng-include> div classmultiselect-vote-button-container ng-if(isWebpoll || currentQuestion.isWebPoll) && multiselect.enabled && scene.product ! Block> multiple-vote-button passed-scene-valuescene>/multiple-vote-button> /div> ng-include ng-ifscene.product ! Block srcviews/directives/inlineOffersPages.html>/ng-include> /div> /div> /div> !-- Repeater for carousel web poll --> div ng-if!config.isVerticalStackModeWebpoll> !-- Only display --> div scene-animation classscene-wrapper> ng-include srcgetTemplateUrl()>/ng-include> /div> !-- Multi-scene Web Poll navigation --> div classquiz-next-button-container ng-ifshowNextAndBackButtons()> !-- Previous Scene Button --> button ng-class{disabled: pageVoteInProgress} ng-ifdisplayBackButton() classquiz-back-button ng-click!pageVoteInProgress && previousWebPollScene()> span classmaterial-icons-round>arrow_back/span> span locwebpoll_previous_scene>/span> /button> !-- Next Scene Button --> button ng-class{disabled: pageVoteInProgress} classquiz-next-button ng-ifdisplayNextButton() && !showFinalResultsNextButton && !showStartOverButton ng-click!pageVoteInProgress && advanceToNextWebPollScene()> !-- Display different text when the current scene is the first one --> span loc{{nextButtonLocale}}>/span> span classmaterial-icons-round>arrow_forward/span> /button> !-- Final Results View Button --> button ng-class{disabled: pageVoteInProgress} classquiz-final-results-next-button ng-ifshowFinalResultsNextButton ng-click!pageVoteInProgress && advanceToNextWebPollScene()> span locwebpoll_advance_to_final_results>/span> span classmaterial-icons-round>arrow_forward/span> /button> !-- Start Over Button --> button classquiz-start-over-button ng-ifcurrentWebPoll.scenes.length > 1 && showStartOverButton ng-clickstartWebPollOver()> span locwebpoll_start_over>/span> span classmaterial-icons-round>replay/span> /button> /div> div classmultiselect-vote-button-container ng-if(isWebpoll || currentQuestion.isWebPoll) && multiselect.enabled && currentQuestion.product ! Block> multiple-vote-button passed-scene-valuecurrentQuestion>/multiple-vote-button> /div> ng-include ng-ifscene.product ! Block srcviews/directives/inlineOffers.html>/ng-include> /div> ng-include ng-ifcurrent.inlinePageOffers.length > 0 srcviews/directives/inlinePageOffers.html>/ng-include>/div>!-- MegaChatter - BOTTOM -->div classbring-to-front ng-ifmegachatter.presentation.position bottom && megachatter.enabled> megachatter-presentations>/megachatter-presentations>/div>/script>script typetext/ng-template idviews/pages/quiz_final_results.html>div classquiz-final-results-container bg-confetti-animated> h2 classquiz-name ng-ifcurrentWebPoll.name>{{currentWebPoll.name}}/h2> h2 classquiz-name ng-if!currentWebPoll.name locleaderboard_title>/h2> div classresult-progress-container> svg width200 height200 viewBox-25 -25 250 250 version1.1 xmlnshttp://www.w3.org/2000/svg styletransform:rotate(-90deg)> !-- Background circle --> circle r90 cx100 cy100 filltransparent stroke#ffffff stroke-width16px stroke-dasharray565.48px stroke-dashoffset0>/circle> !-- Foreground circle --> circle idquizProgressRing r90 cx100 cy100 stroke#2ecc71 stroke-width16px stroke-linecapround stroke-dashoffset565.48px filltransparent stroke-dasharray565.48px>/circle> /svg> div classquiz-results> div classquiz-totals> span classcorrect-quiz-answers>{{correctAnswers}}/span>/{{totalQuestions}}/div> div classquiz-point-container> span classquiz-points>{{currentRun.totalPoints}}/span> span loc{{ currentRun.totalPoints 1 ? points_suffix_singular : points_suffix }}>/span> /div> /div> /div> button ng-ifcurrentWebPoll && currentWebPoll.replay && currentWebPoll.replay.enabled ng-click!resettingQuiz && playQuizAgain() ng-class{disabled: resettingQuiz}> span ng-if!resettingQuiz locwebpoll_play_again>/span> span ng-ifresettingQuiz locwebpoll_play_again_resetting>/span> /button>/div>/script>script typetext/ng-template idviews/pages/sceneTemplate.html>div classanimate-scene-in product-container bulletin passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.BULLETIN)>/div>div classanimate-scene-in product-container configurable-poll passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.CONFIGURABLEPOLL)>/div>div classanimate-scene-in product-container face-off passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.FACE_OFF)>/div>div classanimate-scene-in product-container five-stars passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.FIVE_STARS)>/div>div classanimate-scene-in product-container guess-gauge passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.GUESS_GAUGE)>/div>div classanimate-scene-in product-container hot-or-not passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.HOT_OR_NOT)>/div>div classanimate-scene-in product-container mood-meter passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.MOOD_METER)>/div>div classanimate-scene-in product-container pic-pick passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.PICPICK)>/div>div classanimate-scene-in product-container poster passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.POSTER)>/div>div classanimate-scene-in product-container readers-choice passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.READERS_CHOICE)>/div>div classanimate-scene-in product-container user-generated-content passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.UGC)>/div>div classanimate-scene-in product-container ugc-album passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.UGCALBUM)>/div>div classanimate-scene-in product-container viewers-choice passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.VIEWERS_CHOICE)>/div>div classanimate-scene-in product-container block passed-scene-valuescene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.BLOCK)>/div>div classis-album is-page-album ng-controllerAlbumCtrl ng-initpassedScene scene ? scene : currentQuestion ng-ifdisplayScene(scene ? scene : currentQuestion, products.ALBUM)> ng-include srcviews/album/album.html>/ng-include>/div>/script>!-- End Templates -->!--if lt IE 7> p classbrowsehappy>You are using an strong>outdated/strong> browser. Please a hrefhttp://browsehappy.com/>upgrade your browser/a> to improve your experience./p> !endiflogo-image-->div classmain-content-container ng-hideconfig.isInAppBrowser ng-class{'megachatter-onescreen' : host_app ! 'multiview' && megachatter.enabled, 'megachatter-hidden' : host_app ! 'multiview' && (megachatter.collapsed || !megachatter.visible)}>!-- DO NOT TOUCH! LOADS GOOGLE MATERIAL ICON/SYMBOL FONTS TO PREVENT ICON/SYMBOL POP IN --> span classmaterial-icons styleopacity: 0; height: 0; width: 0; font-size: 0; position: absolute; left: -10000px; z-index: -10000>favorite/span> span classmaterial-icons-round styleopacity: 0; height: 0; width: 0; font-size: 0; position: absolute; left: -10000px; z-index: -10000>favorite/span>!-- Loading view -->div ng-show!ccoLoaded || !config.themesLoaded classloading-screen rows flex-center ng-class{'loading-album-modal': config.isAlbumModal}>div classloading-failure-container>h3 ng-showccoFailedToLoad locunabletoloadcco>/h3>h3 ng-shownoLocalStorage loclocalstoragenotsupported>/h3>/div>div classloading-image-container>div ng-show!ccoFailedToLoad && nexusPayload classlogo-image animate-fade-in animated ng-style{'background-image':'url('+ (welcomeScreenMedia ? welcomeScreenMedia : 'images/megaphone-logo-black.png') +')'}>/div>div ng-show!ccoFailedToLoad && !nexusPayload classlogo-image-place-holder>/div>/div>!-- Loading Animation -->div ng-show!ccoFailedToLoad classbubble-loading-container animate-fade>div>/div>div>/div>div>/div>div>/div>/div>div ng-ifgameType 2 && !noLocalStorage classwebpoll_loading_container>div ng-if!webpollDisabled && !activeWebpollNotFound && !webpollIDNotFound>h3 classwebpoll_loading_1 locwebpoll_loading_1>/h3>h3 classwebpoll_loading_2 locwebpoll_loading_2>/h3>h3 classwebpoll_loading_3 locwebpoll_loading_3>/h3>h3 classwebpoll_loading_4 locwebpoll_loading_4>/h3>/div>div ng-ifwebpollDisabled>h3 locwebpoll_unable_to_load>/h3>/div>div ng-ifactiveWebpollNotFound>h3 locactive_webpoll_not_found>/h3>/div>div ng-ifwebpollIDNotFound>h3 locwebpoll_not_found>/h3>/div>/div>/div>!-- If content load is being distributed, display loading UI -->div ng-ifloadDistributionDuration > 0 classload-distribution-in-progress-container animate-fade>!-- Display loading bubbles if the wait time is 10 seconds or less. -->div classbubble-loading-container animate-fade fadeIn ng-ifloadDistributionDuration < 10>div>/div>div>/div>div>/div>div>/div>/div>!-- Display loading bar if the wait time is more than 10 seconds -->div classloading-progress-bar animate-fade fadeIn ng-ifloadDistributionDuration > 10>div classloading-progress-bar-inner ng-style{'animation-duration': loadDistributionDuration + 's'}>/div>/div>/div>!-- Application view -->gdpr-banner ng-ifccoLoaded && config.themesLoaded>/gdpr-banner>facebook-login ng-ifccoLoaded && facebookSDKLoaded && config.themesLoaded && config.loginType ! 'passthrough' && ((!config.isPredictionCampaign && config.enableFacebookSignIn) || (config.isPredictionCampaign && userAccessToken))>/facebook-login>section classapp-container ng-showccoLoaded>article classapp-height-element>header ng-ifconfig.themesLoaded && !config.isAlbum && !isEmbeddedInController header>/header>button ng-ifisWinner && !currentRun.finalResultsReceived && gameType _constants.GameType.PLAYLIST && deployment.controller.feedback_form_visibility ! hideAll classwinner-feedback-button ng-clickfs.setState(_constants.FeedbackState.OPEN)>div classwinner-icon>/div>span locwinner_feedback_button>/span>/button>!-- ng-class determines presentation of Megachatter-->div idviewContainer classview-container ng-class{'show-megachatter' : host_app ! 'multiview' && ((megachatter.enabled && gameType ! _constants.GameType.WEBPOLL) || (megachatter.webpoll_enabled && gameType _constants.GameType.WEBPOLL)), 'megachatter-top' : megachatter.presentation.position 'top', 'megachatter-bottom' : megachatter.presentation.position 'bottom', '{{megachatter.presentation.mode.medium}}' : host_app ! 'multiview' && deviceState.mediaQuerySize.isMedium && megachatter.enabled && megachatter.send_only_mode false, '{{megachatter.presentation.mode.small}}' : host_app ! 'multiview' && deviceState.mediaQuerySize.isSmall && megachatter.enabled && megachatter.send_only_mode false, 'tiny-width' :deviceState.mediaQuerySize.isTiny, 'small-width' :deviceState.mediaQuerySize.isSmall, 'medium-width' :deviceState.mediaQuerySize.isMedium, 'animate-view-in' : !config.isAlbum}>/div>footer ng-ifconfig.themesLoaded && !config.isAlbum && !isEmbeddedInController ng-class{'no-scene-content': config.isWebpoll && (!currentQuestion || (currentWebPoll.scenes && currentWebPoll.scenes.length 0))} footer>/footer>/article>/section>/div>!-- Display message to users that they cannot continue within an in application browser (Facebook/Instagram)-->div ng-ifconfig.isInAppBrowser && config.themesLoaded classin-app-browser-container animated fadeIn>div classin-app-browser-container-content>span locin_app_message_before_icon>/span> span classmaterial-symbols-outlined>more_horiz /span>span locin_app_message_after_icon>/span>/div>/div>!-- Sounds -->!-- TODO: In future, a project setting to enable sounds should be added. When that setting is added, then in controller, if sound is enabled for the current project, lazy load sound files. Until the enable sounds project setting exists, do not load sounds at all. The code below is left intact for historical reference, but is expected to be replaced entirely in future by a new sound loader. -->!-- div sound nameaudio_correct sourcesound/correct>/div>-->!-- div sound nameaudio_incorrect sourcesound/incorrect>/div>-->!-- div sound nameaudio_winner sourcesound/winner>/div>-->!--if lt IE 9> script srcbower_components/es5-shim/es5-shim.js>/script> script srcbower_components/json3/lib/json3.min.js>/script> !endif-->script srcscripts/vendor.js>/script>script srcscripts/scripts.js>/script>
Subdomains
Date
Domain
IP
abscbnshowtime.mega.page
2025-10-23
3.169.173.126
komuweather.mega.page
2025-10-23
3.169.173.23
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]