Commit e7ccc1f6 authored by Bob Van Landuyt's avatar Bob Van Landuyt

Merge branch 'ee-6336-add_snowplow_settings' into 'master'

Add Snowplow integration

See merge request gitlab-org/gitlab-ee!6642
parents f35a3c5b 166bdf04
......@@ -125,6 +125,17 @@
.settings-content
= render 'performance_bar'
%section.settings.as-snowplow.no-animate#js-snowplow-settings{ class: ('expanded' if expanded) }
.settings-header
%h4
Snowplow
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded ? _('Collapse') : _('Expand')
%p
= _('Configure the %{link} integration.').html_safe % { link: link_to('Snowplow', 'https://snowplowanalytics.com/', target: '_blank') }
.settings-content
= render 'snowplow', application_setting: @application_setting
%section.settings.as-background.no-animate#js-background-settings{ class: ('expanded' if expanded) }
.settings-header
%h4
......
......@@ -74,3 +74,4 @@
= render 'layouts/google_analytics' if extra_config.has_key?('google_analytics_id')
= render 'layouts/piwik' if extra_config.has_key?('piwik_url') && extra_config.has_key?('piwik_site_id')
= render 'layouts/snowplow' if Gitlab::CurrentSettings.snowplow_enabled?
......@@ -208,6 +208,10 @@ ActiveRecord::Schema.define(version: 20180803001726) do
t.boolean "enforce_terms", default: false
t.boolean "pseudonymizer_enabled", default: false, null: false
t.boolean "hide_third_party_offers", default: false, null: false
t.boolean "snowplow_enabled", default: false, null: false
t.string "snowplow_collector_uri"
t.string "snowplow_site_id"
t.string "snowplow_cookie_domain"
t.boolean "instance_statistics_visibility_private", default: false, null: false
t.boolean "web_ide_clientside_preview_enabled", default: false, null: false
t.integer "custom_project_templates_group_id"
......
......@@ -167,6 +167,9 @@ PUT /application/settings
| `slack_app_id` | string | yes (if `slack_app_enabled` is true) | The app id of the Slack-app |
| `slack_app_secret` | string | yes (if `slack_app_enabled` is true) | The app secret of the Slack-app |
| `slack_app_verification_token` | string | yes (if `slack_app_enabled` is true) | The verification token of the Slack-app | `terminal_max_session_time` | integer | no | Maximum time for web terminal websocket connection (in seconds). Set to 0 for unlimited time. |
| `snowplow_enabled` | boolean | no | Enable Snowplow integration. Default is `false`. |
| `snowplow_collector_uri` | string | yes (if `snowplow_enabled` is `true`) | Snowplow Collector URI |
| `snowplow_site_id` | string | no | Snowplow Site/Application ID |
| `two_factor_grace_period` | integer | no | Amount of time (in hours) that users are allowed to skip forced configuration of two-factor authentication |
| `unique_ips_limit_enabled` | boolean | no | Limit sign in from multiple ips |
| `unique_ips_limit_per_user` | integer | yes (if `unique_ips_limit_enabled` is true) | Maximum number of ips per user |
......
/* eslint-disable */
/*! * Snowplow - The world's most powerful web analytics platform
*
* @description JavaScript tracker for Snowplow
* @version 2.9.2
* @author Alex Dean, Simon Andersson, Anthon Pang, Fred Blundun, Joshua Beemster
* @copyright Anthon Pang, Snowplow Analytics Ltd
* @license Simplified BSD
*/
(function(){function a(c,g,e){function d(m,j){if(!g[m]){if(!c[m]){var i=typeof require=="function"&&require;if(!j&&i){return i(m,!0)}if(b){return b(m,!0)}var k=new Error("Cannot find module '"+m+"'");throw k.code="MODULE_NOT_FOUND",k}var h=g[m]={exports:{}};c[m][0].call(h.exports,function(l){var o=c[m][1][l];return d(o?o:l)},h,h.exports,a,c,g,e)}return g[m].exports}var b=typeof require=="function"&&require;for(var f=0;f<e.length;f++){d(e[f])}return d}return a})()({1:[function(b,c,a){this.cookie=function(e,g,d,i,f,h){if(arguments.length>1){return document.cookie=e+"="+escape(g)+(d?"; expires="+new Date(+new Date()+(d*1000)).toUTCString():"")+(i?"; path="+i:"")+(f?"; domain="+f:"")+(h?"; secure":"")}return unescape((("; "+document.cookie).split("; "+e+"=")[1]||"").split(";")[0])}},{}],2:[function(c,d,b){var a={utf8:{stringToBytes:function(e){return a.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(a.bin.bytesToString(e)))}},bin:{stringToBytes:function(g){for(var e=[],f=0;f<g.length;f++){e.push(g.charCodeAt(f)&255)}return e},bytesToString:function(e){for(var g=[],f=0;f<e.length;f++){g.push(String.fromCharCode(e[f]))}return g.join("")}}};d.exports=a},{}],3:[function(b,c,a){(function(){var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e={rotl:function(g,f){return(g<<f)|(g>>>(32-f))},rotr:function(g,f){return(g<<(32-f))|(g>>>f)},endian:function(g){if(g.constructor==Number){return e.rotl(g,8)&16711935|e.rotl(g,24)&4278255360}for(var f=0;f<g.length;f++){g[f]=e.endian(g[f])}return g},randomBytes:function(g){for(var f=[];g>0;g--){f.push(Math.floor(Math.random()*256))}return f},bytesToWords:function(g){for(var j=[],h=0,f=0;h<g.length;h++,f+=8){j[f>>>5]|=g[h]<<(24-f%32)}return j},wordsToBytes:function(h){for(var g=[],f=0;f<h.length*32;f+=8){g.push((h[f>>>5]>>>(24-f%32))&255)}return g},bytesToHex:function(f){for(var h=[],g=0;g<f.length;g++){h.push((f[g]>>>4).toString(16));h.push((f[g]&15).toString(16))}return h.join("")},hexToBytes:function(g){for(var f=[],h=0;h<g.length;h+=2){f.push(parseInt(g.substr(h,2),16))}return f},bytesToBase64:function(g){for(var f=[],k=0;k<g.length;k+=3){var l=(g[k]<<16)|(g[k+1]<<8)|g[k+2];for(var h=0;h<4;h++){if(k*8+h*6<=g.length*8){f.push(d.charAt((l>>>6*(3-h))&63))}else{f.push("=")}}}return f.join("")},base64ToBytes:function(g){g=g.replace(/[^A-Z0-9+\/]/ig,"");for(var f=[],h=0,j=0;h<g.length;j=++h%4){if(j==0){continue}f.push(((d.indexOf(g.charAt(h-1))&(Math.pow(2,-2*j+8)-1))<<(j*2))|(d.indexOf(g.charAt(h))>>>(6-j*2)))}return f}};c.exports=e})()},{}],4:[function(b,c,a){(function(d){var e=(function(){var g="s",h=function(o){var p=-o.getTimezoneOffset();return(p!==null?p:0)},k=function(p,q,o){var r=new Date();if(p!==undefined){r.setFullYear(p)}r.setMonth(q);r.setDate(o);return r},i=function(o){return h(k(o,0,2))},l=function(o){return h(k(o,5,2))},f=function(p){var q=p.getMonth()>7,t=q?l(p.getFullYear()):i(p.getFullYear()),o=h(p),s=t<0,r=t-o;if(!s&&!q){return r<0}return r!==0},j=function(){var o=i(),p=l(),q=o-p;if(q<0){return o+",1"}else{if(q>0){return p+",1,"+g}}return o+",0"},m=function(){var o=j();return new e.TimeZone(e.olson.timezones[o])},n=function(o){var p=new Date(2010,6,15,1,0,0,0),q={"America/Denver":new Date(2011,2,13,3,0,0,0),"America/Mazatlan":new Date(2011,3,3,3,0,0,0),"America/Chicago":new Date(2011,2,13,3,0,0,0),"America/Mexico_City":new Date(2011,3,3,3,0,0,0),"America/Asuncion":new Date(2012,9,7,3,0,0,0),"America/Santiago":new Date(2012,9,3,3,0,0,0),"America/Campo_Grande":new Date(2012,9,21,5,0,0,0),"America/Montevideo":new Date(2011,9,2,3,0,0,0),"America/Sao_Paulo":new Date(2011,9,16,5,0,0,0),"America/Los_Angeles":new Date(2011,2,13,8,0,0,0),"America/Santa_Isabel":new Date(2011,3,5,8,0,0,0),"America/Havana":new Date(2012,2,10,2,0,0,0),"America/New_York":new Date(2012,2,10,7,0,0,0),"Europe/Helsinki":new Date(2013,2,31,5,0,0,0),"Pacific/Auckland":new Date(2011,8,26,7,0,0,0),"America/Halifax":new Date(2011,2,13,6,0,0,0),"America/Goose_Bay":new Date(2011,2,13,2,1,0,0),"America/Miquelon":new Date(2011,2,13,5,0,0,0),"America/Godthab":new Date(2011,2,27,1,0,0,0),"Europe/Moscow":p,"Asia/Amman":new Date(2013,2,29,1,0,0,0),"Asia/Beirut":new Date(2013,2,31,2,0,0,0),"Asia/Damascus":new Date(2013,3,6,2,0,0,0),"Asia/Jerusalem":new Date(2013,2,29,5,0,0,0),"Asia/Yekaterinburg":p,"Asia/Omsk":p,"Asia/Krasnoyarsk":p,"Asia/Irkutsk":p,"Asia/Yakutsk":p,"Asia/Vladivostok":p,"Asia/Baku":new Date(2013,2,31,4,0,0),"Asia/Yerevan":new Date(2013,2,31,3,0,0),"Asia/Kamchatka":p,"Asia/Gaza":new Date(2010,2,27,4,0,0),"Africa/Cairo":new Date(2010,4,1,3,0,0),"Europe/Minsk":p,"Pacific/Apia":new Date(2010,10,1,1,0,0,0),"Pacific/Fiji":new Date(2010,11,1,0,0,0),"Australia/Perth":new Date(2008,10,1,1,0,0,0)};return q[o]};return{determine:m,date_is_dst:f,dst_start_for:n}}());e.TimeZone=function(f){var g={"America/Denver":["America/Denver","America/Mazatlan"],"America/Chicago":["America/Chicago","America/Mexico_City"],"America/Santiago":["America/Santiago","America/Asuncion","America/Campo_Grande"],"America/Montevideo":["America/Montevideo","America/Sao_Paulo"],"Asia/Beirut":["Asia/Amman","Asia/Jerusalem","Asia/Beirut","Europe/Helsinki","Asia/Damascus"],"Pacific/Auckland":["Pacific/Auckland","Pacific/Fiji"],"America/Los_Angeles":["America/Los_Angeles","America/Santa_Isabel"],"America/New_York":["America/Havana","America/New_York"],"America/Halifax":["America/Goose_Bay","America/Halifax"],"America/Godthab":["America/Miquelon","America/Godthab"],"Asia/Dubai":["Europe/Moscow"],"Asia/Dhaka":["Asia/Yekaterinburg"],"Asia/Jakarta":["Asia/Omsk"],"Asia/Shanghai":["Asia/Krasnoyarsk","Australia/Perth"],"Asia/Tokyo":["Asia/Irkutsk"],"Australia/Brisbane":["Asia/Yakutsk"],"Pacific/Noumea":["Asia/Vladivostok"],"Pacific/Tarawa":["Asia/Kamchatka","Pacific/Fiji"],"Pacific/Tongatapu":["Pacific/Apia"],"Asia/Baghdad":["Europe/Minsk"],"Asia/Baku":["Asia/Yerevan","Asia/Baku"],"Africa/Johannesburg":["Asia/Gaza","Africa/Cairo"]},h=f,j=function(){var k=g[h],m=k.length,l=0,n=k[0];for(;l<m;l+=1){n=k[l];if(e.date_is_dst(e.dst_start_for(n))){h=n;return}}},i=function(){return typeof(g[h])!=="undefined"};if(i()){j()}return{name:function(){return h}}};e.olson={};e.olson.timezones={"-720,0":"Pacific/Majuro","-660,0":"Pacific/Pago_Pago","-600,1":"America/Adak","-600,0":"Pacific/Honolulu","-570,0":"Pacific/Marquesas","-540,0":"Pacific/Gambier","-540,1":"America/Anchorage","-480,1":"America/Los_Angeles","-480,0":"Pacific/Pitcairn","-420,0":"America/Phoenix","-420,1":"America/Denver","-360,0":"America/Guatemala","-360,1":"America/Chicago","-360,1,s":"Pacific/Easter","-300,0":"America/Bogota","-300,1":"America/New_York","-270,0":"America/Caracas","-240,1":"America/Halifax","-240,0":"America/Santo_Domingo","-240,1,s":"America/Santiago","-210,1":"America/St_Johns","-180,1":"America/Godthab","-180,0":"America/Argentina/Buenos_Aires","-180,1,s":"America/Montevideo","-120,0":"America/Noronha","-120,1":"America/Noronha","-60,1":"Atlantic/Azores","-60,0":"Atlantic/Cape_Verde","0,0":"UTC","0,1":"Europe/London","60,1":"Europe/Berlin","60,0":"Africa/Lagos","60,1,s":"Africa/Windhoek","120,1":"Asia/Beirut","120,0":"Africa/Johannesburg","180,0":"Asia/Baghdad","180,1":"Europe/Moscow","210,1":"Asia/Tehran","240,0":"Asia/Dubai","240,1":"Asia/Baku","270,0":"Asia/Kabul","300,1":"Asia/Yekaterinburg","300,0":"Asia/Karachi","330,0":"Asia/Kolkata","345,0":"Asia/Kathmandu","360,0":"Asia/Dhaka","360,1":"Asia/Omsk","390,0":"Asia/Rangoon","420,1":"Asia/Krasnoyarsk","420,0":"Asia/Jakarta","480,0":"Asia/Shanghai","480,1":"Asia/Irkutsk","525,0":"Australia/Eucla","525,1,s":"Australia/Eucla","540,1":"Asia/Yakutsk","540,0":"Asia/Tokyo","570,0":"Australia/Darwin","570,1,s":"Australia/Adelaide","600,0":"Australia/Brisbane","600,1":"Asia/Vladivostok","600,1,s":"Australia/Sydney","630,1,s":"Australia/Lord_Howe","660,1":"Asia/Kamchatka","660,0":"Pacific/Noumea","690,0":"Pacific/Norfolk","720,1,s":"Pacific/Auckland","720,0":"Pacific/Tarawa","765,1,s":"Pacific/Chatham","780,0":"Pacific/Tongatapu","780,1,s":"Pacific/Apia","840,0":"Pacific/Kiritimati"};if(typeof a!=="undefined"){a.jstz=e}else{d.jstz=e}})(this)},{}],5:[function(b,c,a){(function(){var h=this;function f(q,m){var j=q.length,p=m^j,o=0,n;while(j>=4){n=((q.charCodeAt(o)&255))|((q.charCodeAt(++o)&255)<<8)|((q.charCodeAt(++o)&255)<<16)|((q.charCodeAt(++o)&255)<<24);n=(((n&65535)*1540483477)+((((n>>>16)*1540483477)&65535)<<16));n^=n>>>24;n=(((n&65535)*1540483477)+((((n>>>16)*1540483477)&65535)<<16));p=(((p&65535)*1540483477)+((((p>>>16)*1540483477)&65535)<<16))^n;j-=4;++o}switch(j){case 3:p^=(q.charCodeAt(o+2)&255)<<16;case 2:p^=(q.charCodeAt(o+1)&255)<<8;case 1:p^=(q.charCodeAt(o)&255);p=(((p&65535)*1540483477)+((((p>>>16)*1540483477)&65535)<<16))}p^=p>>>13;p=(((p&65535)*1540483477)+((((p>>>16)*1540483477)&65535)<<16));p^=p>>>15;return p>>>0}function e(s,o){var t,u,q,k,n,j,l,r,p,m;t=s.length&3;u=s.length-t;q=o;n=3432918353;l=461845907;m=0;while(m<u){p=((s.charCodeAt(m)&255))|((s.charCodeAt(++m)&255)<<8)|((s.charCodeAt(++m)&255)<<16)|((s.charCodeAt(++m)&255)<<24);++m;p=((((p&65535)*n)+((((p>>>16)*n)&65535)<<16)))&4294967295;p=(p<<15)|(p>>>17);p=((((p&65535)*l)+((((p>>>16)*l)&65535)<<16)))&4294967295;q^=p;q=(q<<13)|(q>>>19);k=((((q&65535)*5)+((((q>>>16)*5)&65535)<<16)))&4294967295;q=(((k&65535)+27492)+((((k>>>16)+58964)&65535)<<16))}p=0;switch(t){case 3:p^=(s.charCodeAt(m+2)&255)<<16;case 2:p^=(s.charCodeAt(m+1)&255)<<8;case 1:p^=(s.charCodeAt(m)&255);p=(((p&65535)*n)+((((p>>>16)*n)&65535)<<16))&4294967295;p=(p<<15)|(p>>>17);p=(((p&65535)*l)+((((p>>>16)*l)&65535)<<16))&4294967295;q^=p}q^=s.length;q^=q>>>16;q=(((q&65535)*2246822507)+((((q>>>16)*2246822507)&65535)<<16))&4294967295;q^=q>>>13;q=((((q&65535)*3266489909)+((((q>>>16)*3266489909)&65535)<<16)))&4294967295;q^=q>>>16;return q>>>0}var d=e;d.v2=f;d.v3=e;if(typeof(c)!="undefined"){c.exports=d}else{var g=h.murmur;d.noConflict=function(){h.murmur=g;return d};h.murmur=d}}())},{}],6:[function(b,c,a){(function(){var g=b("crypt"),d=b("charenc").utf8,e=b("charenc").bin,h=function(q){if(q.constructor==String){q=d.stringToBytes(q)}var y=g.bytesToWords(q),z=q.length*8,r=[],u=1732584193,s=-271733879,p=-1732584194,o=271733878,k=-1009589776;y[z>>5]|=128<<(24-z%32);y[((z+64>>>9)<<4)+15]=z;for(var B=0;B<y.length;B+=16){var G=u,F=s,E=p,D=o,C=k;for(var A=0;A<80;A++){if(A<16){r[A]=y[B+A]}else{var x=r[A-3]^r[A-8]^r[A-14]^r[A-16];r[A]=(x<<1)|(x>>>31)}var v=((u<<5)|(u>>>27))+k+(r[A]>>>0)+(A<20?(s&p|~s&o)+1518500249:A<40?(s^p^o)+1859775393:A<60?(s&p|s&o|p&o)-1894007588:(s^p^o)-899497514);k=o;o=p;p=(s<<30)|(s>>>2);s=u;u=v}u+=G;s+=F;p+=E;o+=D;k+=C}return[u,s,p,o,k]},f=function(k,i){var j=g.wordsToBytes(h(k));return i&&i.asBytes?j:i&&i.asString?e.bytesToString(j):g.bytesToHex(j)};f._blocksize=16;f._digestsize=20;c.exports=f})()},{charenc:2,crypt:3}],7:[function(b,c,a){Object.defineProperty(a,"__esModule",{value:true});var d=b("./lib/core");a.trackerCore=d.trackerCore},{"./lib/core":9}],8:[function(c,d,a){Object.defineProperty(a,"__esModule",{value:true});function b(n){var j="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var h,g,f,s,q,p,o,t,m=0,u=0,l,k=[];if(!n){return n}n=unescape(encodeURIComponent(n));do{h=n.charCodeAt(m++);g=n.charCodeAt(m++);f=n.charCodeAt(m++);t=h<<16|g<<8|f;s=t>>18&63;q=t>>12&63;p=t>>6&63;o=t&63;k[u++]=j.charAt(s)+j.charAt(q)+j.charAt(p)+j.charAt(o)}while(m<n.length);l=k.join("");var e=n.length%3;return(e?l.slice(0,e-3):l)+"===".slice(e||3)}a.base64encode=b},{}],9:[function(b,d,a){Object.defineProperty(a,"__esModule",{value:true});var e=b("uuid");var g=b("./payload");function c(h){if(h==null){return{type:"dtm",value:new Date().getTime()}}else{if(typeof h==="number"){return{type:"dtm",value:h}}else{if(h.type==="ttm"){return{type:"ttm",value:h.value}}else{return{type:"dtm",value:(h.value||new Date().getTime())}}}}}function f(j,o){if(typeof j==="undefined"){j=true}var h={};function l(p,q){h[p]=q}function k(r,s){var q={};s=s||{};for(var p in r){if(s[p]||(r[p]!==null&&typeof r[p]!=="undefined")){q[p]=r[p]}}return q}function n(p){if(p&&p.length){return{schema:"iglu:com.snowplowanalytics.snowplow/contexts/jsonschema/1-0-0",data:p}}}function i(t,q,p){t.addDict(h);t.add("eid",e.v4());var s=c(p);t.add(s.type,s.value.toString());var r=n(q);if(r!==undefined){t.addJson("cx","co",r)}if(typeof o==="function"){o(t)}return t}function m(r,q,p){var t=g.payloadBuilder(j);var s={schema:"iglu:com.snowplowanalytics.snowplow/unstruct_event/jsonschema/1-0-0",data:r};t.add("e","ue");t.addJson("ue_px","ue_pr",s);return i(t,q,p)}return{setBase64Encoding:function(p){j=p},addPayloadPair:l,addPayloadDict:function(q){for(var p in q){if(q.hasOwnProperty(p)){h[p]=q[p]}}},resetPayloadPairs:function(p){h=g.isJson(p)?p:{}},setTrackerVersion:function(p){l("tv",p)},setTrackerNamespace:function(p){l("tna",p)},setAppId:function(p){l("aid",p)},setPlatform:function(p){l("p",p)},setUserId:function(p){l("uid",p)},setScreenResolution:function(q,p){l("res",q+"x"+p)},setViewport:function(q,p){l("vp",q+"x"+p)},setColorDepth:function(p){l("cd",p)},setTimezone:function(p){l("tz",p)},setLang:function(p){l("lang",p)},setIpAddress:function(p){l("ip",p)},trackUnstructEvent:m,trackSelfDescribingEvent:m,trackPageView:function(t,s,r,q,p){var u=g.payloadBuilder(j);u.add("e","pv");u.add("url",t);u.add("page",s);u.add("refr",r);return i(u,q,p)},trackPagePing:function(r,s,w,x,t,q,y,p,u){var v=g.payloadBuilder(j);v.add("e","pp");v.add("url",r);v.add("page",s);v.add("refr",w);v.add("pp_mix",x.toString());v.add("pp_max",t.toString());v.add("pp_miy",q.toString());v.add("pp_may",y.toString());return i(v,p,u)},trackStructEvent:function(s,v,q,u,t,r,p){var w=g.payloadBuilder(j);w.add("e","se");w.add("se_ca",s);w.add("se_ac",v);w.add("se_la",q);w.add("se_pr",u);w.add("se_va",(t==null?undefined:t.toString()));return i(w,r,p)},trackEcommerceTransaction:function(w,v,t,s,p,x,q,u,z,r,y){var A=g.payloadBuilder(j);A.add("e","tr");A.add("tr_id",w);A.add("tr_af",v);A.add("tr_tt",t);A.add("tr_tx",s);A.add("tr_sh",p);A.add("tr_ci",x);A.add("tr_st",q);A.add("tr_co",u);A.add("tr_cu",z);return i(A,r,y)},trackEcommerceTransactionItem:function(s,w,p,q,u,t,x,r,v){var y=g.payloadBuilder(j);y.add("e","ti");y.add("ti_id",s);y.add("ti_sk",w);y.add("ti_nm",p);y.add("ti_ca",q);y.add("ti_pr",u);y.add("ti_qu",t);y.add("ti_cu",x);return i(y,r,v)},trackScreenView:function(q,s,r,p){return m({schema:"iglu:com.snowplowanalytics.snowplow/screen_view/jsonschema/1-0-0",data:k({name:q,id:s})},r,p)},trackLinkClick:function(w,r,t,q,v,u,p){var s={schema:"iglu:com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-1",data:k({targetUrl:w,elementId:r,elementClasses:t,elementTarget:q,elementContent:v})};return m(s,u,p)},trackAdImpression:function(t,p,r,s,z,u,v,y,q,x){var w={schema:"iglu:com.snowplowanalytics.snowplow/ad_impression/jsonschema/1-0-0",data:k({impressionId:t,costModel:p,cost:r,targetUrl:s,bannerId:z,zoneId:u,advertiserId:v,campaignId:y})};return m(w,q,x)},trackAdClick:function(r,x,p,s,A,u,t,v,z,q,y){var w={schema:"iglu:com.snowplowanalytics.snowplow/ad_click/jsonschema/1-0-0",data:k({targetUrl:r,clickId:x,costModel:p,cost:s,bannerId:A,zoneId:u,impressionId:t,advertiserId:v,campaignId:z})};return m(w,q,y)},trackAdConversion:function(A,p,s,r,u,y,z,t,x,q,w){var v={schema:"iglu:com.snowplowanalytics.snowplow/ad_conversion/jsonschema/1-0-0",data:k({conversionId:A,costModel:p,cost:s,category:r,action:u,property:y,initialValue:z,advertiserId:t,campaignId:x})};return m(v,q,w)},trackSocialInteraction:function(t,s,u,r,p){var q={schema:"iglu:com.snowplowanalytics.snowplow/social_interaction/jsonschema/1-0-0",data:k({action:t,network:s,target:u})};return m(q,r,p)},trackAddToCart:function(w,r,t,u,v,q,s,p){return m({schema:"iglu:com.snowplowanalytics.snowplow/add_to_cart/jsonschema/1-0-0",data:k({sku:w,name:r,category:t,unitPrice:u,quantity:v,currency:q})},s,p)},trackRemoveFromCart:function(w,r,t,u,v,q,s,p){return m({schema:"iglu:com.snowplowanalytics.snowplow/remove_from_cart/jsonschema/1-0-0",data:k({sku:w,name:r,category:t,unitPrice:u,quantity:v,currency:q})},s,p)},trackFormChange:function(v,q,w,t,r,u,s,p){return m({schema:"iglu:com.snowplowanalytics.snowplow/change_form/jsonschema/1-0-0",data:k({formId:v,elementId:q,nodeName:w,type:t,elementClasses:r,value:u},{value:true})},s,p)},trackFormSubmission:function(t,r,s,q,p){return m({schema:"iglu:com.snowplowanalytics.snowplow/submit_form/jsonschema/1-0-0",data:k({formId:t,formClasses:r,elements:s})},q,p)},trackSiteSearch:function(u,t,q,r,s,p){return m({schema:"iglu:com.snowplowanalytics.snowplow/site_search/jsonschema/1-0-0",data:k({terms:u,filters:t,totalResults:q,pageResults:r})},s,p)},trackConsentWithdrawn:function(t,w,q,r,u,s,p){var v={schema:"iglu:com.snowplowanalytics.snowplow/consent_document/jsonschema/1-0-0",data:k({id:w,version:q,name:r,description:u})};return m({schema:"iglu:com.snowplowanalytics.snowplow/consent_withdrawn/jsonschema/1-0-0",data:k({all:t})},v.data&&s?s.concat([v]):s,p)},trackConsentGranted:function(w,q,r,u,t,s,p){var v={schema:"iglu:com.snowplowanalytics.snowplow/consent_document/jsonschema/1-0-0",data:k({id:w,version:q,name:r,description:u,})};return m({schema:"iglu:com.snowplowanalytics.snowplow/consent_granted/jsonschema/1-0-0",data:k({expiry:t,})},s?s.concat([v]):[v],p)}}}a.trackerCore=f},{"./payload":10,uuid:12}],10:[function(f,g,c){Object.defineProperty(c,"__esModule",{value:true});var a=f("./base64");function e(j){if(!j){return j}var i=a.base64encode(j);return i.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function d(j){if(!h(j)){return false}for(var i in j){if(j.hasOwnProperty(i)){return true}}return false}c.isNonEmptyJson=d;function h(i){return(typeof i!=="undefined"&&i!==null&&(i.constructor==={}.constructor||i.constructor===[].constructor))}c.isJson=h;function b(j){var m={};var l=function(n,o){if(o!=null&&o!==""){m[n]=o}};var i=function(o){for(var n in o){if(o.hasOwnProperty(n)){l(n,o[n])}}};var k=function(n,o,p){if(d(p)){var q=JSON.stringify(p);if(j){l(n,e(q))}else{l(o,q)}}};return{add:l,addDict:i,addJson:k,build:function(){return m}}}c.payloadBuilder=b},{"./base64":8}],11:[function(b,c,a){(function(i){var e;var h=i.crypto||i.msCrypto;if(h&&h.getRandomValues){var d=new Uint8Array(16);e=function f(){h.getRandomValues(d);return d}}if(!e){var g=new Array(16);e=function(){for(var j=0,k;j<16;j++){if((j&3)===0){k=Math.random()*4294967296}g[j]=k>>>((j&3)<<3)&255}return g}}c.exports=e}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],12:[function(c,b,g){var d=c("./rng");var p=[];var h={};for(var j=0;j<256;j++){p[j]=(j+256).toString(16).substr(1);h[p[j]]=j}function e(w,t,x){var u=(t&&x)||0,v=0;t=t||[];w.toLowerCase().replace(/[0-9a-f]{2}/g,function(i){if(v<16){t[u+v++]=h[i]}});while(v<16){t[u+v++]=0}return t}function l(s,u){var t=u||0,v=p;return v[s[t++]]+v[s[t++]]+v[s[t++]]+v[s[t++]]+"-"+v[s[t++]]+v[s[t++]]+"-"+v[s[t++]]+v[s[t++]]+"-"+v[s[t++]]+v[s[t++]]+"-"+v[s[t++]]+v[s[t++]]+v[s[t++]]+v[s[t++]]+v[s[t++]]+v[s[t++]]}var r=d();var o=[r[0]|1,r[1],r[2],r[3],r[4],r[5]];var f=(r[6]<<8|r[7])&16383;var m=0,k=0;function q(E,u,y){var z=u&&y||0;var A=u||[];E=E||{};var x=E.clockseq!==undefined?E.clockseq:f;var s=E.msecs!==undefined?E.msecs:new Date().getTime();var D=E.nsecs!==undefined?E.nsecs:k+1;var t=(s-m)+(D-k)/10000;if(t<0&&E.clockseq===undefined){x=x+1&16383}if((t<0||s>m)&&E.nsecs===undefined){D=0}if(D>=10000){throw new Error("uuid.v1(): Can't create more than 10M uuids/sec")}m=s;k=D;f=x;s+=12219292800000;var C=((s&268435455)*10000+D)%4294967296;A[z++]=C>>>24&255;A[z++]=C>>>16&255;A[z++]=C>>>8&255;A[z++]=C&255;var B=(s/4294967296*10000)&268435455;A[z++]=B>>>8&255;A[z++]=B&255;A[z++]=B>>>24&15|16;A[z++]=B>>>16&255;A[z++]=x>>>8|128;A[z++]=x&255;var w=E.node||o;for(var v=0;v<6;v++){A[z+v]=w[v]}return u?u:l(A)}function n(t,s,x){var u=s&&x||0;if(typeof(t)=="string"){s=t=="binary"?new Array(16):null;t=null}t=t||{};var w=t.random||(t.rng||d)();w[6]=(w[6]&15)|64;w[8]=(w[8]&63)|128;if(s){for(var v=0;v<16;v++){s[u+v]=w[v]}}return s||l(w)}var a=n;a.v1=q;a.v4=n;a.parse=e;a.unparse=l;b.exports=a},{"./rng":11}],13:[function(d,e,a){var g=d("./lib_managed/lodash"),f=d("./lib/helpers"),c=typeof a!=="undefined"?a:this,b=window;c.errorManager=function(i){function h(o,l,p,n,m,q){var k=(m&&m.stack)?m.stack:null;i.trackSelfDescribingEvent({schema:"iglu:com.snowplowanalytics.snowplow/application_error/jsonschema/1-0-1",data:{programmingLanguage:"JAVASCRIPT",message:o||"JS Exception. Browser doesn't support ErrorEvent API",stackTrace:k,lineNumber:p,lineColumn:n,fileName:l}},q)}function j(n,k,m){var l;if(g.isFunction(m)){l=k.concat(m(n))}else{l=k}h(n.message,n.filename,n.lineno,n.colno,n.error,l)}return{trackError:h,enableErrorTracking:function(k,n,m){function l(o){if(g.isFunction(k)&&k(o)||k==null){j(o,m,n)}}f.addEventListener(b,"error",l,true)}}}},{"./lib/helpers":18,"./lib_managed/lodash":20}],14:[function(c,d,a){var f=c("./lib_managed/lodash"),e=c("./lib/helpers"),b=typeof a!=="undefined"?a:this;b.getFormTrackingManager=function(k,j,m){var q=["textarea","input","select"];var g=j+"form";var r=function(){return true};var i=function(){return true};var p=function(t){return t};function o(t){return t[f.find(["name","id","type","nodeName"],function(u){return t[u]&&typeof t[u]==="string"})]}function s(t){while(t&&t.nodeName&&t.nodeName.toUpperCase()!=="HTML"&&t.nodeName.toUpperCase()!=="FORM"){t=t.parentNode}if(t&&t.nodeName&&t.nodeName.toUpperCase()==="FORM"){return o(t)}}function h(u){var t=[];f.forEach(q,function(v){var w=f.filter(u.getElementsByTagName(v),function(x){return x.hasOwnProperty(g)});f.forEach(w,function(y){if(y.type==="submit"){return}var x={name:o(y),value:y.value,nodeName:y.nodeName};if(y.type&&y.nodeName.toUpperCase()==="INPUT"){x.type=y.type}if((y.type==="checkbox"||y.type==="radio")&&!y.checked){x.value=null}t.push(x)})});return t}function l(t){return function(x){var u=x.target;var v=(u.nodeName&&u.nodeName.toUpperCase()==="INPUT")?u.type:null;var w=(u.type==="checkbox"&&!u.checked)?null:p(u.value);k.trackFormChange(s(u),o(u),u.nodeName,v,e.getCssClasses(u),w,m(t))}}function n(t){return function(w){var v=w.target;var u=h(v);f.forEach(u,function(x){x.value=p(x.value)});k.trackFormSubmission(o(v),e.getCssClasses(v),u,m(t))}}return{configureFormTracking:function(t){if(t){r=e.getFilter(t.forms,true);i=e.getFilter(t.fields,false);p=e.getTransform(t.fields)}},addFormListeners:function(t){f.forEach(document.getElementsByTagName("form"),function(u){if(r(u)&&!u[g]){f.forEach(q,function(v){f.forEach(u.getElementsByTagName(v),function(w){if(i(w)&&!w[g]&&w.type.toLowerCase()!=="password"){e.addEventListener(w,"change",l(t),false);w[g]=true}})});e.addEventListener(u,"submit",n(t));u[g]=true}})}}}},{"./lib/helpers":18,"./lib_managed/lodash":20}],15:[function(b,c,a){(function(){var f=b("./lib_managed/lodash"),e=b("./lib/helpers"),d=typeof a!=="undefined"?a:this;d.InQueueManager=function(g,n,m,j,o){var h={};function q(u){var v=[];if(!u||u.length===0){v=f.map(h)}else{for(var t=0;t<u.length;t++){if(h.hasOwnProperty(u[t])){v.push(h[u[t]])}else{e.warn('Warning: Tracker namespace "'+u[t]+'" not configured')}}}if(v.length===0){e.warn("Warning: No tracker configured")}return v}function k(u,v,t){e.warn(u+" is deprecated. Set the collector when a new tracker instance using newTracker.");var i;if(f.isUndefined(t)){i="sp"}else{i=t}p(i);h[i][u](v)}function p(t,u,i){i=i||{};if(!h.hasOwnProperty(t)){h[t]=new g(o,t,n,m,i);h[t].setCollectorUrl(u)}else{e.warn("Tracker namespace "+t+" already exists.")}}function s(v){var u=v.split(":"),i=u[0],t=(u.length>1)?u[1].split(";"):[];return[i,t]}function r(){var v,u,x,w,t,A,y,z;for(v=0;v<arguments.length;v+=1){w=arguments[v];t=Array.prototype.shift.call(w);if(f.isFunction(t)){t.apply(h,w);continue}A=s(t);x=A[0];y=A[1];if(x==="newTracker"){p(w[0],w[1],w[2]);continue}if((x==="setCollectorCf"||x==="setCollectorUrl")&&(!y||y.length===0)){k(x,w[0],w[1]);continue}z=q(y);for(u=0;u<z.length;u++){z[u][x].apply(z[u],w)}}}for(var l=0;l<j.length;l++){r(j[l])}return{push:r}}}())},{"./lib/helpers":18,"./lib_managed/lodash":20}],16:[function(d,e,b){var g=d("./snowplow"),f,a,c=window;if(c.GlobalSnowplowNamespace&&c.GlobalSnowplowNamespace.length>0){f=c.GlobalSnowplowNamespace.shift();a=c[f];a.q=new g.Snowplow(a.q,f)}else{c._snaq=c._snaq||[];c._snaq=new g.Snowplow(c._snaq,"_snaq")}},{"./snowplow":23}],17:[function(b,c,a){(function(){var l=b("../lib_managed/lodash"),k=b("murmurhash").v3,g=b("jstimezonedetect").jstz.determine(),e=b("browser-cookie-lite"),h=typeof a!=="undefined"?a:this,j=window,d=navigator,i=screen,f=document;h.hasSessionStorage=function(){try{return !!j.sessionStorage}catch(m){return true}};h.hasLocalStorage=function(){try{return !!j.localStorage}catch(m){return true}};h.localStorageAccessible=function(){var m="modernizr";if(!h.hasLocalStorage()){return false}try{j.localStorage.setItem(m,m);j.localStorage.removeItem(m);return true}catch(n){return false}};h.hasCookies=function(m){var n=m||"testcookie";if(l.isUndefined(d.cookieEnabled)){e.cookie(n,"1");return e.cookie(n)==="1"?"1":"0"}return d.cookieEnabled?"1":"0"};h.detectSignature=function(r){var p=[d.userAgent,[i.height,i.width,i.colorDepth].join("x"),(new Date()).getTimezoneOffset(),h.hasSessionStorage(),h.hasLocalStorage()];var m=[];if(d.plugins){for(var q=0;q<d.plugins.length;q++){if(d.plugins[q]){var n=[];for(var o=0;o<d.plugins[q].length;o++){n.push([d.plugins[q][o].type,d.plugins[q][o].suffixes])}m.push([d.plugins[q].name+"::"+d.plugins[q].description,n.join("~")])}}}return k(p.join("###")+"###"+m.sort().join(";"),r)};h.detectTimezone=function(){return(typeof(g)==="undefined")?"":g.name()};h.detectViewport=function(){var p=j,n="inner";if(!("innerWidth" in j)){n="client";p=f.documentElement||f.body}var o=p[n+"Width"];var m=p[n+"Height"];if(o>=0&&m>=0){return o+"x"+m}else{return null}};h.detectDocumentSize=function(){var q=f.documentElement,o=f.body,p=o?Math.max(o.offsetHeight,o.scrollHeight):0;var m=Math.max(q.clientWidth,q.offsetWidth,q.scrollWidth);var n=Math.max(q.clientHeight,q.offsetHeight,q.scrollHeight,p);return isNaN(m)||isNaN(n)?"":m+"x"+n};h.detectBrowserFeatures=function(o,n){var m,q,r={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",dir:"application/x-director",fla:"application/x-shockwave-flash",java:"application/x-java-vm",gears:"application/x-googlegears",ag:"application/x-silverlight"},p={};if(d.mimeTypes&&d.mimeTypes.length){for(m in r){if(Object.prototype.hasOwnProperty.call(r,m)){q=d.mimeTypes[r[m]];p[m]=(q&&q.enabledPlugin)?"1":"0"}}}if(d.constructor===window.Navigator&&typeof d.javaEnabled!=="unknown"&&!l.isUndefined(d.javaEnabled)&&d.javaEnabled()){p.java="1"}if(l.isFunction(j.GearsFactory)){p.gears="1"}p.res=i.width+"x"+i.height;p.cd=i.colorDepth;if(o){p.cookie=h.hasCookies(n)}return p}}())},{"../lib_managed/lodash":20,"browser-cookie-lite":1,jstimezonedetect:4,murmurhash:5}],18:[function(b,c,a){(function(){var g=b("../lib_managed/lodash"),e=b("browser-cookie-lite"),d=typeof a!=="undefined"?a:this;d.fixupTitle=function(i){if(!g.isString(i)){i=i.text||"";var h=document.getElementsByTagName("title");if(h&&!g.isUndefined(h[0])){i=h[0].text}}return i};d.getHostName=function(h){var j=new RegExp("^(?:(?:https?|ftp):)/*(?:[^@]+@)?([^:/#]+)"),i=j.exec(h);return i?i[1]:h};d.fixupDomain=function(i){var h=i.length;if(i.charAt(--h)==="."){i=i.slice(0,h)}if(i.slice(0,2)==="*."){i=i.slice(1)}return i};d.getReferrer=function(j){var i="";var h=d.fromQuerystring("referrer",window.location.href)||d.fromQuerystring("referer",window.location.href);if(h){return h}if(j){return j}try{i=window.top.document.referrer}catch(l){if(window.parent){try{i=window.parent.document.referrer}catch(k){i=""}}}if(i===""){i=document.referrer}return i};d.addEventListener=function(k,j,i,h){if(k.addEventListener){k.addEventListener(j,i,h);return true}if(k.attachEvent){return k.attachEvent("on"+j,i)}k["on"+j]=i};d.fromQuerystring=function(j,i){var h=new RegExp("^[^#]*[?&]"+j+"=([^&#]*)").exec(i);if(!h){return null}return decodeURIComponent(h[1].replace(/\+/g," "))};d.warn=function(h){if(typeof console!=="undefined"){console.warn("Snowplow: "+h)}};d.getCssClasses=function(h){return h.className.match(/\S+/g)||[]};function f(h,l){var k=d.getCssClasses(h),j;for(j=0;j<k.length;j++){if(l[k[j]]){return true}}return false}d.getFilter=function(m,n){if(g.isArray(m)||!g.isObject(m)){return function(){return true}}if(m.hasOwnProperty("filter")){return m.filter}else{var j=m.hasOwnProperty("whitelist");var l=m.whitelist||m.blacklist;if(!g.isArray(l)){l=[l]}var h={};for(var k=0;k<l.length;k++){h[l[k]]=true}if(n){return function(i){return f(i,h)===j}}else{return function(i){return i.name in h===j}}}};d.getTransform=function(h){if(!g.isObject(h)){return function(i){return i}}if(h.hasOwnProperty("transform")){return h.transform}else{return function(i){return i}}return function(i){return i}};d.decorateQuerystring=function(h,j,r){var p=j+"="+r;var o=h.split("#");var k=o[0].split("?");var n=k.shift();var s=k.join("?");if(!s){s=p}else{var l=true;var q=s.split("&");for(var m=0;m<q.length;m++){if(q[m].substr(0,j.length+1)===j+"="){l=false;q[m]=p;s=q.join("&");break}}if(l){s=p+"&"+s}}o[0]=n+"?"+s;return o.join("#")};d.attemptGetLocalStorage=function(h){try{return localStorage.getItem(h)}catch(i){}};d.attemptWriteLocalStorage=function(h,i){try{localStorage.setItem(h,i);return true}catch(j){return false}};d.findRootDomain=function(){var j="_sp_root_domain_test_";var p=j+new Date().getTime();var n="_test_value_"+new Date().getTime();var l=window.location.hostname.split(".");var h=l.length-1;while(h>=0){var m=l.slice(h,l.length).join(".");e.cookie(p,n,0,"/",m);if(e.cookie(p)===n){d.deleteCookie(p,m);var o=d.getCookiesWithPrefix(j);for(var k=0;k<o.length;k++){d.deleteCookie(o[k],m)}return m}h-=1}return window.location.hostname};d.isValueInArray=function(j,k){for(var h=0;h<k.length;h++){if(k[h]===j){return true}}return false};d.deleteCookie=function(i,h){e.cookie(i,"",-1,"/",h)};d.getCookiesWithPrefix=function(h){var k=document.cookie.split("; ");var l=[];for(var j=0;j<k.length;j++){if(k[j].substring(0,h.length)===h){l.push(k[j])}}return l};d.parseInt=function(i){var h=parseInt(i);return isNaN(h)?undefined:h};d.parseFloat=function(i){var h=parseFloat(i);return isNaN(h)?undefined:h}}())},{"../lib_managed/lodash":20,"browser-cookie-lite":1}],19:[function(b,c,a){(function(){var f=b("./helpers"),d=typeof a!=="undefined"?a:this;function h(j){var i=new RegExp("^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$");return i.test(j)}function e(l){var j,i;if(h(l)){try{j=document.body.children[0].children[0].children[0].children[0].children[0].children[0].innerHTML;i="You have reached the cached page for";return j.slice(0,i.length)===i}catch(k){return false}}}function g(k,j){var m=new RegExp("^(?:https?|ftp)(?::/*(?:[^?]+))([?][^#]+)"),l=m.exec(k),i=f.fromQuerystring(j,l[1]);return i}d.fixupUrl=function(k,i,j){if(k==="translate.googleusercontent.com"){if(j===""){j=i}i=g(i,"u");k=f.getHostName(i)}else{if(k==="cc.bingj.com"||k==="webcache.googleusercontent.com"||e(k)){i=document.links[0].href;k=f.getHostName(i)}}return[k,i,j]}}())},{"./helpers":18}],20:[function(b,c,a){(function(d){(function(){var I;var aB="3.10.1";var B="[object Arguments]",aI="[object Array]",aZ="[object Boolean]",D="[object Date]",aS="[object Error]",f="[object Function]",aU="[object Map]",n="[object Number]",l="[object Object]",aa="[object RegExp]",i="[object Set]",C="[object String]",A="[object WeakMap]";var a2="[object ArrayBuffer]",bv="[object Float32Array]",ad="[object Float64Array]",y="[object Int8Array]",aM="[object Int16Array]",H="[object Int32Array]",aY="[object Uint8Array]",ar="[object Uint8ClampedArray]",ax="[object Uint16Array]",u="[object Uint32Array]";var bl=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,w=/^\w*$/,at=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g;var by=/\\(\\)?/g;var aK=/\w*$/;var k=/^\[object .+?Constructor\]$/;var W=/^\d+$/;var bq=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"];var aq={};aq[bv]=aq[ad]=aq[y]=aq[aM]=aq[H]=aq[aY]=aq[ar]=aq[ax]=aq[u]=true;aq[B]=aq[aI]=aq[a2]=aq[aZ]=aq[D]=aq[aS]=aq[f]=aq[aU]=aq[n]=aq[l]=aq[aa]=aq[i]=aq[C]=aq[A]=false;var aw={};aw[B]=aw[aI]=aw[a2]=aw[aZ]=aw[D]=aw[bv]=aw[ad]=aw[y]=aw[aM]=aw[H]=aw[n]=aw[l]=aw[aa]=aw[C]=aw[aY]=aw[ar]=aw[ax]=aw[u]=true;aw[aS]=aw[f]=aw[aU]=aw[i]=aw[A]=false;var aN={"function":true,object:true};var F=aN[typeof a]&&a&&!a.nodeType&&a;var ak=aN[typeof c]&&c&&!c.nodeType&&c;var aT=F&&ak&&typeof d=="object"&&d&&d.Object&&d;var bo=aN[typeof self]&&self&&self.Object&&self;var ab=aN[typeof window]&&window&&window.Object&&window;var bw=ak&&ak.exports===F&&F;var bk=aT||((ab!==(this&&this.window))&&ab)||bo||this;function K(bG,bC,bF){var bE=bG.length,bD=bF?bE:-1;while((bF?bD--:++bD<bE)){if(bC(bG[bD],bD,bG)){return bD}}return -1}function aH(bC){return bC==null?"":(bC+"")}var X=(function(){try{Object({toString:0}+"")}catch(bC){return function(){return false}}return function(bD){return typeof bD.toString!="function"&&typeof(bD+"")=="string"}}());function m(bC){return !!bC&&typeof bC=="object"}var al=Array.prototype,o=Error.prototype,bp=Object.prototype,az=String.prototype;var L=Function.prototype.toString;var aE=bp.hasOwnProperty;var q=bp.toString;var v=RegExp("^"+L.call(aE).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var bg=bk.ArrayBuffer,aD=bp.propertyIsEnumerable,a1=al.splice,Y=bk.Uint8Array;var z=aC(Array,"isArray"),bx=aC(Object,"keys");var ap=9007199254740991;var Q={};Q[bv]=bk.Float32Array;Q[ad]=bk.Float64Array;Q[y]=bk.Int8Array;Q[aM]=bk.Int16Array;Q[H]=bk.Int32Array;Q[aY]=Y;Q[ar]=bk.Uint8ClampedArray;Q[ax]=bk.Uint16Array;Q[u]=bk.Uint32Array;var a3={};a3[aI]=a3[D]=a3[n]={constructor:true,toLocaleString:true,toString:true,valueOf:true};a3[aZ]=a3[C]={constructor:true,toString:true,valueOf:true};a3[aS]=a3[f]=a3[aa]={constructor:true,toString:true};a3[l]={constructor:true};a4(bq,function(bD){for(var bC in a3){if(aE.call(a3,bC)){var bE=a3[bC];bE[bD]=aE.call(bE,bD)}}});function P(){}var bs=P.support={};(function(bC){var bE=function(){this.x=bC},bD={"0":bC,length:bC},bG=[];bE.prototype={valueOf:bC,y:bC};for(var bF in new bE){bG.push(bF)}bs.enumErrorProps=aD.call(o,"message")||aD.call(o,"name");bs.enumPrototypes=aD.call(bE,"prototype");bs.nonEnumShadows=!/valueOf/.test(bG);bs.spliceObjects=(a1.call(bD,0,1),!bD[0]);bs.unindexedChars=("x"[0]+Object("x")[0])!="xx"}(1,0));function s(bE,bF){var bC=-1,bD=bE.length;bF||(bF=Array(bD));while(++bC<bD){bF[bC]=bE[bC]}return bF}function a4(bF,bE){var bC=-1,bD=bF.length;while(++bC<bD){if(bE(bF[bC],bC,bF)===false){break}}return bF}function bB(bI,bD){var bE=-1,bG=bI.length,bF=-1,bC=[];while(++bE<bG){var bH=bI[bE];if(bD(bH,bE,bI)){bC[++bF]=bH}}return bC}function bb(bG,bF){var bD=-1,bE=bG.length,bC=Array(bE);while(++bD<bE){bC[bD]=bF(bG[bD],bD,bG)}return bC}function t(bF,bC){var bD=-1,bE=bF.length;while(++bD<bE){if(bC(bF[bD],bD,bF)){return true}}return false}function a9(bC,bD){return bD==null?bC:aX(bD,Z(bD),bC)}function aX(bH,bF,bD){bD||(bD={});var bC=-1,bG=bF.length;while(++bC<bG){var bE=bF[bC];bD[bE]=bH[bE]}return bD}function E(bE,bC,bF){var bD=typeof bE;if(bD=="function"){return bC===I?bE:R(bE,bC,bF)}if(bE==null){return an}if(bD=="object"){return bm(bE)}return bC===I?aV(bE):aW(bE,bC)}function aQ(bK,bI,bD,bL,bF,bG,bE){var bN;if(bD){bN=bF?bD(bK,bL,bF):bD(bK)}if(bN!==I){return bN}if(!T(bK)){return bK}var bH=h(bK);if(bH){bN=av(bK);if(!bI){return s(bK,bN)}}else{var bM=q.call(bK),bJ=bM==f;if(bM==l||bM==B||(bJ&&!bF)){if(X(bK)){return bF?bK:{}}bN=bz(bJ?{}:bK);if(!bI){return a9(bN,bK)}}else{return aw[bM]?ay(bK,bM,bI):(bF?bK:{})}}bG||(bG=[]);bE||(bE=[]);var bC=bG.length;while(bC--){if(bG[bC]==bK){return bE[bC]}}bG.push(bK);bE.push(bN);(bH?a4:au)(bK,function(bP,bO){bN[bO]=aQ(bP,bI,bD,bO,bK,bG,bE)});return bN}var af=U(au);function M(bE,bD){var bC=[];af(bE,function(bG,bF,bH){if(bD(bG,bF,bH)){bC.push(bG)}});return bC}function ag(bG,bD,bF,bE){var bC;bF(bG,function(bI,bH,bJ){if(bD(bI,bH,bJ)){bC=bE?bH:bI;return false}});return bC}var bf=ah();function au(bC,bD){return bf(bC,bD,Z)}function ae(bE,bG,bC){if(bE==null){return}bE=r(bE);if(bC!==I&&bC in bE){bG=[bC]}var bD=0,bF=bG.length;while(bE!=null&&bD<bF){bE=r(bE)[bG[bD++]]}return(bD&&bD==bF)?bE:I}function bh(bG,bD,bF,bE,bC,bH){if(bG===bD){return true}if(bG==null||bD==null||(!T(bG)&&!m(bD))){return bG!==bG&&bD!==bD}return a8(bG,bD,bh,bF,bE,bC,bH)}function a8(bT,bG,bN,bK,bM,bQ,bO){var bJ=h(bT),bL=h(bG),bE=aI,bR=aI;if(!bJ){bE=q.call(bT);if(bE==B){bE=l}else{if(bE!=l){bJ=N(bT)}}}if(!bL){bR=q.call(bG);if(bR==B){bR=l}else{if(bR!=l){bL=N(bG)}}}var bC=bE==l&&!X(bT),bD=bR==l&&!X(bG),bI=bE==bR;if(bI&&!(bJ||bC)){return O(bT,bG,bE)}if(!bM){var bS=bC&&aE.call(bT,"__wrapped__"),bP=bD&&aE.call(bG,"__wrapped__");if(bS||bP){return bN(bS?bT.value():bT,bP?bG.value():bG,bK,bM,bQ,bO)}}if(!bI){return false}bQ||(bQ=[]);bO||(bO=[]);var bF=bQ.length;while(bF--){if(bQ[bF]==bT){return bO[bF]==bG}}bQ.push(bT);bO.push(bG);var bH=(bJ?bn:bj)(bT,bG,bN,bK,bM,bQ,bO);bQ.pop();bO.pop();return bH}function aG(bG,bK,bF){var bJ=bK.length,bD=bJ,bE=!bF;if(bG==null){return !bD}bG=r(bG);while(bJ--){var bH=bK[bJ];if((bE&&bH[2])?bH[1]!==bG[bH[0]]:!(bH[0] in bG)){return false}}while(++bJ<bD){bH=bK[bJ];var bL=bH[0],bI=bG[bL],bC=bH[1];if(bE&&bH[2]){if(bI===I&&!(bL in bG)){return false}}else{var bM=bF?bF(bI,bC,bL):I;if(!(bM===I?bh(bC,bI,bF,true):bM)){return false}}}return true}function br(bF,bE){var bD=-1,bC=a0(bF)?Array(bF.length):[];af(bF,function(bH,bG,bI){bC[++bD]=bE(bH,bG,bI)});return bC}function bm(bF){var bC=aR(bF);if(bC.length==1&&bC[0][2]){var bD=bC[0][0],bE=bC[0][1];return function(bG){if(bG==null){return false}bG=r(bG);return bG[bD]===bE&&(bE!==I||(bD in bG))}}return function(bG){return aG(bG,bC)}}function aW(bG,bF){var bE=h(bG),bD=bd(bG)&&aF(bF),bC=(bG+"");bG=bi(bG);return function(bH){if(bH==null){return false}var bI=bC;bH=r(bH);if((bE||!bD)&&!(bI in bH)){bH=bG.length==1?bH:ae(bH,aL(bG,0,-1));if(bH==null){return false}bI=am(bG);bH=r(bH)}return bH[bI]===bF?(bF!==I||(bI in bH)):bh(bF,bH[bI],I,true)}}function aP(bC){return function(bD){return bD==null?I:r(bD)[bC]}}function aO(bD){var bC=(bD+"");bD=bi(bD);return function(bE){return ae(bE,bD,bC)}}function aL(bH,bG,bD){var bE=-1,bF=bH.length;bG=bG==null?0:(+bG||0);if(bG<0){bG=-bG>bF?0:(bF+bG)}bD=(bD===I||bD>bF)?bF:(+bD||0);if(bD<0){bD+=bF}bF=bG>bD?0:((bD-bG)>>>0);bG>>>=0;var bC=Array(bF);while(++bE<bF){bC[bE]=bH[bE+bG]}return bC}function R(bD,bC,bE){if(typeof bD!="function"){return an}if(bC===I){return bD}switch(bE){case 1:return function(bF){return bD.call(bC,bF)};case 3:return function(bG,bF,bH){return bD.call(bC,bG,bF,bH)};case 4:return function(bF,bH,bG,bI){return bD.call(bC,bF,bH,bG,bI)};case 5:return function(bJ,bF,bH,bG,bI){return bD.call(bC,bJ,bF,bH,bG,bI)}}return function(){return bD.apply(bC,arguments)}}function p(bE){var bC=new bg(bE.byteLength),bD=new Y(bC);bD.set(new Y(bE));return bC}function U(bD,bC){return function(bI,bH){var bF=bI?a7(bI):0;if(!aA(bF)){return bD(bI,bH)}var bE=bC?bF:-1,bG=r(bI);while((bC?bE--:++bE<bF)){if(bH(bG[bE],bE,bG)===false){break}}return bI}}function ah(bC){return function(bE,bK,bI){var bJ=r(bE),bG=bI(bE),bH=bG.length,bD=bC?bH:-1;while((bC?bD--:++bD<bH)){var bF=bG[bD];if(bK(bJ[bF],bF,bJ)===false){break}}return bE}}function be(bD,bC){return function(bH,bE,bF){bE=ba(bE,bF,3);if(h(bH)){var bG=K(bH,bE,bC);return bG>-1?bH[bG]:I}return ag(bH,bE,bD)}}function ac(bC,bD){return function(bG,bF,bE){return(typeof bF=="function"&&bE===I&&h(bG))?bC(bG,bF):bD(bG,R(bF,bE,3))}}function bu(bC){return function(bF,bG,bE){var bD={};bG=ba(bG,bE,3);au(bF,function(bK,bJ,bI){var bH=bG(bK,bJ,bI);bJ=bC?bH:bJ;bK=bC?bK:bH;bD[bJ]=bK});return bD}}function bn(bJ,bK,bN,bD,bF,bG,bE){var bI=-1,bL=bJ.length,bM=bK.length;if(bL!=bM&&!(bF&&bM>bL)){return false}while(++bI<bL){var bC=bJ[bI],bH=bK[bI],bO=bD?bD(bF?bH:bC,bF?bC:bH,bI):I;if(bO!==I){if(bO){continue}return false}if(bF){if(!t(bK,function(bP){return bC===bP||bN(bC,bP,bD,bF,bG,bE)})){return false}}else{if(!(bC===bH||bN(bC,bH,bD,bF,bG,bE))){return false}}}return true}function O(bE,bD,bC){switch(bC){case aZ:case D:return +bE==+bD;case aS:return bE.name==bD.name&&bE.message==bD.message;case n:return(bE!=+bE)?bD!=+bD:bE==+bD;case aa:case C:return bE==(bD+"")}return false}function bj(bS,bE,bP,bK,bM,bR,bQ){var bH=Z(bS),bJ=bH.length,bI=Z(bE),bN=bI.length;if(bJ!=bN&&!bM){return false}var bF=bJ;while(bF--){var bT=bH[bF];if(!(bM?bT in bE:aE.call(bE,bT))){return false}}var bC=bM;while(++bF<bJ){bT=bH[bF];var bU=bS[bT],bD=bE[bT],bG=bK?bK(bM?bD:bU,bM?bU:bD,bT):I;if(!(bG===I?bP(bU,bD,bK,bM,bR,bQ):bG)){return false}bC||(bC=bT=="constructor")}if(!bC){var bL=bS.constructor,bO=bE.constructor;if(bL!=bO&&("constructor" in bS&&"constructor" in bE)&&!(typeof bL=="function"&&bL instanceof bL&&typeof bO=="function"&&bO instanceof bO)){return false}}return true}function ba(bE,bD,bF){var bC=P.callback||V;bC=bC===V?E:bC;return bF?bC(bE,bD,bF):bC}var a7=aP("length");function aR(bD){var bC=g(bD),bE=bC.length;while(bE--){bC[bE][2]=aF(bC[bE][1])}return bC}function aC(bC,bD){var bE=bC==null?I:bC[bD];return aj(bE)?bE:I}function av(bE){var bD=bE.length,bC=new bE.constructor(bD);if(bD&&typeof bE[0]=="string"&&aE.call(bE,"index")){bC.index=bE.index;bC.input=bE.input}return bC}function bz(bD){var bC=bD.constructor;if(!(typeof bC=="function"&&bC instanceof bC)){bC=Object}return new bC}function ay(bH,bD,bF){var bG=bH.constructor;switch(bD){case a2:return p(bH);case aZ:case D:return new bG(+bH);case bv:case ad:case y:case aM:case H:case aY:case ar:case ax:case u:if(bG instanceof bG){bG=Q[bD]}var bE=bH.buffer;return new bG(bF?p(bE):bE,bH.byteOffset,bH.length);case n:case C:return new bG(bH);case aa:var bC=new bG(bH.source,aK.exec(bH));bC.lastIndex=bH.lastIndex}return bC}function a0(bC){return bC!=null&&aA(a7(bC))}function G(bD,bC){bD=(typeof bD=="number"||W.test(bD))?+bD:-1;bC=bC==null?ap:bC;return bD>-1&&bD%1==0&&bD<bC}function e(bG,bE,bD){if(!T(bD)){return false}var bF=typeof bE;if(bF=="number"?(a0(bD)&&G(bE,bD.length)):(bF=="string"&&bE in bD)){var bC=bD[bE];return bG===bG?(bG===bC):(bC!==bC)}return false}function bd(bF,bD){var bE=typeof bF;if((bE=="string"&&w.test(bF))||bE=="number"){return true}if(h(bF)){return false}var bC=!bl.test(bF);return bC||(bD!=null&&bF in r(bD))}function aA(bC){return typeof bC=="number"&&bC>-1&&bC%1==0&&bC<=ap}function aF(bC){return bC===bC&&!T(bC)}function ao(bF){var bI=a5(bF),bH=bI.length,bJ=bH&&bF.length;var bD=!!bJ&&aA(bJ)&&(h(bF)||j(bF)||bt(bF));var bE=-1,bC=[];while(++bE<bH){var bG=bI[bE];if((bD&&G(bG,bJ))||aE.call(bF,bG)){bC.push(bG)}}return bC}function r(bF){if(P.support.unindexedChars&&bt(bF)){var bD=-1,bE=bF.length,bC=Object(bF);while(++bD<bE){bC[bD]=bF.charAt(bD)}return bC}return T(bF)?bF:Object(bF)}function bi(bD){if(h(bD)){return bD}var bC=[];aH(bD).replace(at,function(bG,bH,bE,bF){bC.push(bE?bF.replace(by,"$1"):(bH||bG))});return bC}function am(bD){var bC=bD?bD.length:0;return bC?bD[bC-1]:I}function S(bF,bC,bD){var bE=h(bF)?bB:M;bC=ba(bC,bD,3);return bE(bF,bC)}var bA=be(af);var a6=ac(a4,af);function J(bF,bE,bC){var bD=h(bF)?bb:br;bE=ba(bE,bC,3);return bD(bF,bE)}function j(bC){return m(bC)&&a0(bC)&&aE.call(bC,"callee")&&!aD.call(bC,"callee")}var h=z||function(bC){return m(bC)&&aA(bC.length)&&q.call(bC)==aI};function bc(bC){return T(bC)&&q.call(bC)==f}function T(bD){var bC=typeof bD;return !!bD&&(bC=="object"||bC=="function")}function aj(bC){if(bC==null){return false}if(bc(bC)){return v.test(L.call(bC))}return m(bC)&&(X(bC)?v:k).test(bC)}function bt(bC){return typeof bC=="string"||(m(bC)&&q.call(bC)==C)}function N(bC){return m(bC)&&aA(bC.length)&&!!aq[q.call(bC)]}function ai(bC){return bC===I}var Z=!bx?ao:function(bD){var bC=bD==null?I:bD.constructor;if((typeof bC=="function"&&bC.prototype===bD)||(typeof bD=="function"?P.support.enumPrototypes:a0(bD))){return ao(bD)}return T(bD)?bx(bD):[]};function a5(bE){if(bE==null){return[]}if(!T(bE)){bE=Object(bE)}var bC=bE.length,bM=P.support;bC=(bC&&aA(bC)&&(h(bE)||j(bE)||bt(bE))&&bC)||0;var bD=bE.constructor,bJ=-1,bG=(bc(bD)&&bD.prototype)||bp,bF=bG===bE,bQ=Array(bC),bI=bC>0,bK=bM.enumErrorProps&&(bE===o||bE instanceof Error),bP=bM.enumPrototypes&&bc(bE);while(++bJ<bC){bQ[bJ]=(bJ+"")}for(var bL in bE){if(!(bP&&bL=="prototype")&&!(bK&&(bL=="message"||bL=="name"))&&!(bI&&G(bL,bC))&&!(bL=="constructor"&&(bF||!aE.call(bE,bL)))){bQ.push(bL)}}if(bM.nonEnumShadows&&bE!==bp){var bO=bE===az?C:(bE===o?aS:q.call(bE)),bN=a3[bO]||a3[l];if(bO==l){bG=bp}bC=bq.length;while(bC--){bL=bq[bC];var bH=bN[bL];if(!(bF&&bH)&&(bH?aE.call(bE,bL):bE[bL]!==bG[bL])){bQ.push(bL)}}}return bQ}var aJ=bu();function g(bE){bE=r(bE);var bD=-1,bG=Z(bE),bH=bG.length,bC=Array(bH);while(++bD<bH){var bF=bG[bD];bC[bD]=[bF,bE[bF]]}return bC}function V(bE,bC,bD){if(bD&&e(bE,bC,bD)){bC=I}return m(bE)?x(bE):E(bE,bC)}function an(bC){return bC}function x(bC){return bm(aQ(bC,true))}function aV(bC){return bd(bC)?aP(bC):aO(bC)}P.callback=V;P.filter=S;P.forEach=a6;P.keys=Z;P.keysIn=a5;P.map=J;P.mapValues=aJ;P.matches=x;P.pairs=g;P.property=aV;P.collect=J;P.each=a6;P.iteratee=V;P.select=S;P.find=bA;P.identity=an;P.isArguments=j;P.isArray=h;P.isFunction=bc;P.isNative=aj;P.isObject=T;P.isString=bt;P.isTypedArray=N;P.isUndefined=ai;P.last=am;P.detect=bA;P.VERSION=aB;if(F&&ak){if(bw){(ak.exports=P)._=P}}}.call(this))}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],21:[function(c,d,a){var f=c("./lib_managed/lodash"),e=c("./lib/helpers"),b=typeof a!=="undefined"?a:this;b.getLinkTrackingManager=function(m,i,p){var h,g,l,q,k,n;function r(u,t){var B,D,z,A,y,C;while((B=u.parentNode)!==null&&!f.isUndefined(B)&&((D=u.tagName.toUpperCase())!=="A"&&D!=="AREA")){u=B}if(!f.isUndefined(u.href)){var x=u.hostname||e.getHostName(u.href),v=x.toLowerCase(),s=u.href.replace(x,v),w=new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mailto):","i");if(!w.test(s)){z=u.id;A=e.getCssClasses(u);y=u.target;C=l?u.innerHTML:null;s=unescape(s);m.trackLinkClick(s,z,A,y,C,p(t))}}}function o(s){return function(t){var u,v;t=t||window.event;u=t.which||t.button;v=t.target||t.srcElement;if(t.type==="click"){if(v){r(v,s)}}else{if(t.type==="mousedown"){if((u===1||u===2)&&v){k=u;n=v}else{k=n=null}}else{if(t.type==="mouseup"){if(u===k&&v===n){r(v,s)}k=n=null}}}}}function j(s){if(g){e.addEventListener(s,"mouseup",o(q),false);e.addEventListener(s,"mousedown",o(q),false)}else{e.addEventListener(s,"click",o(q),false)}}return{configureLinkClickTracking:function(u,s,v,t){l=v;q=t;g=s;h=e.getFilter(u,true)},addClickListeners:function(){var t=document.links,s;for(s=0;s<t.length;s++){if(h(t[s])&&!t[s][i]){j(t[s]);t[s][i]=true}}}}}},{"./lib/helpers":18,"./lib_managed/lodash":20}],22:[function(b,c,a){(function(){var g=b("./lib_managed/lodash"),e=b("./lib/detectors").localStorageAccessible,f=b("./lib/helpers"),d=typeof a!=="undefined"?a:this;d.OutQueueManager=function(x,q,s,z,w,m,j){var k,h=false,v,i;w=w&&window.XMLHttpRequest&&("withCredentials" in new XMLHttpRequest());var r=w?"/com.snowplowanalytics.snowplow/tp2":"/i";m=(e()&&z&&w&&m)||1;k=["snowplowOutQueue",x,q,w?"post2":"get"].join("_");if(z){try{i=JSON.parse(localStorage.getItem(k))}catch(u){}}if(!g.isArray(i)){i=[]}s.outQueues.push(i);if(w&&m>1){s.bufferFlushers.push(function(){if(!h){y()}})}function o(H){var D="?",E={co:true,cx:true},C=true;for(var G in H){if(H.hasOwnProperty(G)&&!(E.hasOwnProperty(G))){if(!C){D+="&"}else{C=false}D+=encodeURIComponent(G)+"="+encodeURIComponent(H[G])}}for(var F in E){if(H.hasOwnProperty(F)&&E.hasOwnProperty(F)){D+="&"+F+"="+encodeURIComponent(H[F])}}return D}function A(C){var D=g.mapValues(C,function(E){return E.toString()});return{evt:D,bytes:B(JSON.stringify(D))}}function B(E){var C=0;for(var D=0;D<E.length;D++){var F=E.charCodeAt(D);if(F<=127){C+=1}else{if(F<=2047){C+=2}else{if(F>=55296&&F<=57343){C+=4;D++}else{if(F<65535){C+=3}else{C+=4}}}}}return C}function t(F,E){v=E+r;if(w){var C=A(F);if(C.bytes>=j){f.warn("Event of size "+C.bytes+" is too long - the maximum size is "+j);var G=n(v);G.send(p(l([C.evt])));return}else{i.push(C)}}else{i.push(o(F))}var D=false;if(z){D=f.attemptWriteLocalStorage(k,JSON.stringify(i))}if(!h&&(!D||i.length>=m)){y()}}function y(){while(i.length&&typeof i[0]!=="string"&&typeof i[0]!=="object"){i.shift()}if(i.length<1){h=false;return}if(!g.isString(v)){throw"No Snowplow collector configured, cannot track"}h=true;var G=i[0];if(w){var H=n(v);var C=setTimeout(function(){H.abort();h=false},5000);function D(J){var L=0;var K=0;while(L<J.length){K+=J[L].bytes;if(K>=j){break}else{L+=1}}return L}var I=D(i);H.onreadystatechange=function(){if(H.readyState===4&&H.status>=200&&H.status<400){for(var J=0;J<I;J++){i.shift()}if(z){f.attemptWriteLocalStorage(k,JSON.stringify(i))}clearTimeout(C);y()}else{if(H.readyState===4&&H.status>=400){clearTimeout(C);h=false}}};var E=g.map(i.slice(0,I),function(J){return J.evt});if(E.length>0){H.send(p(l(E)))}}else{var F=new Image(1,1);F.onload=function(){i.shift();if(z){f.attemptWriteLocalStorage(k,JSON.stringify(i))}y()};F.onerror=function(){h=false};F.src=v+G.replace("?","?stm="+new Date().getTime()+"&")}}function n(C){var D=new XMLHttpRequest();D.open("POST",C,true);D.withCredentials=true;D.setRequestHeader("Content-Type","application/json; charset=UTF-8");return D}function p(C){return JSON.stringify({schema:"iglu:com.snowplowanalytics.snowplow/payload_data/jsonschema/1-0-4",data:C})}function l(E){var C=new Date().getTime().toString();for(var D=0;D<E.length;D++){E[D]["stm"]=C}return E}return{enqueueRequest:t,executeQueue:y}}}())},{"./lib/detectors":17,"./lib/helpers":18,"./lib_managed/lodash":20}],23:[function(b,c,a){(function(){var f=b("uuid"),i=b("./lib_managed/lodash"),h=b("./lib/helpers"),d=b("./in_queue"),g=b("./tracker"),e=typeof a!=="undefined"?a:this;e.Snowplow=function(l,q){var k=document,m=window,o="js-2.9.2",n={outQueues:[],bufferFlushers:[],expireDateTime:null,hasLoaded:false,registeredOnLoadHandlers:[],pageViewId:null};function p(){var s;i.forEach(n.bufferFlushers,function(t){t()});if(n.expireDateTime){do{s=new Date();if(i.filter(n.outQueues,function(t){return t.length>0}).length===0){break}}while(s.getTime()<n.expireDateTime)}}function r(){var s;if(!n.hasLoaded){n.hasLoaded=true;for(s=0;s<n.registeredOnLoadHandlers.length;s++){n.registeredOnLoadHandlers[s]()}}return true}function j(){var t;if(k.addEventListener){h.addEventListener(k,"DOMContentLoaded",function s(){k.removeEventListener("DOMContentLoaded",s,false);r()})}else{if(k.attachEvent){k.attachEvent("onreadystatechange",function s(){if(k.readyState==="complete"){k.detachEvent("onreadystatechange",s);r()}});if(k.documentElement.doScroll&&m===m.top){(function s(){if(!n.hasLoaded){try{k.documentElement.doScroll("left")}catch(u){setTimeout(s,0);return}r()}}())}}}if((new RegExp("WebKit")).test(navigator.userAgent)){t=setInterval(function(){if(n.hasLoaded||/loaded|complete/.test(k.readyState)){clearInterval(t);r()}},10)}h.addEventListener(m,"load",r,false)}m.Snowplow={getTrackerCf:function(u){var s=new g.Tracker(q,"",o,n,{});s.setCollectorCf(u);return s},getTrackerUrl:function(s){var u=new g.Tracker(q,"",o,n,{});u.setCollectorUrl(s);return u},getAsyncTracker:function(){return new g.Tracker(q,"",o,n,{})}};h.addEventListener(m,"beforeunload",p,false);j();return new d.InQueueManager(g.Tracker,o,n,l,q)}}())},{"./in_queue":15,"./lib/helpers":18,"./lib_managed/lodash":20,"./tracker":24,uuid:12}],24:[function(b,c,a){(function(){var q=b("./lib_managed/lodash"),f=b("./lib/helpers"),i=b("./lib/proxies"),g=b("browser-cookie-lite"),n=b("./lib/detectors"),m=b("sha1"),p=b("./links"),e=b("./forms"),o=b("./errors"),k=b("./out_queue"),l=b("snowplow-tracker-core").trackerCore,d=b("uuid"),h=typeof a!=="undefined"?a:this;h.Tracker=function j(bw,a3,U,C,aJ){var z=l(true,function(bF){N(bF);an(bF,aS)}),ax=document,al=window,W=navigator,v=i.fixupUrl(ax.domain,al.location.href,f.getReferrer()),bf=f.fixupDomain(v[0]),bv=v[1],aW=v[2],bE,ao,aJ=aJ||{},aU="GET",L=aJ.hasOwnProperty("platform")?aJ.platform:"web",x,bi=aJ.hasOwnProperty("appId")?aJ.appId:"",aD,a0=ax.title,D,aS=aJ.hasOwnProperty("pageUnloadTimer")?aJ.pageUnloadTimer:500,P=false,F,V,G,bs=aJ.hasOwnProperty("cookieName")?aJ.cookieName:"_sp_",I=aJ.hasOwnProperty("cookieDomain")?aJ.cookieDomain:null,bt="/",ac=W.doNotTrack||W.msDoNotTrack||al.doNotTrack,bm=aJ.hasOwnProperty("respectDoNotTrack")?aJ.respectDoNotTrack&&(ac==="yes"||ac==="1"):false,av,ar,M=aJ.hasOwnProperty("cookieLifetime")?aJ.cookieLifetime:63072000,R=aJ.hasOwnProperty("sessionCookieTimeout")?aJ.sessionCookieTimeout:1800,X=aJ.hasOwnProperty("userFingerprintSeed")?aJ.userFingerprintSeed:123412414,bk=ax.characterSet||ax.charset,a4=aJ.hasOwnProperty("forceSecureTracker")?(aJ.forceSecureTracker===true):false,ag=!a4&&aJ.hasOwnProperty("forceUnsecureTracker")?(aJ.forceUnsecureTracker===true):false,aq=aJ.hasOwnProperty("useLocalStorage")?(f.warn("argmap.useLocalStorage is deprecated. Use argmap.stateStorageStrategy instead."),aJ.useLocalStorage):true,aM=aJ.hasOwnProperty("useCookies")?(f.warn("argmap.useCookies is deprecated. Use argmap.stateStorageStrategy instead."),aJ.useCookies):true,aY=aJ.hasOwnProperty("stateStorageStrategy")?aJ.stateStorageStrategy:(!aM&&!aq?"none":(aM&&aq?"cookieAndLocalStorage":(aM?"cookie":"localStorage"))),K=W.userLanguage||W.language,bj=n.detectBrowserFeatures(aY=="cookie"||aY=="cookieAndLocalStorage",Q("testcookie")),y=(aJ.userFingerprint===false)?"":n.detectSignature(X),O=bw+"_"+a3,aZ=false,aV,br=new Date().getTime(),aQ,aE,ay,af,ak=m,a1,at,ab,aa=1,bD,E=bc(),u=p.getLinkTrackingManager(z,O,bp),az=e.getFormTrackingManager(z,O,bp),aT=o.errorManager(z),bo=new k.OutQueueManager(bw,a3,C,aY=="localStorage"||aY=="cookieAndLocalStorage",aJ.post,aJ.bufferSize,aJ.maxPostBytes||40000),a9=false,bx=aJ.contexts||{},bz=[],t=[],aL=false,J=false;if(aJ.hasOwnProperty("discoverRootDomain")&&aJ.discoverRootDomain){I=f.findRootDomain()}if(bx.gaCookies){bz.push(H())}if(bx.geolocation){bu()}z.setBase64Encoding(aJ.hasOwnProperty("encodeBase64")?aJ.encodeBase64:true);z.setTrackerVersion(U);z.setTrackerNamespace(a3);z.setAppId(bi);z.setPlatform(L);z.setTimezone(n.detectTimezone());z.addPayloadPair("lang",K);z.addPayloadPair("cs",bk);for(var ai in bj){if(Object.prototype.hasOwnProperty.call(bj,ai)){if(ai==="res"||ai==="cd"||ai==="cookie"){z.addPayloadPair(ai,bj[ai])}else{z.addPayloadPair("f_"+ai,bj[ai])}}}function bB(){v=i.fixupUrl(ax.domain,al.location.href,f.getReferrer());if(v[1]!==bv){aW=f.getReferrer(bv)}bf=f.fixupDomain(v[0]);bv=v[1]}function au(){var bF=new Date().getTime();if(this.href){this.href=f.decorateQuerystring(this.href,"_sp",at+"."+bF)}}function w(bH){for(var bG=0;bG<ax.links.length;bG++){var bF=ax.links[bG];if(!bF.spDecorationEnabled&&bH(bF)){f.addEventListener(bF,"click",au,true);f.addEventListener(bF,"mousedown",au,true);bF.spDecorationEnabled=true}}}function bc(){return{transaction:{},items:[]}}function bn(bF){var bG;if(G){bG=new RegExp("#.*");return bF.replace(bG,"")}return bF}function by(bF){var bH=new RegExp("^([a-z]+):"),bG=bH.exec(bF);return bG?bG[1]:null}function be(bH,bF){var bI=by(bF),bG;if(bI){return bF}if(bF.slice(0,1)==="/"){return by(bH)+"://"+f.getHostName(bH)+bF}bH=bn(bH);if((bG=bH.indexOf("?"))>=0){bH=bH.slice(0,bG)}if((bG=bH.lastIndexOf("/"))!==bH.length-1){bH=bH.slice(0,bG+1)}return bH+bF}function an(bH,bG){var bF=new Date();var bI=!!g.cookie(av);if(!(bm||bI)){bo.enqueueRequest(bH.build(),x);C.expireDateTime=bF.getTime()+bG}}function Q(bF){return bs+bF+"."+a1}function ap(bG){var bF=Q(bG);if(aY=="localStorage"){return f.attemptGetLocalStorage(bF)}else{if(aY=="cookie"||aY=="cookieAndLocalStorage"){return g.cookie(bF)}}}function aO(){bB();a1=ak((I||bf)+(bt||"/")).slice(0,4)}function bg(){var bF=new Date();aV=bF.getTime()}function a6(){aB();bg()}function aH(){var bF=(ax.compatMode&&ax.compatMode!=="BackCompat")?ax.documentElement:ax.body;return[bF.scrollLeft||al.pageXOffset,bF.scrollTop||al.pageYOffset]}function aN(){var bG=aH();var bF=bG[0];aQ=bF;aE=bF;var bH=bG[1];ay=bH;af=bH}function aB(){var bG=aH();var bF=bG[0];if(bF<aQ){aQ=bF}else{if(bF>aE){aE=bF}}var bH=bG[1];if(bH<ay){ay=bH}else{if(bH>af){af=bH}}}function Y(bG){var bF=Math.round(bG);if(!isNaN(bF)){return bF}}function aw(){var bG=Q("ses");var bF="*";ba(bG,bF,R)}function bq(bH,bG,bF,bJ,bI,bL){var bM=Q("id");var bK=bH+"."+bG+"."+bF+"."+bJ+"."+bI+"."+bL;ba(bM,bK,M)}function ba(bF,bH,bG){if(aY=="localStorage"){f.attemptWriteLocalStorage(bF,bH)}else{if(aY=="cookie"||aY=="cookieAndLocalStorage"){g.cookie(bF,bH,bG,bt,I)}}}function aP(){return d.v4()}function B(){var bG=aY!="none"&&!!ap("ses");var bF=a8();if(bF[1]){at=bF[1]}else{at=aP();bF[1]=at}ab=bF[6];if(!bG){bF[3]++;ab=d.v4();bF[6]=ab;bF[5]=bF[4]}if(aY!="none"){aw();bF[4]=Math.round(new Date().getTime()/1000);bF.shift();bq.apply(null,bF)}}function a8(){if(aY=="none"){return[]}var bG=new Date(),bF=Math.round(bG.getTime()/1000),bI=ap("id"),bH;if(bI){bH=bI.split(".");bH.unshift("0")}else{bH=["1",at,bF,0,bF,""]}if(!bH[6]){bH[6]=d.v4()}return bH}function N(bM){var bH=Math.round(new Date().getTime()/1000),bK=Q("id"),bJ=Q("ses"),bO=ap("ses"),bG=a8(),bP=bG[0],bN=bG[1],bS=bG[2],bI=bG[3],bR=bG[4],bF=bG[5],bL=bG[6];var bQ=!!g.cookie(av);if((bm||bQ)&&aY!="none"){if(aY=="localStorage"){f.attemptWriteLocalStorage(bK,"");f.attemptWriteLocalStorage(sesName,"")}else{if(aY=="cookie"||aY=="cookieAndLocalStorage"){g.cookie(bK,"",-1,bt,I);g.cookie(bJ,"",-1,bt,I)}}return}if(bP==="0"){ab=bL;if(!bO&&aY!="none"){bI++;bF=bR;ab=d.v4()}aa=bI}else{if((new Date().getTime()-br)>R*1000){ab=d.v4();aa++}}bM.add("vp",n.detectViewport());bM.add("ds",n.detectDocumentSize());bM.add("vid",aa);bM.add("sid",ab);bM.add("duid",bN);bM.add("fp",y);bM.add("uid",bD);bB();bM.add("refr",bn(ao||aW));bM.add("url",bn(aD||bv));if(aY!="none"){bq(bN,bS,aa,bH,bF,ab);aw()}br=new Date().getTime()}function am(bF){return bd(bF+".cloudfront.net")}function bd(bF){if(a4){return("https://"+bF)}if(ag){return("http://"+bF)}return("https:"===ax.location.protocol?"https":"http")+"://"+bF}function bp(bM){var bJ=bz.concat(bM||[]);if(bx.webPage){bJ.push(bh())}if(bx.performanceTiming){var bO=S();if(bO){bJ.push(bO)}}if(al.optimizely){if(bx.optimizelySummary){var bL=aj();q.each(bL,function(bS){bJ.push(bS)})}if(bx.optimizelyXSummary){var bL=a2();q.each(bL,function(bS){bJ.push(bS)})}if(bx.optimizelyExperiments){var bF=ah();for(var bK=0;bK<bF.length;bK++){bJ.push(bF[bK])}}if(bx.optimizelyStates){var bQ=r();for(var bK=0;bK<bQ.length;bK++){bJ.push(bQ[bK])}}if(bx.optimizelyVariations){var bR=bA();for(var bK=0;bK<bR.length;bK++){bJ.push(bR[bK])}}if(bx.optimizelyVisitor){var bI=a7();if(bI){bJ.push(bI)}}if(bx.optimizelyAudiences){var bG=T();for(var bK=0;bK<bG.length;bK++){bJ.push(bG[bK])}}if(bx.optimizelyDimensions){var bH=aX();for(var bK=0;bK<bH.length;bK++){bJ.push(bH[bK])}}}if(bx.augurIdentityLite){var bP=aG();if(bP){bJ.push(bP)}}if(bx.parrable){var bN=bC();if(bN){bJ.push(bN)}}return bJ}function aA(){if(!aL||C.pageViewId==null){C.pageViewId=d.v4()}}function aC(){if(C.pageViewId==null){C.pageViewId=d.v4()}return C.pageViewId}function bh(){return{schema:"iglu:com.snowplowanalytics.snowplow/web_page/jsonschema/1-0-0",data:{id:aC()}}}function S(){var bF=["navigationStart","redirectStart","redirectEnd","fetchStart","domainLookupStart","domainLookupEnd","connectStart","secureConnectionStart","connectEnd","requestStart","responseStart","responseEnd","unloadEventStart","unloadEventEnd","domLoading","domInteractive","domContentLoadedEventStart","domContentLoadedEventEnd","domComplete","loadEventStart","loadEventEnd","msFirstPaint","chromeFirstPaint","requestEnd","proxyStart","proxyEnd"];var bI=al.performance||al.mozPerformance||al.msPerformance||al.webkitPerformance;if(bI){var bH={};for(var bG in bI.timing){if(f.isValueInArray(bG,bF)&&(bI.timing[bG]!==null)){bH[bG]=bI.timing[bG]}}delete bH.requestEnd;if(al.chrome&&al.chrome.loadTimes&&typeof al.chrome.loadTimes().firstPaintTime==="number"){bH.chromeFirstPaint=Math.round(al.chrome.loadTimes().firstPaintTime*1000)}return{schema:"iglu:org.w3/PerformanceTiming/jsonschema/1-0-0",data:bH}}}function A(bH,bF){var bG;if(al.optimizely&&al.optimizely.data){bG=al.optimizely.data[bH];if(typeof bF!=="undefined"&&bG!==undefined){bG=bG[bF]}}return bG}function aI(bH,bF){var bG;if(al.optimizely){bG=al.optimizely.get(bH);if(typeof bF!=="undefined"&&bG!==undefined){bG=bG[bF]}}return bG}function bb(){var bG=A("state");var bF=A("experiments");return q.map(bG&&bF&&bG.activeExperiments,function(bH){var bI=bF[bH];return{activeExperimentId:bH.toString(),variation:bG.variationIdsMap[bH][0].toString(),conditional:bI&&bI.conditional,manual:bI&&bI.manual,name:bI&&bI.name}})}function Z(){var bI=aI("state");var bH=bI.getActiveExperimentIds();var bF=aI("data","experiments");var bG=aI("visitor");return q.map(bH,function(bJ){variation=bI.getVariationMap()[bJ];variationName=variation.name;variationId=variation.id;visitorId=bG.visitorId;return{experimentId:parseInt(bJ),variationName:variationName,variation:parseInt(variationId),visitorId:visitorId}})}function ah(){var bI=A("experiments");if(bI){var bJ=[];for(var bH in bI){if(bI.hasOwnProperty(bH)){var bG={};bG.id=bH;var bF=bI[bH];bG.code=bF.code;bG.manual=bF.manual;bG.conditional=bF.conditional;bG.name=bF.name;bG.variationIds=bF.variation_ids;bJ.push({schema:"iglu:com.optimizely/experiment/jsonschema/1-0-0",data:bG})}}return bJ}return[]}function r(){var bG=[];var bQ=A("experiments");if(bQ){for(var bO in bQ){if(bQ.hasOwnProperty(bO)){bG.push(bO)}}}var bH=A("state");if(bH){var bJ=[];var bL=bH.activeExperiments||[];for(var bK=0;bK<bG.length;bK++){var bM=bG[bK];var bI={};bI.experimentId=bM;bI.isActive=f.isValueInArray(bG[bK],bL);var bP=bH.variationMap||{};bI.variationIndex=bP[bM];var bF=bH.variationNamesMap||{};bI.variationName=bF[bM];var bN=bH.variationIdsMap||{};if(bN[bM]&&bN[bM].length===1){bI.variationId=bN[bM][0]}bJ.push({schema:"iglu:com.optimizely/state/jsonschema/1-0-0",data:bI})}return bJ}return[]}function bA(){var bI=A("variations");if(bI){var bJ=[];for(var bH in bI){if(bI.hasOwnProperty(bH)){var bG={};bG.id=bH;var bF=bI[bH];bG.name=bF.name;bG.code=bF.code;bJ.push({schema:"iglu:com.optimizely/variation/jsonschema/1-0-0",data:bG})}}return bJ}return[]}function a7(){var bI=A("visitor");if(bI){var bH={};bH.browser=bI.browser;bH.browserVersion=bI.browserVersion;bH.device=bI.device;bH.deviceType=bI.deviceType;bH.ip=bI.ip;var bF=bI.platform||{};bH.platformId=bF.id;bH.platformVersion=bF.version;var bG=bI.location||{};bH.locationCity=bG.city;bH.locationRegion=bG.region;bH.locationCountry=bG.country;bH.mobile=bI.mobile;bH.mobileId=bI.mobileId;bH.referrer=bI.referrer;bH.os=bI.os;return{schema:"iglu:com.optimizely/visitor/jsonschema/1-0-0",data:bH}}}function T(){var bI=A("visitor","audiences");if(bI){var bH=[];for(var bG in bI){if(bI.hasOwnProperty(bG)){var bF={id:bG,isMember:bI[bG]};bH.push({schema:"iglu:com.optimizely/visitor_audience/jsonschema/1-0-0",data:bF})}}return bH}return[]}function aX(){var bF=A("visitor","dimensions");if(bF){var bI=[];for(var bH in bF){if(bF.hasOwnProperty(bH)){var bG={id:bH,value:bF[bH]};bI.push({schema:"iglu:com.optimizely/visitor_dimension/jsonschema/1-0-0",data:bG})}}return bI}return[]}function aj(){return q.map(bb(),function(bF){return{schema:"iglu:com.optimizely.snowplow/optimizely_summary/jsonschema/1-0-0",data:bF}})}function a2(){return q.map(Z(),function(bF){return{schema:"iglu:com.optimizely.optimizelyx/summary/jsonschema/1-0-0",data:bF}})}function aG(){var bI=al.augur;if(bI){var bH={consumer:{},device:{}};var bG=bI.consumer||{};bH.consumer.UUID=bG.UID;var bJ=bI.device||{};bH.device.ID=bJ.ID;bH.device.isBot=bJ.isBot;bH.device.isProxied=bJ.isProxied;bH.device.isTor=bJ.isTor;var bF=bJ.fingerprint||{};bH.device.isIncognito=bF.browserHasIncognitoEnabled;return{schema:"iglu:io.augur.snowplow/identity_lite/jsonschema/1-0-0",data:bH}}}function bC(){var bH=window._hawk;if(bH){var bG={encryptedId:null,optout:null};bG.encryptedId=bH.browserid;var bI=new RegExp("(?:^|;)\\s?"+"_parrable_hawk_optout".replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")+"=(.*?)(?:;|$)","i"),bF=document.cookie.match(bI);bG.optout=(bF&&decodeURIComponent(bF[1]))?bF&&decodeURIComponent(bF[1]):"false";return{schema:"iglu:com.parrable/encrypted_payload/jsonschema/1-0-0",data:bG}}}function ae(){var bH=Math.round(new Date().getTime()/1000),bL=ap("ses"),bG=a8(),bM=bG[0],bK=bG[1],bO=bG[2],bI=bG[3],bN=bG[4],bF=bG[5],bJ=bG[6];if(bM==="0"){ab=bJ;if(aY!="none"){bI++;bF=bN;ab=d.v4()}aa=bI;aw()}else{ab=d.v4();aa++}if(aY!="none"){bq(bK,bO,aa,bH,bF,ab);aw()}br=new Date().getTime()}function bu(){if(!a9&&W.geolocation&&W.geolocation.getCurrentPosition){a9=true;W.geolocation.getCurrentPosition(function(bF){var bH=bF.coords;var bG={schema:"iglu:com.snowplowanalytics.snowplow/geolocation_context/jsonschema/1-1-0",data:{latitude:bH.latitude,longitude:bH.longitude,latitudeLongitudeAccuracy:bH.accuracy,altitude:bH.altitude,altitudeAccuracy:bH.altitudeAccuracy,bearing:bH.heading,speed:bH.speed,timestamp:Math.round(bF.timestamp)}};bz.push(bG)})}}function H(){var bF={};q.forEach(["__utma","__utmb","__utmc","__utmv","__utmz","_ga"],function(bG){var bH=g.cookie(bG);if(bH){bF[bG]=bH}});return{schema:"iglu:com.google.analytics/cookies/jsonschema/1-0-0",data:bF}}function aR(bG,bF){return(bG||[]).concat(bF?bF():[])}function aK(bJ,bF,bO,bN){bB();if(J){aA()}J=true;a0=ax.title;D=bJ;var bM=f.fixupTitle(D||a0);z.trackPageView(bn(aD||bv),bM,bn(ao||aW),bp(aR(bF,bO)),bN);var bG=new Date();if(P&&!aZ){aZ=true;var bH={update:function bI(){if(typeof window!=="undefined"&&typeof window.addEventListener==="function"){var bR=false;var bQ=Object.defineProperty({},"passive",{get:function bP(){bR=true}});var bS=function bS(){};window.addEventListener("testPassiveEventSupport",bS,bQ);window.removeEventListener("testPassiveEventSupport",bS,bQ);bH.hasSupport=bR}}};bH.update();var bL="onwheel" in document.createElement("div")?"wheel":document.onmousewheel!==undefined?"mousewheel":"DOMMouseScroll";if(Object.prototype.hasOwnProperty.call(bH,"hasSupport")){f.addEventListener(ax,bL,bg,{passive:true})}else{f.addEventListener(ax,bL,bg)}aN();f.addEventListener(ax,"click",bg);f.addEventListener(ax,"mouseup",bg);f.addEventListener(ax,"mousedown",bg);f.addEventListener(ax,"mousemove",bg);f.addEventListener(al,"scroll",a6);f.addEventListener(ax,"keypress",bg);f.addEventListener(ax,"keydown",bg);f.addEventListener(ax,"keyup",bg);f.addEventListener(al,"resize",bg);f.addEventListener(al,"focus",bg);f.addEventListener(al,"blur",bg);aV=bG.getTime();clearInterval(bE);bE=setInterval(function bK(){var bP=new Date();if((aV+V)>bP.getTime()){if(F<bP.getTime()){s(aR(bF,bO))}}},V)}}function s(bF){bB();var bG=ax.title;if(bG!==a0){a0=bG;D=null}z.trackPagePing(bn(aD||bv),f.fixupTitle(D||a0),bn(ao||aW),Y(aQ),Y(aE),Y(ay),Y(af),bp(bF));aN()}function a5(bK,bJ,bP,bL,bF,bM,bG,bI,bO,bH,bN){z.trackEcommerceTransaction(bK,bJ,bP,bL,bF,bM,bG,bI,bO,bp(bH),bN)}function aF(bI,bM,bF,bG,bK,bJ,bN,bH,bL){z.trackEcommerceTransactionItem(bI,bM,bF,bG,bK,bJ,bN,bp(bH),bL)}function bl(bG,bF){if(bG!==""){return bG+bF.charAt(0).toUpperCase()+bF.slice(1)}return bF}function ad(bK){var bJ,bF,bI=["","webkit","ms","moz"],bH;if(!ar){for(bF=0;bF<bI.length;bF++){bH=bI[bF];if(ax[bl(bH,"hidden")]){if(ax[bl(bH,"visibilityState")]==="prerender"){bJ=true}break}else{if(ax[bl(bH,"hidden")]===false){break}}}}if(bJ){f.addEventListener(ax,bH+"visibilitychange",function bG(){ax.removeEventListener(bH+"visibilitychange",bG,false);bK()});return}bK()}aO();B();if(aJ.crossDomainLinker){w(aJ.crossDomainLinker)}return{getDomainSessionIndex:function(){return aa},getPageViewId:function(){return aC()},newSession:ae,getCookieName:function(bF){return Q(bF)},getUserId:function(){return bD},getDomainUserId:function(){return(a8())[1]},getDomainUserInfo:function(){return a8()},getUserFingerprint:function(){return y},setAppId:function(bF){f.warn('setAppId is deprecated. Instead add an "appId" field to the argmap argument of newTracker.');z.setAppId(bF)},setReferrerUrl:function(bF){ao=bF},setCustomUrl:function(bF){bB();aD=be(bv,bF)},setDocumentTitle:function(bF){a0=ax.title;D=bF},discardHashTag:function(bF){G=bF},setCookieNamePrefix:function(bF){f.warn('setCookieNamePrefix is deprecated. Instead add a "cookieName" field to the argmap argument of newTracker.');bs=bF},setCookieDomain:function(bF){f.warn('setCookieDomain is deprecated. Instead add a "cookieDomain" field to the argmap argument of newTracker.');I=f.fixupDomain(bF);aO()},setCookiePath:function(bF){bt=bF;aO()},setVisitorCookieTimeout:function(bF){M=bF},setSessionCookieTimeout:function(bF){f.warn('setSessionCookieTimeout is deprecated. Instead add a "sessionCookieTimeout" field to the argmap argument of newTracker.');R=bF},setUserFingerprintSeed:function(bF){f.warn('setUserFingerprintSeed is deprecated. Instead add a "userFingerprintSeed" field to the argmap argument of newTracker.');X=bF;y=n.detectSignature(X)},enableUserFingerprint:function(bF){f.warn('enableUserFingerprintSeed is deprecated. Instead add a "userFingerprint" field to the argmap argument of newTracker.');if(!bF){y=""}},respectDoNotTrack:function(bG){f.warn('This usage of respectDoNotTrack is deprecated. Instead add a "respectDoNotTrack" field to the argmap argument of newTracker.');var bF=W.doNotTrack||W.msDoNotTrack;bm=bG&&(bF==="yes"||bF==="1")},crossDomainLinker:function(bF){w(bF)},addListener:function(bH,bF,bG){addClickListener(bH,bF,bG)},enableLinkClickTracking:function(bH,bF,bI,bG){if(C.hasLoaded){u.configureLinkClickTracking(bH,bF,bI,bG);u.addClickListeners()}else{C.registeredOnLoadHandlers.push(function(){u.configureLinkClickTracking(bH,bF,bI,bG);u.addClickListeners()})}},refreshLinkClickTracking:function(){if(C.hasLoaded){u.addClickListeners()}else{C.registeredOnLoadHandlers.push(function(){u.addClickListeners()})}},enableActivityTracking:function(bG,bF){if(bG===parseInt(bG,10)&&bF===parseInt(bF,10)){P=true;F=new Date().getTime()+bG*1000;V=bF*1000}else{f.warn("Activity tracking not enabled, please provide integer values for minimumVisitLength and heartBeatDelay.")}},updatePageActivity:function(){bg()},enableFormTracking:function(bF,bG){if(C.hasLoaded){az.configureFormTracking(bF);az.addFormListeners(bG)}else{C.registeredOnLoadHandlers.push(function(){az.configureFormTracking(bF);az.addFormListeners(bG)})}},killFrame:function(){if(al.location!==al.top.location){al.top.location=al.location}},redirectFile:function(bF){if(al.location.protocol==="file:"){al.location=bF}},setOptOutCookie:function(bF){av=bF},setCountPreRendered:function(bF){ar=bF},setUserId:function(bF){bD=bF},identifyUser:function(bF){setUserId(bF)},setUserIdFromLocation:function(bF){bB();bD=f.fromQuerystring(bF,bv)},setUserIdFromReferrer:function(bF){bB();bD=f.fromQuerystring(bF,aW)},setUserIdFromCookie:function(bF){bD=g.cookie(bF)},setCollectorCf:function(bF){x=am(bF)},setCollectorUrl:function(bF){x=bd(bF)},setPlatform:function(bF){f.warn('setPlatform is deprecated. Instead add a "platform" field to the argmap argument of newTracker.');z.setPlatform(bF)},encodeBase64:function(bF){f.warn('This usage of encodeBase64 is deprecated. Instead add an "encodeBase64" field to the argmap argument of newTracker.');z.setBase64Encoding(bF)},flushBuffer:function(){bo.executeQueue()},enableGeolocationContext:bu,trackPageView:function(bI,bH,bG,bF){ad(function(){aK(bI,bH,bG,bF)})},trackStructEvent:function(bI,bL,bG,bK,bJ,bH,bF){ad(function(){z.trackStructEvent(bI,bL,bG,bK,bJ,bp(bH),bF)})},trackSelfDescribingEvent:function(bG,bH,bF){ad(function(){z.trackSelfDescribingEvent(bG,bp(bH),bF)})},trackUnstructEvent:function(bG,bH,bF){ad(function(){z.trackSelfDescribingEvent(bG,bp(bH),bF)})},addTrans:function(bK,bJ,bP,bL,bF,bM,bG,bI,bO,bH,bN){E.transaction={orderId:bK,affiliation:bJ,total:bP,tax:bL,shipping:bF,city:bM,state:bG,country:bI,currency:bO,context:bH,tstamp:bN}},addItem:function(bI,bM,bF,bG,bK,bJ,bN,bH,bL){E.items.push({orderId:bI,sku:bM,name:bF,category:bG,price:bK,quantity:bJ,currency:bN,context:bH,tstamp:bL})},trackTrans:function(){ad(function(){a5(E.transaction.orderId,E.transaction.affiliation,E.transaction.total,E.transaction.tax,E.transaction.shipping,E.transaction.city,E.transaction.state,E.transaction.country,E.transaction.currency,E.transaction.context,E.transaction.tstamp);for(var bF=0;bF<E.items.length;bF++){var bG=E.items[bF];aF(bG.orderId,bG.sku,bG.name,bG.category,bG.price,bG.quantity,bG.currency,bG.context,bG.tstamp)}E=bc()})},trackLinkClick:function(bL,bH,bI,bG,bK,bJ,bF){ad(function(){z.trackLinkClick(bL,bH,bI,bG,bK,bp(bJ),bF)})},trackAdImpression:function(bJ,bF,bH,bI,bO,bK,bL,bN,bG,bM){ad(function(){z.trackAdImpression(bJ,bF,bH,bI,bO,bK,bL,bN,bp(bG),bM)})},trackAdClick:function(bH,bM,bF,bI,bP,bK,bJ,bL,bO,bG,bN){ad(function(){z.trackAdClick(bH,bM,bF,bI,bP,bK,bJ,bL,bO,bp(bG),bN)})},trackAdConversion:function(bP,bF,bI,bH,bK,bN,bO,bJ,bM,bG,bL){ad(function(){z.trackAdConversion(bP,bF,bI,bH,bK,bN,bO,bJ,bM,bp(bG),bL)})},trackSocialInteraction:function(bI,bH,bJ,bG,bF){ad(function(){z.trackSocialInteraction(bI,bH,bJ,bp(bG),bF)})},trackAddToCart:function(bM,bH,bJ,bK,bL,bG,bI,bF){ad(function(){z.trackAddToCart(bM,bH,bJ,bK,bL,bG,bp(bI),bF)})},trackRemoveFromCart:function(bM,bH,bJ,bK,bL,bG,bI,bF){ad(function(){z.trackRemoveFromCart(bM,bH,bJ,bK,bL,bG,bp(bI),bF)})},trackSiteSearch:function(bK,bJ,bG,bH,bI,bF){ad(function(){z.trackSiteSearch(bK,bJ,bG,bH,bp(bI),bF)})},trackTiming:function(bK,bH,bJ,bG,bI,bF){ad(function(){z.trackSelfDescribingEvent({schema:"iglu:com.snowplowanalytics.snowplow/timing/jsonschema/1-0-0",data:{category:bK,variable:bH,timing:bJ,label:bG}},bp(bI),bF)})},trackConsentWithdrawn:function(bJ,bL,bG,bH,bK,bI,bF){ad(function(){z.trackConsentWithdrawn(bJ,bL,bG,bH,bK,bp(bI),bF)})},trackConsentGranted:function(bL,bG,bH,bK,bJ,bI,bF){ad(function(){z.trackConsentGranted(bL,bG,bH,bK,bJ,bp(bI),bF)})},trackEnhancedEcommerceAction:function(bI,bG,bF){var bH=t.concat(bG||[]);t.length=0;ad(function(){z.trackSelfDescribingEvent({schema:"iglu:com.google.analytics.enhanced-ecommerce/action/jsonschema/1-0-0",data:{action:bI}},bp(bH),bF)})},addEnhancedEcommerceActionContext:function(bH,bK,bG,bL,bF,bI,bN,bJ,bM,bO){t.push({schema:"iglu:com.google.analytics.enhanced-ecommerce/actionFieldObject/jsonschema/1-0-0",data:{id:bH,affiliation:bK,revenue:f.parseFloat(bG),tax:f.parseFloat(bL),shipping:f.parseFloat(bF),coupon:bI,list:bN,step:f.parseInt(bJ),option:bM,currency:bO}})},addEnhancedEcommerceImpressionContext:function(bG,bF,bM,bI,bH,bJ,bK,bL,bN){t.push({schema:"iglu:com.google.analytics.enhanced-ecommerce/impressionFieldObject/jsonschema/1-0-0",data:{id:bG,name:bF,list:bM,brand:bI,category:bH,variant:bJ,position:f.parseInt(bK),price:f.parseFloat(bL),currency:bN}})},addEnhancedEcommerceProductContext:function(bG,bF,bO,bJ,bH,bL,bN,bK,bI,bM,bP){t.push({schema:"iglu:com.google.analytics.enhanced-ecommerce/productFieldObject/jsonschema/1-0-0",data:{id:bG,name:bF,list:bO,brand:bJ,category:bH,variant:bL,price:f.parseFloat(bN),quantity:f.parseInt(bK),coupon:bI,position:f.parseInt(bM),currency:bP}})},addEnhancedEcommercePromoContext:function(bJ,bI,bH,bF,bG){t.push({schema:"iglu:com.google.analytics.enhanced-ecommerce/promoFieldObject/jsonschema/1-0-0",data:{id:bJ,name:bI,creative:bH,position:bF,currency:bG}})},enableErrorTracking:function(bF,bG){aT.enableErrorTracking(bF,bG,bp())},trackError:function(bI,bF,bK,bH,bG,bL){var bJ=bp(bL);aT.trackError(bI,bF,bK,bH,bG,bJ)},preservePageViewId:function(){aL=true}}}}())},{"./errors":13,"./forms":14,"./lib/detectors":17,"./lib/helpers":18,"./lib/proxies":19,"./lib_managed/lodash":20,"./links":21,"./out_queue":22,"browser-cookie-lite":1,sha1:6,"snowplow-tracker-core":7,uuid:12}]},{},[16]);
\ No newline at end of file
......@@ -68,7 +68,11 @@ module EE
:slack_app_enabled,
:slack_app_id,
:slack_app_secret,
:slack_app_verification_token
:slack_app_verification_token,
:snowplow_collector_uri,
:snowplow_cookie_domain,
:snowplow_enabled,
:snowplow_site_id
]
end
......
......@@ -46,6 +46,10 @@ module EE
allow_blank: true,
length: { maximum: EMAIL_ADDITIONAL_TEXT_CHARACTER_LIMIT }
validates :snowplow_collector_uri,
presence: true,
if: :snowplow_enabled
validates :external_authorization_service_default_label,
presence: true,
if: :external_authorization_service_enabled?
......@@ -102,6 +106,10 @@ module EE
slack_app_id: nil,
slack_app_secret: nil,
slack_app_verification_token: nil,
snowplow_collector_uri: nil,
snowplow_cookie_domain: nil,
snowplow_enabled: false,
snowplow_site_id: nil,
custom_project_templates_group_id: nil
)
end
......
= form_for @application_setting, url: admin_application_settings_path, html: { class: 'fieldset-form' } do |f|
= form_errors(@application_setting)
%fieldset
.form-group
.form-check
= f.check_box :snowplow_enabled, class: 'form-check-input'
= f.label :snowplow_enabled, class: 'form-check-label' do
Enable Snowplow
.form-group
= f.label :snowplow_collector_uri, 'Collector URI', class: 'label-light'
= f.text_field :snowplow_collector_uri, class: 'form-control', placeholder: 'https://snowplow.example.com'
.form-group
= f.label :snowplow_site_id, class: 'label-light' do
Site ID
= f.text_field :snowplow_site_id, class: 'form-control'
.form-group
= f.label :snowplow_cookie_domain, class: 'label-light' do
Cookie domain
= f.text_field :snowplow_cookie_domain, class: 'form-control'
= f.submit 'Save changes', class: 'btn btn-success'
-# haml-lint:disable InlineJavaScript
:javascript
;(function(p,l,o,w,i,n,g){if(!p[i]){p.GlobalSnowplowNamespace=p.GlobalSnowplowNamespace||[];
p.GlobalSnowplowNamespace.push(i);p[i]=function(){(p[i].q=p[i].q||[]).push(arguments)
};p[i].q=p[i].q||[];n=l.createElement(o);g=l.getElementsByTagName(o)[0];n.async=1;
n.src=w;g.parentNode.insertBefore(n,g)}}(window,document,"script","#{asset_url('/assets/shared/snowplow/sp.js')}","snowplow"));
window.snowplow('newTracker', 'cf', '#{Gitlab::CurrentSettings.snowplow_collector_uri}', {
appId: '#{Gitlab::CurrentSettings.snowplow_site_id}',
cookieDomain: '#{Gitlab::CurrentSettings.snowplow_cookie_domain}',
userFingerprint: false,
respectDoNotTrack: true,
forceSecureTracker: true,
post: true,
contexts: {
webPage: true,
}
});
window.snowplow('enableActivityTracking', 30, 30);
window.snowplow('trackPageView');
---
title: Add Snowplow integration
merge_request: 6642
author:
type: added
class AddBasicSnowplowAttributesToApplicationSettings < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers
DOWNTIME = false
def change
add_column :application_settings, :snowplow_enabled, :boolean, default: false, null: false
add_column :application_settings, :snowplow_collector_uri, :string
add_column :application_settings, :snowplow_site_id, :string
add_column :application_settings, :snowplow_cookie_domain, :string
end
end
......@@ -12,10 +12,19 @@ describe API::Settings, 'EE Settings' do
describe "PUT /application/settings" do
it 'sets EE specific settings' do
put api("/application/settings", admin), help_text: 'Help text'
put api("/application/settings", admin),
help_text: 'Help text',
snowplow_collector_uri: 'https://snowplow.example.com',
snowplow_cookie_domain: '.example.com',
snowplow_enabled: true,
snowplow_site_id: 'site_id'
expect(response).to have_gitlab_http_status(200)
expect(json_response['help_text']).to eq('Help text')
expect(json_response['snowplow_collector_uri']).to eq('https://snowplow.example.com')
expect(json_response['snowplow_cookie_domain']).to eq('.example.com')
expect(json_response['snowplow_enabled']).to be_truthy
expect(json_response['snowplow_site_id']).to eq('site_id')
end
end
......@@ -101,4 +110,13 @@ describe API::Settings, 'EE Settings' do
it_behaves_like 'settings for licensed features'
end
context "missing snowplow_collector_uri value when snowplow_enabled is true" do
it "returns a blank parameter error message" do
put api("/application/settings", admin), snowplow_enabled: true
expect(response).to have_gitlab_http_status(400)
expect(json_response['error']).to eq('snowplow_collector_uri is missing')
end
end
end
......@@ -152,6 +152,12 @@ module API
optional :help_text, type: String, desc: 'GitLab server administrator information'
optional :repository_size_limit, type: Integer, desc: 'Size limit per repository (MB)'
optional :repository_storages, type: Array[String], desc: 'A list of names of enabled storage paths, taken from `gitlab.yml`. New projects will be created in one of these stores, chosen at random.'
optional :snowplow_enabled, type: Boolean, desc: 'Enable Snowplow'
given snowplow_enabled: ->(val) { val } do
requires :snowplow_collector_uri, type: String, desc: 'Snowplow Collector URI'
optional :snowplow_cookie_domain, type: String, desc: 'Snowplow cookie domain'
optional :snowplow_site_id, type: String, desc: 'Snowplow Site/Application ID'
end
optional :usage_ping_enabled, type: Boolean, desc: 'Every week GitLab will report license usage back to GitLab, Inc.'
## EE-only END
......
......@@ -2073,6 +2073,9 @@ msgstr ""
msgid "Configure storage path and circuit breaker settings."
msgstr ""
msgid "Configure the %{link} integration."
msgstr ""
msgid "Configure the way a user creates a new account."
msgstr ""
......
......@@ -62,6 +62,23 @@ describe 'layouts/_head' do
end
end
context 'when an asset_host is set and snowplow url is set' do
let(:asset_host) { 'http://test.host' }
before do
allow(ActionController::Base).to receive(:asset_host).and_return(asset_host)
allow(Gitlab::CurrentSettings).to receive(:snowplow_enabled?).and_return(true)
allow(Gitlab::CurrentSettings).to receive(:snowplow_collector_uri).and_return('www.snow.plow')
end
it 'add a snowplow script tag with asset host' do
render
expect(rendered).to match('http://test.host/assets/shared/snowplow/')
expect(rendered).to match('window.snowplow')
expect(rendered).to match('www.snow.plow')
end
end
def stub_helper_with_safe_string(method)
allow_any_instance_of(PageLayoutHelper).to receive(method)
.and_return(%q{foo" http-equiv="refresh}.html_safe)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment