mmcore.SetCookie('mmid','315845796|AQAAAApCAU3QkgsAAA==',365,1);mmcore.SetCookie('pd','46709047|AQAAAAoBQkIBTdCSC1I7dD8BAOW5NfVlE9JIAA4AAADluTX1ZRPSSAAAAAD/////AP//////////AAZEaXJlY3QBkgsBAAAAAAABAAABAAD///////////////8CALgsAAAA0mbgFJILAP////8BkguSC///AQAAAAAAAAFZmgAAUsUAAAB6MAAAjQAAAAFF',365);mmcore.SetCookie('srv','nycvwcgeu04',365);(function(){if(typeof(mmcore.GenInfo)!='object')mmcore.GenInfo={};mmcore.EH=function(e){var s=e.message+'\r\n';if(!window.mm_error)window.mm_error=s;else window.mm_error+=s;};
mmcore.GenInfo['VC55FirstFTinArticle']={'element11448':'firstftinarticle'};
var tc={'Element11448':{'h':[],'c':[],'l':[]}}
try{
// Maxymiser Core - Attach Style v0.0.0 http://gitlab.maxymiser.net/gts/mmcore-attach-style/tree/master
(function(){'use strict';mmcore.AttachStyle=function(){var c={STYLE_ID:"mm-style",createStyle:function(){var b=document.createElement("style");b.type="text/css";return b},appendCssToStyle:function(){var b,a;"styleSheet"in c.createStyle()?(b=function(a){return a.styleSheet.cssText},a=function(a,b){a.styleSheet.cssText=b}):(b=function(a){return a.innerHTML},a=function(a,b){a.innerHTML=b});return(c.appendCssToStyle=function(c,d){a(d,b(d)+c)}).apply(this,arguments)}};return function(b){var a=document.getElementById(c.STYLE_ID);a||(a=c.createStyle(),a.id=c.STYLE_ID,function(){this.parentNode.insertBefore(a,this)}.call(document.getElementsByTagName("head")[0].lastChild));c.appendCssToStyle(b,a)}}()})();
}catch(err){mmcore.EH(err);}
try{
//Essentials

// Maxymiser Core - Try Catch v0.0.0 http://gitlab.maxymiser.net/gts/mmcore-try-catch/tree/master
(function(){'use strict';mmcore.tryCatch=function(){return function b(c,d){var e=arguments.length;return function(){try{return c.apply(this,arguments)}catch(a){try{mmcore.EH(a)}finally{1<e&&b(d)(a)}}}}}()})();

/**
 * Essentials - Deferred
 *
 * A handy tool for organizing waiting for something.
 *
 * @version 0.0.2
 *
 *
 * @author a.porohnya@gmail.com (Aleksey Porokhnya)
 * 
 * 27.08.2014 by Tytskiy
 *     Fixed issue with [].reduce() when this method was overwriten by Prototype.js.
 *     Changed native [].reduce() to own reduce() implementation. 
 *     Note: Own reduce() is not compatible with ECMAScript5!
 */
!function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n=[].slice;b="pending",d="resolved",c="rejected",h=function(a,b){return null!=a?a.hasOwnProperty(b):void 0},j=function(a){return h(a,"length")&&h(a,"callee")},k=function(a){return h(a,"promise")&&"function"==typeof(null!=a?a.promise:void 0)},i=function(a,b,c){null==a&&(a=[]);for(var d=0,e=a.length;e>d;d++)c=b(c,a[d]);return c},g=function(a){return j(a)?g(Array.prototype.slice.call(a)):Array.isArray(a)?i(a,function(a,b){return Array.isArray(b)?a.concat(g(b)):(a.push(b),a)},[]):[a]},e=function(a,b){return 0>=a?b():function(){return--a<1?b.apply(this,arguments):void 0}},l=function(a,b){return function(){var c;return c=[a].concat(Array.prototype.slice.call(arguments,0)),b.apply(this,c)}},f=function(a,b,c){var d,e,f,h,i;for(h=g(a),i=[],e=0,f=h.length;f>e;e++)d=h[e],i.push(d.call.apply(d,[c].concat(n.call(b))));return i},a=function(){var e,h,i,j,l,m,o;return o=b,j=[],l=[],m=[],i={resolved:{},rejected:{},pending:{}},this.promise=function(e){var h,p;return e=e||{},e.state=function(){return o},p=function(a,c,d){return function(){return o===b&&c.push.apply(c,g(arguments)),a()&&f(arguments,i[d]),e}},e.done=p(function(){return o===d},j,d),e.fail=p(function(){return o===c},l,c),e.progress=p(function(){return o!==b},m,b),e.always=function(){var a;return(a=e.done.apply(e,arguments)).fail.apply(a,arguments)},h=function(b,c,d){var f,g;return g=new a,f=function(a,b,c){return c?e[a](function(){var a,d;return a=1<=arguments.length?n.call(arguments,0):[],d=c.apply(null,a),k(d)?d.done(g.resolve).fail(g.reject).progress(g.notify):g[b](d)}):e[a](g[b])},f("done","resolve",b),f("fail","reject",c),f("progress","notify",d),g},e.pipe=h,e.then=h,null==e.promise&&(e.promise=function(){return e}),e},this.promise(this),e=this,h=function(a,c,d){return function(){return o===b?(o=a,i[a]=arguments,f(c,i[a],d),e):this}},this.resolve=h(d,j),this.reject=h(c,l),this.notify=h(b,m),this.resolveWith=function(a,b){return h(d,j,a).apply(null,b)},this.rejectWith=function(a,b){return h(c,l,a).apply(null,b)},this.notifyWith=function(a,c){return h(b,m,a).apply(null,c)},this},m=function(){var b,c,d,f,h,i,j;if(c=g(arguments),1===c.length)return k(c[0])?c[0]:(new a).resolve(c[0]).promise();if(h=new a,!c.length)return h.resolve().promise();for(f=[],d=e(c.length,function(){return h.resolve.apply(h,f)}),c.forEach(function(a,b){return k(a)?a.done(function(){var a;return a=1<=arguments.length?n.call(arguments,0):[],f[b]=a.length>1?a:a[0],d()}):(f[b]=a,d())}),i=0,j=c.length;j>i;i++)b=c[i],k(b)&&b.fail(h.reject);return h.promise()},mmcore.Deferred=function(){return new a},mmcore.when=m}.call(this);

// Maxymiser Essentials - Wait for v0.1.1
!function(){"use strict";mmcore.waitFor=function(e,t){var i,o;return o=mmcore.Deferred(),o.isComplete=function(){return"pending"!==o.state()},t=t||{},t.interval=t.interval||50,t.isNotStoppedOnDocumentReadiness=t.isNotStoppedOnDocumentReadiness||!1,t.isNotPeriodicallyChecked=t.isNotPeriodicallyChecked||!1,i=function(){o.isComplete()||(e.call(o)&&o.resolve(),o.isComplete()||(!t.isNotStoppedOnDocumentReadiness&&(mmcore.$&&mmcore.$.isReady||!mmcore.$&&"complete"===document.readyState)?o.reject():t.isNotPeriodicallyChecked||setTimeout(i,t.interval)))},t.hasOwnProperty("initializer")&&t.initializer.call(o),i(),o.isComplete()||(t.hasOwnProperty("timeout")&&!function(){var e=setTimeout(o.reject,t.timeout);o.always(function(){clearTimeout(e)})}(),t.isNotStoppedOnDocumentReadiness||mmcore.AddDocLoadHandler(t.isNotPeriodicallyChecked?o.reject:i)),o.promise()}}();

// Maxymiser Core - Campaign v0.3.0 http://gitlab.maxymiser.net/gts/mmcore-campaign/tree/master
(function(){"use strict";function e(e,t){var n=false;for(var r=0;r<t.length;r++){if(t[r]===e){n=true}}return n}function n(e,t,n){this.name=e;this.maxyboxNames=t;this.prefix=n;this.preventDefaultRendering();this.preventDefaultHiding()}mmcore.Campaign=n;var t=function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++){r=!!t(e[s],s);if(n!==r){i.push(e[s])}}return i};n.prototype.preventDefaultRendering=function(){var e=mmcore._r_mbs;var t=this.maxyboxNames;var n=t.length;while(n--){e[t[n]]=1}};n.prototype.preventDefaultHiding=function(){var n=this;mmcore.HideMaxyboxes=function(r){return function(){var i=arguments;mmcore.tryCatch(function(){i=t(i,function(t){return e(t,n.maxyboxNames)})})();if(i.length){return r.apply(this,i)}}}(mmcore.HideMaxyboxes)};n.prototype.hideContent=function(e,t){var n;var r;var i;var s;var o=document.getElementsByTagName("html")[0];var u=o.getAttribute("class");this.hidingClass=this.prefix+"-hidden-content";if(u!==null&&u===""){u=this.hidingClass}else if(u==null){u=this.hidingClass}else{u=u+" "+this.hidingClass}o.setAttribute("class",u);if(arguments.length<2){t="left: -33554430px!important; position: absolute!important; top: -33554430px;!important"}n=this.hidingClass;s=e.split(",");i=s.length;r="";while(i--){r+="."+n+" "+s[i]+"{"+t+"}"}mmcore.AttachStyle(r)};n.prototype.showContent=function(){if(this.hasOwnProperty("hidingClass")){var e=document.getElementsByTagName("html")[0];var t=e.getAttribute("class");if(t!==null&&t!==""){t=t.replace(this.hidingClass,"");e.setAttribute("class",t)}}};n.prototype.getExperience=function(){return mmcore.GenInfo.hasOwnProperty(this.name)?mmcore.GenInfo[this.name]:null};n.prototype.hasNonDefaultExperience=function(){var e,t;e=this.getExperience();if(!e){return false}t=false;for(var n in e){if(e.hasOwnProperty(n)&&e[n]!=="Default"){t=true;return false}}return t};n.prototype.hasMaxybox=function(){return this.hasNonDefaultExperience()};n.prototype.renderMaxyboxes=function(){var n;var r;var i;r=this.maxyboxNames;if(arguments.length){r=t(arguments,function(t){return!e(t,r)})}n=this;for(i in mmcore._renderers){if(e(i,r)&&typeof mmcore._renderers[i]==="function"){mmcore._renderers[i].call(n)}}}})();

// Maxymiser Essentials - Request 0.2.0
(function(){"use strict";var t="event";var n=2250;var r;var i=function(){r=mmcore.Deferred();mmcore.request.promise=r.promise()};mmcore.request=function(e,s){var o=r;i();if(!arguments.length){e=t}mmcore.SetPageID(e);mmcore._async=!s;mmcore.CGRequest(o.resolve);setTimeout(mmcore.tryCatch(o.reject),n);return o.promise()};i()})();

//Maxymiser Essentials - Mediator 0.2.0
(function(){"use strict";function e(){var e=function(){return((1+Math.random())*65536|0).toString(16).substring(1)};return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}function t(n,r,i){if(!(this instanceof t)){return new t(n,r,i)}this.id=e();this.fn=n;this.options=r;this.context=i;this.channel=null}function n(e,t){if(!(this instanceof n)){return new n(e)}this.namespace=e||"";this._subscribers=[];this._channels=[];this._parent=t;this.stopped=false}function r(){if(!(this instanceof r)){return new r}this._channels=new n("")}t.prototype={update:function(e){if(e){this.fn=e.fn||this.fn;this.context=e.context||this.context;this.options=e.options||this.options;if(this.channel&&this.options&&this.options.priority!==undefined){this.channel.setPriority(this.id,this.options.priority)}}}};n.prototype={addSubscriber:function(e,n,r){var i=new t(e,n,r);if(n&&n.priority!==undefined){n.priority=n.priority>>0;if(n.priority<0){n.priority=0}if(n.priority>=this._subscribers.length){n.priority=this._subscribers.length-1}this._subscribers.splice(n.priority,0,i)}else{this._subscribers.push(i)}i.channel=this;return i},stopPropagation:function(){this.stopped=true},getSubscriber:function(e){var t=0,n=this._subscribers.length;for(t,n;t<n;t++){if(this._subscribers[t].id===e||this._subscribers[t].fn===e){return this._subscribers[t]}}},setPriority:function(e,t){var n=0,r=0,i,s,o,u;for(r=0,u=this._subscribers.length;r<u;r++){if(this._subscribers[r].id===e||this._subscribers[r].fn===e){break}n++}i=this._subscribers[n];s=this._subscribers.slice(0,n);o=this._subscribers.slice(n+1);this._subscribers=s.concat(o);this._subscribers.splice(t,0,i)},addChannel:function(e){this._channels[e]=new n((this.namespace?this.namespace+":":"")+e,this)},hasChannel:function(e){return this._channels.hasOwnProperty(e)},returnChannel:function(e){return this._channels[e]},removeSubscriber:function(e){var t=this._subscribers.length-1;if(!e){this._subscribers=[];return}for(t;t>=0;t--){if(this._subscribers[t].fn===e||this._subscribers[t].id===e){this._subscribers[t].channel=null;this._subscribers.splice(t,1)}}},publish:function(e){var t=0,n=this._subscribers.length,r=false,i,s,o,u;for(t,n;t<n;t++){r=false;if(!this.stopped){i=this._subscribers[t];if(i.options!==undefined&&typeof i.options.predicate==="function"){if(i.options.predicate.apply(i.context,e)){i.fn.apply(i.context,e);r=true}}else{o=this._subscribers.length;i.fn.apply(i.context,e);u=this._subscribers.length;n=u;if(u===o-1){t--}r=true}}if(r&&i.options&&i.options!==undefined){i.options.calls--;if(i.options.calls<1){this.removeSubscriber(i.id);n--;t--}}}if(this._parent){this._parent.publish(e)}this.stopped=false}};r.prototype={getChannel:function(e){var t=this._channels,n=e.split(":"),r=0,i=n.length;if(e===""){return t}if(n.length>0){for(r,i;r<i;r++){if(!t.hasChannel(n[r])){t.addChannel(n[r])}t=t.returnChannel(n[r])}}return t},subscribe:function(e,t,n,r){var i=this.getChannel(e);n=n||{};r=r||{};return i.addSubscriber(t,n,r)},once:function(e,t,n,r){n=n||{};n.calls=1;return this.subscribe(e,t,n,r)},getSubscriber:function(e,t){return this.getChannel(t||"").getSubscriber(e)},remove:function(e,t){this.getChannel(e).removeSubscriber(t)},publish:function(e){var t=Array.prototype.slice.call(arguments,1),n=this.getChannel(e);t.push(n);this.getChannel(e).publish(t)}};r.prototype.on=r.prototype.subscribe;r.prototype.bind=r.prototype.subscribe;r.prototype.emit=r.prototype.publish;r.prototype.trigger=r.prototype.publish;r.prototype.off=r.prototype.remove;r.Channel=n;r.Subscriber=t;mmcore.mediator=new r})();
}catch(err){mmcore.EH(err);}
try{
// common helpers
(function (global, core, campaignPrefix, undefined) {
    'use strict';

    var Helpers;

    Helpers = function (campaignPrefix) {
        this.campaignPrefix = campaignPrefix;
        if (!campaignPrefix) {
            throw 'Please set Test prefix';
        }
        this.props = {};
    };

    Helpers.prototype.setCssNamespace = function () {
        var campaignPrefix;

        campaignPrefix = this.campaignPrefix.toLowerCase();
        this.$('body').addClass('mm-' + campaignPrefix);
    };

    Helpers.prototype.detectFirefox = function () {
        var browser;

        browser = navigator.userAgent;
        if (browser && browser.toLowerCase().indexOf('firefox') > -1) {
            return true;
        } else {
            return false;
        }
    };

    Helpers.prototype.fixFirefoxHistory = function () {
        var hash;

        this.isFirefox === false ? false : this.isFirefox = this.detectFirefox();
        if (this.isFirefox) {
            hash = location.hash;
            hash = hash.length ? '' + hash + '-mm' : 'mm';
            location.hash = hash;
        }
    };

    Helpers.prototype.redirect = function (url) {
        if (url) {
            this.fixFirefoxHistory();
            if (location.assign) {
                location.assign(url);
            } else {
                location = url;
            }
        }
    };

    Helpers.prototype.delegate = function (selector) {
        var that;

        that = this;
        return function (name, handler) {
            if (!selector || !name || !handler) {
                throw '' + that.campaignPrefix + ' delegate: invalid arguments';
            }
            if (that.$.fn.on) {
                that.$(document).on(name, selector, handler);
                return true;
            } else if (that.$.fn.live) {
                that.$(selector).live(name, handler);
                return true;
            }
            return false;
        };
    };

    Helpers.prototype.undelegate = function (selector) {
        var that;

        that = this;
        return function (name, handler) {
            if (!name) {
                throw '' + that.campaignPrefix + ' undelegate: invalid arguments';
            }
            if (that.$.fn.off) {
                that.$(document).off(name, selector, handler);
                return true;
            } else if (that.$.fn.die) {
                that.$(selector).die(name, handler);
                return true;
            }
            return false;
        };
    };

    Helpers.prototype.injectStyle = function (styleString) {
        var style;

        style = document.createElement('style');
        style.type = 'text/css';
        if (style.styleSheet) {
            style.styleSheet.cssText = styleString;
        } else {
            style.appendChild(document.createTextNode(styleString));
        }
        document.getElementsByTagName('head')[0].appendChild(style);
        return style;
    };

    Helpers.prototype.trackAsyncAction = function (data) {
        core._async = true;
        core.SetPageID('events');
        core.SetAction(data.name, data.val || 1, data.attr || '');
        this.request(data.then || function () {}, data.time || null);
    };

    Helpers.prototype.wait = function (data) {
        var that,
            check,
            context,
            fail,
            freq,
            isResetFunction,
            reset,
            resetAllTimers,
            success,
            timers,
            waitInner;

        that = this;
        timers = {};
        resetAllTimers = function () {
            clearTimeout(timers.timer);
            clearTimeout(timers.resetTimer);
        };
        check = data.check || null;
        freq = data.frequency || data.freq || 0;
        reset = data.reset || null;
        context = data.context || global || window.top;
        if (typeof data.success === 'function') {
            success = function () {
                resetAllTimers();
                data.success.call(that);
                if (typeof data.always === 'function') {
                    data.always.call(that);
                }
            };
        } else {
            success = function () {
                resetAllTimers();
                if (typeof data.always === 'function') {
                    data.always.call(that);
                }
            };
        }
        if (typeof data.fail === 'function') {
            fail = function () {
                resetAllTimers();
                data.fail.call(that);
                if (typeof data.always === 'function') {
                    data.always.call(that);
                }
            };
        } else {
            fail = function () {
                resetAllTimers();
                if (typeof data.always === 'function') {
                    data.always.call(that);
                }
            };
        }
        isResetFunction = typeof reset === 'function' ? true : false;
        if (!isResetFunction) {
            reset = parseInt(reset, 10);
            reset = reset > -1 ? reset : null;
        }
        if (!check) {
            if (data.id) {
                check = function () {
                    return context.document.getElementById(data.id);
                };
            } else if (data.selector) {
                check = function () {
                    return context.document.querySelector(data.selector);
                };
            } else {
                throw 'wait(): no condition specified';
            }
        }
        if (check.call(that)) {
            success();
        } else if (isResetFunction && reset.call(that)) {
            fail();
        } else {
            waitInner = function (data) {
                timers.timer = setTimeout(function () {
                    if (check.call(that)) {
                        success();
                    } else {
                        if (isResetFunction && reset.call(that)) {
                            fail();
                        } else {
                            waitInner(data);
                        }
                    }
                }, freq);
            };
            if (reset && !isResetFunction) {
                timers.resetTimer = setTimeout(function () {
                    return fail();
                }, reset);
            }
            waitInner(data);
        }
    };

    Helpers.prototype.request = function(cb, time) {
        var done;

        done = false;
        if (cb && typeof cb === 'function') {
            core.CGRequest(function() {
                done = true;
                cb();
            });
            setTimeout(function() {
                if (!done) {
                    cb();
                }
            }, time || 6000);
        }
    };

    // adopt https://github.com/henrikjoreteg/milliseconds
    Helpers.prototype.ms = (function () {
        var calc;

        calc = function (m) {
            return function(n) { return Math.round(n * m); };
        };
        return {
            seconds: calc(1e3),
            minutes: calc(6e4),
            hours: calc(36e5),
            days: calc(864e5),
            weeks: calc(6048e5),
            months: calc(26298e5),
            years: calc(315576e5)
        };
    })();

    Helpers.prototype.extend = function () {
        return Helpers.extend.apply(arguments);
    };

    Helpers.extend = function (child, parent) {
        var own,
            Ctor;

        own = {}.hasOwnProperty;
        for (var key in parent) {
            if (own.call(parent, key)) {
                child[key] = parent[key];
            }
        }
        Ctor = function () {
            this.constructor = child;
        };
        Ctor.prototype = parent.prototype;
        child.prototype = new Ctor();
        child.__super__ = parent.prototype;
        return child;
    };
    /* Helpers end */

    // export
    core[campaignPrefix] = Helpers;
})(window, window.mmcore, 'T6B2B');

(function (global, mmcore, campaignPrefix, undefined) {
    /* global FT */
    'use strict';

    var Helpers,
        MyHelpers,
        helpers;

    // specific helpers
    Helpers = mmcore[campaignPrefix];

    MyHelpers = function () {
        MyHelpers.__super__.constructor.apply(this, arguments);
        this.props = {};
    };

    Helpers.extend(MyHelpers, Helpers);

    MyHelpers.prototype.buildReferrerRegExs = function () {
        var regexs;
        var strings;

        regexs = [];
        strings = [
            'abnormalreturns',
            'ask',
            'bing',
            'community.nasdaq.com',
            'dailyfinance.com',
            'drudgereport',
            'execsense.com',
            'finance.aol.co.uk',
            'finance.aol.com',
            'google',
            'www.indiabusinessbrief.com',
            'www.indiafinancebrief.com',
            'www.walletpop.com',
            'huffingtonpost',
            'money.aol.com',
            'morningstar.com',
            'nasdaq',
            'nasdaq.com',
            'news.in.msn.com',
            'www.nyif.com',
            'paid.outbrain.com',
            'quotes.nasdaq.com',
            'samachar.com',
            'taboola.com',
            'thestreet.com',
            'theweek.com',
            'uat-www.nyif.com',
            'www-qc.nasdaq.com',
            'www.dailyfinance.co.uk',
            'www.dailyfinance.com',
            'www.linkedin.com',
            'www.nasdaq.com',
            'nyif.com',
            'www.reddit.com',
            'www.samachar.com',
            'www.stumbleupon.com',
            'www.thestreet.com',
            'www.tumblr.com',
            'www.msn.com\/en-in\/news'
        ];
        for (var i = 0, len = strings.length; i < len; i++) {
            regexs.push(new RegExp('^https{0,1}:\/\/.*' + strings[i], 'i'));
        }
        return regexs;
    };

    MyHelpers.prototype.checkReferrers = (function () {
        var regexs;
        var referrer;

        regexs = MyHelpers.prototype.buildReferrerRegExs.call(MyHelpers);
        referrer = document.referrer.toLowerCase();
        return function () {
            for (var i = 0, len = regexs.length; i < len; i++) {
                if (regexs[i].test(referrer)) {
                    return true;
                }
            }
            return false;
        };
    }());

    MyHelpers.prototype.hide = function () {
        var style;

        style = helpers.injectStyle([
            '#storyContent {',
            '    position: relative;',
            '    left: -9999999px;',
            '}',
            '#corppop_overlay, #opOverlay, #assanka_mockingbird, #assanka_mockingbird_overlay {',
            '    display: none !important;',
            '}',
            '.master-row.railSection, .fullstory.fullstoryBody *, .entry-content, .ft-livecomments {',
            '    display: none;',
            '}'
        ].join('\n'));
        style.id = 'mm-t3b2b-hider';
    };

    MyHelpers.prototype.show = function () {
        var style;

        style = document.getElementById('mm-t3b2b-hider');
        if (style) {
            style.parentNode.removeChild(style);
        }
    };

    MyHelpers.prototype.checkPage = function (data) {
        if (!this.checkReferrers()) {
            this.trackArticleViewWithNoBarrierMaybe();
            return;
        }
        this.hide();
        this.wait({
            freq: 100,
            // reset: this.ms.seconds(8),
            reset: function () {
                return mmcore._docEnd;
            },
            check: function () {

                //excude if not article page
                if (!document.querySelector('meta[property="og:type"][content="article"]')) {
                    return false;
                }

                //exclude if Hurdletype = H15
                if (window.HurdleType && window.HurdleType === 'H15') {
                    return false;
                }

                // exclude the video domain
                if (location.href.match(/https*:\/\/video\.ft\.com/)) {
                    return false;
                }

                // exclude authour's blog posts
                /*var $author = $('.primary-content .entry-guest-author:eq(0)');
                if ($author.length && !$author.children('a').length || $('.page-title').text().indexOf('The A-list') > -1) {
                    return false;
                }*/


                /*if (data.isEmulation) {
                    this.setFakeLocation(data.location || 'GBR', data.isEmulation);
                }*/
                if (this.checkCorporation()) {
                    return this.check();
                }
                return false;
            },
            success: this.generate,
            fail: this.fail
        });
    };

    MyHelpers.prototype.setFakeLocation = function (abbr, isEmulation) {
        var cookie;

        if (!abbr || abbr.length !== 3) {
            return false;
        }
        if (isEmulation) {
            cookie = (this.props.AYSC || mmcore.GetCookie('AYSC', true))
                .replace(/_14.*?_/, '_14' + abbr.toUpperCase() + '_');
        } else {
            cookie = mmcore
                .GetCookie('AYSC', true)
                .replace(/_14.*?_/, '_14' + abbr.toUpperCase() + '_');
        }
        if (!cookie) {
            return false;
        }
        if (isEmulation) {
            this.props.AYSC = cookie;
        } else {
            mmcore.SetCookie('AYSC', cookie, 1, true);
        }
        return cookie;
    };

    MyHelpers.prototype.checkCorporation = function () {
        var corporationID,
            cookie,
            arr,
            i,
            len,
            elem;

        // target
        corporationID = 'fKQnJsNRcKz2l';
        // maxymiser
        //corporationID = '0V1vclNNIwBSB';
        cookie = mmcore.GetCookie('AYSC', true);
        arr = cookie.split('_');
        for (i = 0, len = arr.length; i < len; i++) {
            elem = arr[i];
            if (elem.charAt(0) === '2' &&
                elem.charAt(1) === '7' &&
                elem.indexOf(corporationID) > -1) {
                return true;
            }
        }
        return false;
    };

    MyHelpers.prototype.check = function () {
        /*if (FT && FT.DRM && FT.DRM.url &&
            FT.DRM.url.indexOf( '//www.ft.com/m/registration.ft.com/corporate/ns/cb/' ) > -1) {
            return false;
        }*/

        //exclude logged in users
        if (this.$.trim(this.$('#ftLogin-user').text()).length > 0) {
            return false;
        }
        if (document.querySelector('meta[property="og:type"][content="article"]') &&
            this.checkReferrers() &&
            (!window.HurdleType || window.Hurdletype !== 'H15') &&
            document.getElementById('footer')) {
            if (document.getElementById('corppop_overlay') ||
                document.getElementById('assanka_mockingbird') ||
                document.getElementById('assanka_mockingbird_overlay')) {
                this.props.isDefaultBarrierPresent = true;
            }
            return true;
        }
        return false;
    };

    MyHelpers.prototype.generate = function () {
        var name;
        var that;

        that = this;
        name = 'T6B2B';
        mmcore._async = true;
        mmcore.SetPageID(name + '_pageID');
        mmcore.CGRequest(function () {
            that.show();
            that.trackiJento();
        });
    };

    MyHelpers.prototype.fail = function () {
        this.show();
        this.trackArticleViewWithNoBarrierMaybe();
    };

    MyHelpers.prototype.trackArticleViewWithNoBarrierMaybe = function () {
        var me = this;
        mmcore.AddDocLoadHandler(function () {
            var checkB2B,
                checkArticle,
                checkNoCorpBarrier;

            checkB2B = function () {
                return !!mmcore.GetCookie('AYSC', 1).match(/PVT_27[A-Za-z0-9]{13}/);
            };
            checkArticle = function () {
                return !!document.querySelector('meta[property="og:type"][content="article"]');
            };
            checkNoCorpBarrier = function () {
                return !window.HurdleType;
            };
            if (checkB2B() && checkArticle() && checkNoCorpBarrier() &&
                    (me.trackArticleView ||
                        (!mmcore.GetCookie('mm-t6b2b-tracked-act-on-page', true) ||
                            mmcore.GetCookie('mm-t6b2b-tracked-act-on-page', true) !== location.pathname)
                    )
                ) {
                //if (!(FT && FT.DRM && FT.DRM.url && FT.DRM.url.indexOf( '//www.ft.com/m/registration.ft.com/corporate/ns/cb/' ) > -1)) {
                me.trackAsyncAction({
                    name: 'T6B2B_Articles',
                    then: function () {
                        mmcore.SetCookie('mm-t6b2b-tracked-act-on-page', location.pathname, 7, true);
                    }
                });
                //}
            }
        });
    };

    MyHelpers.prototype.clearCookie = function () {
        if (!window.location.pathname.match(/(\/corporate\/signup\/*)|(\/signup\/register*)/)) {
            mmcore.SetCookie('mm-t6b2b-registrations', '', -1, true);
        }
    };

    MyHelpers.prototype.trackiJento = function () {
        if (mmcore.GenInfo &&
            mmcore.GenInfo.T6B2B_FirstClickFree2 &&
            mmcore.GenInfo.T6B2B_FirstClickFree2.a_t6fcfpage &&
            FT && FT.analytics && FT.analytics.siteIntelligence &&
            FT.analytics.siteIntelligence.sendAdditionalTracer) {
            FT.analytics.siteIntelligence.sendAdditionalTracer('/MVT','creativeID=T6B2B|' +
                mmcore.GenInfo.T6B2B_FirstClickFree2.a_t6fcfpage.toUpperCase());
        }
    };
    /* MyHelpers end */

    helpers = mmcore[campaignPrefix] = new MyHelpers(campaignPrefix);
    helpers.clearCookie();
    helpers.wait({
        freq: 100,
        check: function () {
            return window.jQuery;
        },
        success: function () {
            helpers.$ = window.jQuery;
            helpers.checkPage({
                isEmulation: true,
                location: 'JPN'
            });
            /*helpers.checkPage({
                isEmulation: false
            });*/
        }
    });
    helpers.wait({
        freq: 100,
        reset: helpers.ms.seconds(8),
        check: function () {
            if (mmcore.GenInfo &&
                mmcore.GenInfo.T6B2B_FirstClickFree2 &&
                mmcore.GenInfo.T6B2B_FirstClickFree2.a_t6fcfpage &&
                mmcore.GenInfo.T6B2B_FirstClickFree2.a_t6fcfpage === 'Default') {
                return true;
            }
            return false;
        },
        success: helpers.trackArticleViewWithNoBarrierMaybe
    });
    helpers.trackArticleView = mmcore.GetCookie('mm-t6b2b-reload', true) !== location.pathname;
    mmcore.SetCookie('mm-t6b2b-reload', location.pathname, 7, true);
})(window, window.mmcore, 'T6B2B');
}catch(err){mmcore.EH(err);}
try{
/**
 * 11.09.2014
 * Track all campaigns automatically
 * A. Tytskiy
 *
 * Dependencies: [Plugin_Essentials.js:mmcore.waitFor,
 * 				  Plugin_Helpers.js:mmcore.helpers]
 */
(function (mmcore) {
	'use strict';

	var TIMEOUT = 4000;
	var track = function () {

		mmcore.ijento = mmcore.ijento || {};

		mmcore.AddDocLoadHandler(function () {
			if (!mmcore.GenInfo || !mmcore.waitFor) {
				return;
			}

			if (mmcore.helpers && window.si && window.si.sendAdditionalTracer) {
				mmcore.helpers.iJentoTag();
			} else {
				mmcore
					.waitFor(function () {
						return mmcore.helpers && window.si && window.si.sendAdditionalTracer;
					}, { isNotStoppedOnDocumentReadiness: true, timeout: TIMEOUT })
					.done(function () {
						mmcore.helpers.iJentoTag();
					});
			}
		});
	};

	track();
	track = null;
}(window.mmcore));

}catch(err){mmcore.EH(err);}
try{
/**
 * 05.11.2014
 * Track article view without barrier on page
 * Alexander Tytskiy
 *
 * Dependencies: ['mmcore.mediator', 'mmcore.request']
 */
(function () {
	'use strict';

	var mmcore = window.mmcore;
	var hostname = window.location.hostname;

	// don't waste time on registration/subscription domains
	if (hostname.indexOf('registration.ft.com') > -1 ||
		hostname.indexOf('sub.ft.com') > -1) {
		return;
	}

	// helper
	var arrayForEach = function (collection, callback) {
		var key, len;

		for (key = 0, len = collection.length; key < len; key++) {
			callback.call(null, collection[key], key, collection);
		}
	};

	// check that is on page <meta property="og:type" content="article">
	var checkMetaTag = function () {
		var metas = document.getElementsByTagName('meta');
		var isArticleMetaTagExists = false;

		arrayForEach(metas, function (tag) {
			if (tag.content && tag.content.toLowerCase() === 'article') {
				isArticleMetaTagExists = true;
			}
		});

		return isArticleMetaTagExists;
	};

	var checkGoodPageURL = function () {
		var pageHref = window.location.href;

		return pageHref.indexOf('Authorised=false') < 0;
	};

	// main function
	var track = function () {
		if (checkMetaTag() && checkGoodPageURL()) {
			mmcore.SetAction('ArticleViews', 1, '');
			mmcore.mediator.trigger('ArticleViews', {});
			mmcore.request();
		}
	};

	mmcore.AddDocLoadHandler(function () {
		try {
			track();
		} catch (error) {
			if (typeof mmcore.EH === 'function') {
				mmcore.EH(new Error('Act_ArticleViews.js: Cannot track an ArticleViews action. Possible reason: ' + error));
			}
		}
	});
}());

}catch(err){mmcore.EH(err);}
try{
/**
 * 05.11.2014
 * Track article view without barrier on page
 * Alexander Tytskiy
 *
 * Dependencies: ['mmcore.waitFor', 'mmcore.mediator', 'mmcore.request', 'window.jQuery']
 */
(function () {
	'use strict';

	var mmcore = window.mmcore;
	var hostname = window.location.hostname;

	// don't waste time on registration/subscription domains
	if (hostname.indexOf('registration.ft.com') > -1 ||
		hostname.indexOf('sub.ft.com') > -1) {
		return;
	}

	var checkCommonConditions = function () {
		return window.jQuery && window.jQuery.fn.on;
	};

	var checkCorporateLiknkOnPlace = function () {
		return window.jQuery('#iaiBody a[href*="ftcorporate.ft.com"]').length;
	};

	var oncejQueryFound = function () {
		// use AddDocLoadHandler to not make browser calculation before actually page loaded
		// our barrier arrives asyncronously
		mmcore.AddDocLoadHandler(function () {
			try {
				bindCommonEvents();
			} catch (error) {
				if (typeof mmcore.EH === 'function') {
					mmcore.EH(new Error('Act_RegBarrierClicks.js: Cannot track an bind events. Possible reason: ' + error));
				}
			}

			mmcore
				.waitFor(checkCorporateLiknkOnPlace, {
					isNotStoppedOnDocumentReadiness: true,
					timeout: 7 * 1000
				})
				.done(onceCorporateLinkOnPlace);
		});
	};

	var oncejQueryNotFound = function () {
		if (typeof mmcore.EH === 'function') {
			mmcore.EH(new Error("Act_RegBarrierClicks.js: Cannot find jQuery. Don't care about this error if it's not the barrier page."));
		}
	};

	// common events means all events except Corporate click
	var bindCommonEvents = function () {
		var $ = window.jQuery;
		var $document = $(document);

		$document.on('mousedown', '#matrix a', function (event) {
			var isRegBarrier = window.HurdleType === 'h1';
			var $target = $(event.target).closest('a');
			var href = $target.attr('href');

			if (event.which === 1 && !event.metaKey && isRegBarrier && !$target[0].mmClicked) {
				var attr = '';
				var className = $target.attr('class');

				// map attr by default class name
				if (href.indexOf('//registration.ft.com/signup/register') > -1) {
					attr = 'Registration';
				} else if (className.indexOf('P1Signup') > -1) {
					attr = 'Standard';
				} else if (className.indexOf('P2Signup') > -1) {
					attr = 'Premium';
				} else if (className.indexOf('P4Signup') > -1) {
					attr = 'Bundle';
				}

				if (attr) {
					$target[0].mmClicked = true;
					mmcore.$Action('RegBarrierClicks', 1, attr);
				}
			}
		});

		$document.on('mousedown', '#iaiBody a[href*="www.ftsub.com/WWAAB"]', function (event) {
			var isRegBarrier = window.HurdleType === 'h1';
			var $target = $(event.target);

			if (event.which === 1 && !event.metaKey && isRegBarrier && !$target[0].mmClicked) {
				$target[0].mmClicked = true;
				mmcore.$Action('RegBarrierClicks', 1, 'Newspaper');
			}
		});
	};

	var onceCorporateLinkOnPlace = function () {
		var elem = window.jQuery('#iaiBody a[href*="ftcorporate.ft.com"]')[0];
		var oldOnclick = elem.onclick;
		var isTracked = false;
		var isAllow = false;

		elem.onclick = function (event) {
			if (!isTracked) {
				if (event.preventDefault) {
					event.preventDefault();
				}

				if (event.stopImmediatePropagation) {
					event.stopImmediatePropagation();
				}

				if (event.stopPropagation) {
					event.stopPropagation();
				}

				mmcore.SetAction('RegBarrierClicks', 1, 'Corporate');
				mmcore.request()
					.done(function () {
						var $elem = window.jQuery('#iaiBody a[href*="ftcorporate.ft.com"]');

						isTracked = true;
						isAllow = true;
						simulateNativeClick($elem[0]);
					})
					.fail(function () {
						var $elem = window.jQuery('#iaiBody a[href*="ftcorporate.ft.com"]');

						isAllow = true;
						simulateNativeClick($elem[0]);
					});

			}

			if (isAllow && typeof oldOnclick === 'function') {
				oldOnclick.apply(this, arguments);
			}
		};
	};

	var simulateNativeClick = function (element) {
	    if('createEvent' in document) {
	        var doc = element.ownerDocument,
	            evt = doc.createEvent('MouseEvents');
	        evt.initMouseEvent('click', true, true, doc.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
	        element.dispatchEvent(evt);
	    } else {
	        element.click(); // IE
	    }
	};

	mmcore
		.waitFor(checkCommonConditions)
		.done(oncejQueryFound)
		.fail(oncejQueryNotFound);
}());

}catch(err){mmcore.EH(err);}
try{
;(function() {

	// Detects if user is of B2B type
	mmcore.isB2B = function() {
		var cookieAYSC = mmcore.GetCookie('AYSC', 1),
			userType = cookieAYSC.match(/PVT_27[A-Za-z0-9]{4,13}/) ? 'B2B' :'B2C';
		return userType === 'B2B'
	}

	// Detects if user is of B2C type
	mmcore.isB2C = function() {
		var cookieAYSC = mmcore.GetCookie('AYSC', 1),
			userType = cookieAYSC.match(/PVT_27[A-Za-z0-9]{4,13}/) ? 'B2B' :'B2C';
		return userType === 'B2C'
	}

})();
}catch(err){mmcore.EH(err);}
try{
;(function (m) {  
    'use strict';  
  
    function Campaign(config) {  
        this._objStyle = {};  
        this._config = config;  
        this.name = config.name;  
        this.mmPath = config.mmPath;  
    }  
    Campaign.prototype.addStyle = (function () {  
        var cg1 = document.getElementById(m.cprefix + '1'), st;  
        return function (css, name) {  
            st = this._objStyle[name];  
            name = name || "mm_style";  
            if (!st) {  
                st = document.createElement("style");  
                st.type = "text/css";  
                cg1.parentNode.insertBefore(st, cg1);  
                this._objStyle[name] = st;  
            }  
            if (st.styleSheet) {  
                st.styleSheet.cssText += css;  
            } else {  
                st.innerHTML += css;  
            }  
        };  
    }());  
    Campaign.prototype.removeStyle = function (name) {  
        var st = this._objStyle[name];  
        name = name || "mm_style";  
        if (st) {  
            st.parentNode.removeChild(st);  
        }  
        delete this._objStyle[name];  
    };  
    Campaign.prototype.preloadImages= function (tc) {  
        if (!tc) {  
            return false;  
        }  
        var self = this, mb, con, v, tcc, src, i, gi = m.GenInfo[self._config.name];  
        self.mb = {};  
        self._rmb = [];  
        for (mb in tc) {  
            if (tc.hasOwnProperty(mb)) {  
                v = gi[mb.toLowerCase()];  
                self.mb[mb] = v;  
                if (!/undefined|default/i.test(v)) {  
                    self._rmb.push(mb);  
                    if (!self._config.mmPath) {  
                        continue;  
                    }  
                    for (con in tc[mb]) {  
                        if (tc[mb].hasOwnProperty(con)) {  
                            tcc = tc[mb][con];  
                            i = tcc.length;  
                            while (i--) {  
                                tc[mb][con][i] = tcc[i].replace(/\[mm_path\]([^)'"]+)/g, function (m, img) {  
                                    src = (new Image()).src = self._config.mmPath + img;  
                                    return src;  
                                });  
                            }  
                        }  
                    }  
                }  
            }  
        }  
        return self._rmb.length;  
    };  
    Campaign.prototype.render = function () {  
        var self = this,  
            isAsync = !!self._config.pageID,  
            content = {  
                show: function () {  
                    self.removeStyle(self._config.name);  
                },  
                hide: function () {  
                    self.addStyle(self._config.hide + '{position: relative; left:-10000px}', self._config.name);  
                }  
            },  
            checker = (function () {  
                var is_checker_set = typeof self._config.checker === 'function',  
                    exit = (isAsync) ? false : m._docEnd;  
                return function () {  
                    return is_checker_set ? (self._config.checker() || exit) : m._docEnd;  
                };  
            }()),  
            stopChecker = (function () {  
                var is_checker_set = typeof self._config.stopChecker === 'function',  
                    exit = m._docEnd;  
                if (isAsync) {  
                    exit = false;  
                    setTimeout(function () { exit = true; }, self._config.checkerTimeout || 5000);  
                }  
                return function () {  
                    return is_checker_set ? (self._config.stopChecker() || exit) : exit;  
                };  
            }());  
        if (isAsync || self.preloadImages(tc || null)) {  
            content.hide();  
        } else {  
            return;  
        }  
        (function waiter() {  
            if (checker()) {  
                if (isAsync) {  
                    m._async = true;  
                    m.SetPageID(self._config.pageID);  
                    if (typeof self._config.beforeCGRequest === 'function') {  
                        self._config.beforeCGRequest();  
                    }  
                    m.AddDocLoadHandler(function () {});  
                    m.CGRequest(function () {  
                        m.AddDocLoadHandler(function () {  
                            if (typeof self._config.afterCGRequest === 'function') {  
                                self._config.afterCGRequest();  
                            }  
                            content.show();  
                        });  
                    });  
                    m.HideMaxyboxes = function () {};  
                    setTimeout(content.show, self._config.emergencyOpenTimeout || 3000);  
                } else if (self._rmb.length) {  
                    m.RenderMaxyboxes(self._rmb);  
                    content.show();  
                }  
            } else if (!stopChecker()) {  
                setTimeout(waiter, 50);  
            } else {  
                content.show();  
            }  
        }());  
    };  
    m.initCampaign = function (config) {  
        return new Campaign(config);  
    };  
}(window.mmcore));  
}catch(err){mmcore.EH(err);}
try{
(function ( m ) {
	m.initCampaignForUser = function(){};

	var cookie, usr, S;

	cookie = m.GetCookie( 'AYSC', 1 );

	if(!cookie || cookie === "\"\"" || !cookie.match(/\S*/)){
		return;
	}

	usr = cookie.match( /PVT_27[A-Za-z0-9]{4,13}/ )? 'B' :'C';

	S = (function () {
		var style, isStyle, mmcoreFR;
		mmcoreFR = document.getElementById( 'mmcore.1' );
		isStyle = function ( style ) { return style && style.nodeType === 1 && style.nodeName.toLowerCase() === 'style'; };
		return {
			attachStyle: function ( text, styleOut ) {
				if ( !text || typeof text !== 'string' || text === '' ) { return false; }
				if ( isStyle( styleOut ) ) { style = styleOut; } else {
					style = document.createElement( 'style' );
					style.type = 'text/css';
				}
				if ( style.styleSheet ) { style.styleSheet.cssText += text; } else { style.innerHTML += text;}
				mmcoreFR.parentNode.insertBefore( style, mmcoreFR );
				return style;
			},
			removeStyle: function ( styleOut ) {
				if ( !styleOut ) { styleOut = style; }
				if ( isStyle( styleOut ) && styleOut.parentNode ) { styleOut.parentNode.removeChild( styleOut ); } else { return false; }
				return true;
			}
		};
	}());


	m.initCampaignForUser = function ( user, testname, cssSelectorOrCustomRender, onWrongUser ) {
		var style, cssSelector, customRenderer;

		if ( user.toUpperCase() !== usr ) {
			if ( typeof onWrongUser === 'function' ) {
				onWrongUser.call(null, user, testname);
			}
			return;
		}

		if ( cssSelectorOrCustomRender ) {
			if ( typeof cssSelectorOrCustomRender === 'function' ) {
				customRenderer = cssSelectorOrCustomRender;
			} else {
				cssSelector = cssSelectorOrCustomRender;
				style = S.attachStyle( cssSelector + '{ position: relative !important; left: -9999px !important; }' );

				setTimeout( function () {
					S.removeStyle( style );
				}, 5000 );
			}
		}

		if ( typeof customRenderer === 'function' ) {
			customRenderer.call(null, user, testname);
		} else {
			m._async = true;
			m.HideMaxyboxes = function () {};
			m.SetPageID( testname + '_pageID' );
			m.CGRequest( function () {
				if ( cssSelector ) {
					m.AddDocLoadHandler( function () {
						setTimeout( function () {
							S.removeStyle( style );
						} );
					} );
				}
			} );
		}
	};

}( window.mmcore ));

}catch(err){mmcore.EH(err);}
try{
(function (global, mmcore, undefined) {
	'use strict';

	var Helpers;

	/**
	 * Common FT helpers
	 * API:
	 * - mmcore.helpers.getAYSCfield(field)
	 * - mmcore.helpers.setAYSCfield(field, value)
	 * - mmcore.helpers.getPrice(type, level, [isEmulation])
	 * - mmcore.helpers.objectForEach(object, callback)
	 * - mmcore.helpers.iJentoTag()
	 * - debuggind:
	 *   - mmcore.helpers.printPrice([countryAbbreviation])
	 */
	Helpers = function () {
		this.props = {
			price: {
				monthly: {
					newspaper: {
						europe: '&euro;98.15',
						GBR: '&pound;76.05',
						USA: '$64.68',
						AUS: 'N/A',
						HKG: '$552.50',
						SGP: '$96.96',
						JPN: '&yen;13,520.00',
						CHE: 'CHF 157.19',
						other: 'N/A'
					},
					premium: {
						europe: '&euro;47.19',
						GBR: '&pound;40.95',
						USA: '$51.52',
						AUS: '$48.30',
						HKG: '$388.50',
						SGP: '$63.05',
						JPN: '&yen;6,088.00',
						CHE: 'CHF 52.65',
						other: '$51.52'
					},
					standard: {
						europe: '&euro;33.00',
						GBR: '&pound;29.00',
						USA: '$35.00',
						AUS: '$33.00',
						HKG: '$270.00',
						SGP: '$43.00',
						JPN: '&yen;4,800.00',
						CHE: 'CHF 36.00',
						other: '$35.00'
					},
					trial: {
						europe: '&euro;1',
						GBR: '&pound;1',
						USA: '$1',
						AUS: '$1',
						HKG: '$10',
						SGP: '$1',
						JPN: '&yen;100',
						CHE: 'CHF 1',
						other: '$1'
					}
				},
				annual: {
					newspaper: {
						europe: '&euro;17.42',
						GBR: '&pound;13.50',
						USA: '$11.48',
						AUS: 'N/A',
						HKG: '$98.08',
						SGP: '$17.21',
						JPN: '&yen;2,400.00',
						CHE: 'CHF 27.90',
						other: 'N/A'
					},
					premium: {
						europe: '&euro;8.39',
						GBR: '&pound;7.15',
						USA: '$8.99',
						AUS: '$8.59',
						HKG: '$68.99',
						SGP: '$11.15',
						JPN: '&yen;1,090.00',
						CHE: 'CHF 9.25',
						other: '$8.99'
					},
					standard: {
						europe: '&euro;5.75',
						GBR: '&pound;5.19',
						USA: '$6.25',
						AUS: '$5.99',
						HKG: '$47.99',
						SGP: '$7.69',
						JPN: '&yen;849.00',
						CHE: 'CHF 6.39',
						other: '$6.25'
					},
					trial: {
						europe: '&euro;1',
						GBR: '&pound;1',
						USA: '$1',
						AUS: '$1',
						HKG: '$10',
						SGP: '$1',
						JPN: '&yen;100',
						CHE: 'CHF 1',
						other: '$1'
					}
				}
			},
			europe: [
				'ALB',
				'AUT',
				'BEL',
				'BGR',
				'CYP',
				'CZE',
				'DNK',
				'EST',
				'FIN',
				'FRA',
				'PYF',
				'DEU',
				'GRC',
				'HUN',
				'IRL',
				'ITA',
				'LVA',
				'LIE',
				'LTU',
				'LUX',
				'MLT',
				'MDA',
				'MCO',
				'MNE',
				'NLD',
				'NLD',
				'NOR',
				'POL',
				'PRT',
				'ROU',
				'SRB',
				'SVK',
				'SVN',
				'ESP',
				'SWE',
				'CHE',
				'TUR'
			]
		};
	};

	/**
	 * @param {Number|String}    field Number of field in the `AYSC` cookie
	 * @returns {String|Boolean} Value if success or false if field doesn't exist
	 *
	 * @note:
	 *    If field was set to empty string like so `_22_` function returns an empty string ''
	 *    Else if cookie hasn't field inside then function returns `false`
	 */
	Helpers.prototype.getAYSCfield = function (field) {
		var aysc;
		var match;

		field = String(field);
		if (field.length < 2) {
			field = '0' + field;
		}
		aysc = mmcore.GetCookie('AYSC', true);
		match = (aysc.match(new RegExp('_' + field + '(.*?)_')) || [null, null])[1];
		if (!match) {
			match = (aysc.match(new RegExp('_' + field + '_')) ? ['', ''] : [null, null])[0];
		}
		if (!field || !aysc || match === null) {
			return false;
		}
		return match;
	};

	/**
	 * @param {Number|String}    field Number of field in `AYSC` cookie
	 * @param {Number|String|Null}    value New value to be assigned in `field` field of `AYSC`
	 * @returns {String|Boolean} `AYSC` if success or false if field doesn't exist
	 *
	 * @example:
	 *     mmcore.helpers.setAYSCfield(27)       - do nothing
	 *     mmcore.helpers.setAYSCfield(27, 45)   - set 27th field to 45, like so: _2745_
	 *     mmcore.helpers.setAYSCfield(27, '')   - set 27th field to be empty, like so: _27_
	 *     mmcore.helpers.setAYSCfield(27, null) - erease completely 27th field from cookie
	 */
	Helpers.prototype.setAYSCfield = function (field, value) {
		var aysc;
		var rex;
		var rexEmpty;
		var match;

		field = String(field);
		value = String(value);
		/** trim value */
		value = value.replace(/^\s+|\s+$/g, '');
		if (!field || value === 'undefined') {
			return false;
		}
		if (field.length < 2) {
			field = '0' + field;
		}
		aysc = mmcore.GetCookie('AYSC', true);
		rex = new RegExp('_' + field + '.+?_');
		rexEmpty = new RegExp('_' + field + '_');
		if (value === 'null') {
			value = aysc.replace(rex, '_');
			value = value.replace(rexEmpty, '_');
		} else if (value === '') {
			value = field + '_';
			match = (aysc.match(rex) || aysc.match(rexEmpty) || [null])[0];
			value = match ? aysc.replace(rex, '_' + field + '_').replace(rexEmpty, '_' + field + '_') : aysc + value;
		} else {
			value = field + value + '_';
			match = (aysc.match(rex) || aysc.match(rexEmpty) || [null])[0];
			value = match ? aysc.replace(rex, '_' + value).replace(rexEmpty, '_' + value) : aysc + value;
		}
		mmcore.SetCookie('AYSC', value, 2 * 365, true);
		return mmcore.GetCookie('AYSC', true);
	};

	/**
	 * @param   {String}         type                           Type by duration `m`, `monthly` or `a`, `annual`
	 * @param   {String}         level                          Type by cost `newspaper`, `standard`, `premium`, `trial`
	 * @param   {Boolean|String} [emulationFlagOrTargetCountry] Debugging flag or target
	 * @returns {String}                                        Price
	 */
	Helpers.prototype.getPrice = function (type, level, emulationFlagOrTargetCountry) {
		var i,
			field14;

		type = type.toLowerCase();
		if (type === 'm') {
			type = 'monthly';
		}
		if (type === 'a') {
			type = 'annual';
		}
		i = this.props.europe.length;
		if (typeof emulationFlagOrTargetCountry === 'boolean') {
			field14 = (this.props.AYSC.match(/_14(.*?)_/) || [null, null])[1];
		} else if (typeof emulationFlagOrTargetCountry === 'string') {
			field14 = emulationFlagOrTargetCountry;
		} else {
			field14 = (mmcore.GetCookie('AYSC', true).match(/_14(.*?)_/) || [null, null])[1];
		}
		if (!field14) {
			return false;
		}
		if (this.props.price[type][level][field14]) {
			return this.props.price[type][level][field14];
		} else {
			while (i--) {
				if (this.props.europe[i] === field14) {
					return this.props.price[type][level].europe;
				}
			}
		}
		return this.props.price[type][level].other;
	};

	/**
	 * Function for debugging purpose only don't let it to be in production
	 * @param {String} abbr           Abbreviation of country according to the FT spec
	 * @param {Boolean} [isEmulation] Variable for debugging
	 */
	Helpers.prototype.setFakeLocation = function (abbr, isEmulation) {
		var cookie;

		if (!abbr || abbr.length !== 3) {
			return false;
		}
		if (isEmulation) {
			cookie = (this.props.AYSC || mmcore.GetCookie('AYSC', true))
				.replace(/_14.*?_/, '_14' + abbr.toUpperCase() + '_');
		} else {
			cookie = mmcore
				.GetCookie('AYSC', true)
				.replace(/_14.*?_/, '_14' + abbr.toUpperCase() + '_');
		}
		if (!cookie) {
			return false;
		}
		if (isEmulation) {
			this.props.AYSC = cookie;
		} else {
			mmcore.SetCookie('AYSC', cookie, 1, true);
		}
		return cookie;
	};

	/**
	 * Function for price debugging
	 *
	 * Usage example:
	 * mmcore.helpers.printPrice()
	 * mmcore.helpers.printPrice('JPN')
	 * mmcore.helpers.printPrice('CHE')
	 */
	Helpers.prototype.printPrice = function () {
		var abbr;
		var isEmulation;

		abbr = arguments[0] || '';
		abbr = abbr.toUpperCase();
		if (abbr) {
			this.setFakeLocation(abbr, true);
			isEmulation = true;
		} else {
			abbr = (mmcore.GetCookie('AYSC', true).match(/_14(.*?)_/) || [null, null])[1];
			isEmulation = false;
		}
		/* jshint ignore:start */
		if (window.console && window.console['log'] && typeof window.console['log'] === 'function') {
			window.console['log']([
				abbr,
				'    Monthly',
				'        Newspaper ' + this.getPrice('m', 'newspaper', isEmulation),
				'        Premium   ' + this.getPrice('m', 'premium', isEmulation),
				'        Standard  ' + this.getPrice('m', 'standard', isEmulation),
				'        Trial     ' + this.getPrice('m', 'trial', isEmulation),
				'    Annual',
				'        Newspaper ' + this.getPrice('a', 'newspaper', isEmulation),
				'        Premium   ' + this.getPrice('a', 'premium', isEmulation),
				'        Standard  ' + this.getPrice('a', 'standard', isEmulation)
			].join('\n'));
		}
		/* jshint ignore:end */
	};

	/**
	 * Track iJento as per specification
	 * @param  {String}  campaignName
	 * @param  {prefix}  prefix
	 * @param  {Object}  mapping
	 * @param  {Boolean} isDebug
	 *
	 * @example:
			// don't track, just print to console for QA
			mmcore.helpers.iJento('T9TrialsVsRegistrati', 'T9', {
				"A T9Registrati": {
					"FreeTrial": 2,
					"OnePound": 3
				}
			}, true);
	 *
			// track without printing
			mmcore.helpers.iJento('T9TrialsVsRegistrati', 'T9', {
				"A T9Registrati": {
					"FreeTrial": 2,
					"OnePound": 3
				}
			});
	 */
	Helpers.prototype.iJento = function (campaignName, prefix, mapping, isDebug) {
		var genInfo;
		var campaign;
		var log;
		var variantLower;
		var splitten;
		var elemLetter;
		var elemName;
		var _error;
		var isConsoleError;
		var isConsoleLog;
		var isDebugError;
		var _log;

		_error = 'error';
		_log = 'log';
		isConsoleError = window.console && typeof window.console[_error] === 'function';
		isConsoleLog = window.console && typeof window.console[_log] === 'function';
		isDebugError = isConsoleError && isDebug;
		genInfo = window.mmcore.GenInfo;
		log = 'creativeID=';
		mmcore.waitFor(function () {
			var si = window.si;
			return si && si.sendAdditionalTracer;
		}).done(function () {
			var elem;
			var variant;
			if (!genInfo) {
				if (isDebugError) {
					window.console[_error]('iJento: (' + campaignName + ') Please wait mmcore.GenInfo');
				}
				return;
			}
			if (!campaignName) {
				if (isDebugError) {
					window.console[_error]('iJento: (' + (campaignName || 'undefined') + ') Please set campaign name as per admin UI for iJento tracking');
				}
				return;
			}
			if (!prefix || !Object.prototype.toString.call(prefix).toLowerCase().match(' string')) {
				if (isDebugError) {
					window.console[_error]('iJento: (' + campaignName + ') Please set campaign prefix for iJento tracking');
				}
				return;
			}
			if (!mapping || !Object.prototype.toString.call(mapping).toLowerCase().match(' object')) {
				if (isDebugError) {
					window.console[_error]('iJento: (' + campaignName + ') Please set variants mapping for iJento tracking');
				}
				return;
			}
			campaign = genInfo[campaignName];
			if (!campaign) {
				if (isDebugError) {
					window.console[_error]('iJento: (' + campaignName + ') Campaign wasn\'t generated');
				}
				return;
			}
			log += prefix.toUpperCase();
			for (elem in mapping) {
				if (mapping.hasOwnProperty(elem)) {
					splitten = elem.split(' ');
					elemLetter = splitten[0].toUpperCase();
					elemName = splitten[1].toLowerCase();
					if (campaign[elemName]) {
						for (variant in mapping[elem]) {
							if (mapping[elem].hasOwnProperty(variant)) {
								variantLower = variant.toLowerCase();
								if (campaign[elemName] === 'Default') {
									log = log + '|' + elemLetter + 1;
									break;
								} else if (campaign[elemName] === variantLower) {
									log = log + '|' + elemLetter + mapping[elem][variant];
									break;
								}
							}
						}
					}
				}
			}

			if (isDebug && isConsoleLog) {
				if (log === 'creativeID=' + prefix.toUpperCase()) {
					if (isDebugError) {
						window.console[_error]('iJento: (' + campaignName + ') Something is wrong with variants mapping\n' + JSON.stringify(mapping));
					}
				} else {
					window.console[_log]('/MVT, ' + log);
				}
			} else {
				window.si.sendAdditionalTracer('/MVT', log);
				return '/MVT, ' + log;
			}
		});
	};

	Helpers.prototype.objectForEach = function (obj, callback) {
		for (var prop in obj) {
			if (obj.hasOwnProperty(prop) && typeof callback === 'function') {
				callback(obj[prop], prop, obj);
			}
		}
	};

	Helpers.prototype.iJentoTag = function () {
		var helpers, buffer;

		if (mmcore.GetCookie('opc.enabled') || mmcore.GetCookie('cfgID') === '1') {
			return;
		}

		helpers = this;
		buffer = mmcore.GetCookie('mm_ijento_sent', true);

		this.objectForEach(mmcore.GenInfo, function (generation, campaign) {
			// The | in the end to ensure campaign name is not a part of another campaign name.
			if (buffer.indexOf(campaign + '|') > -1) {
				return;
			}

			var tag = 'creativeID=' + campaign;

			helpers.objectForEach(generation, function (variant, element) {
				tag = tag + '|' + element + ' ' + variant;
			});

			window.si.sendAdditionalTracer('/MVT', tag);

			buffer = buffer + campaign + '|';
			mmcore.SetCookie('mm_ijento_sent', buffer, 128, true);
		});
	};

	mmcore.helpers = new Helpers();
})(window, window.mmcore);

}catch(err){mmcore.EH(err);}
try{
;(function() {
   mmcore.trackSessionCam = function(testName, cust_page) {

    mm_sc_info="";

      /*Analyse GenInfo and obtain Variants shown*/
      var gen = mmcore.GenInfo; 
      for (var element in gen[testName]) {
         if (gen[testName].hasOwnProperty(element)) {
            if (gen[testName][element] === "Default") {
            mm_sc_variant = element + '_' + gen[testName][element];
            }
            else {
            mm_sc_variant = gen[testName][element];
            }
            /*Check if OPC is installed or sandbox enabled. 
            If it is prefix experience with OPC so we know what sessions were QA sessions
            */
            if (mmcore.GetCookie('opc.enabled') || mmcore.GetCookie('cfgid')) {
            mm_sc_info += "OPC_" + mm_sc_variant + '|';
            }
            else {
            mm_sc_info += mm_sc_variant + '|';  
            }
         }
      }                       
                                    
      mm_sc_info=mm_sc_info.replace(/\|$/, "").toUpperCase();
      var mm_sc_page = document.location.pathname + '_Maxymiser_' + testName;
      mm_sc_page = mm_sc_page.replace(/^\//, "");

      /*Check if sessionCamRecorder is defined. If not we're executing before 
      sessioncam and can overwrite the page name for filtering within sessioncam*/
      mmcore.AddDocLoadHandler( function() {
         var mm_sc_timer = setInterval(function() {
            if(window.sessioncamConfiguration) {
               if (cust_page) {
                  if(window.sessionCamRecorder.createVirtualPageLoad) {
                  window.sessionCamRecorder.createVirtualPageLoad(mm_sc_page);
                  }
               }
               //Custom Variable Code
               if (!window.sessioncamConfiguration.customDataObjects) {
               window.sessioncamConfiguration.customDataObjects = new Array();
               }
               var item = { key: "MVT", value: mm_sc_info };
               window.sessioncamConfiguration.customDataObjects.push(item);
               clearInterval(mm_sc_timer);
            }
         }, 50);
      })    
   }
})();
}catch(err){mmcore.EH(err);}
try{
/**
 * 04.11.2014
 * Handle page refresh to not track action (by Andrey Cherepovskiy).
 * Alexander Tytskiy
 */
(function () {
	var udnef;
	var mmcore = window.mmcore;
	var localStorage = window.localStorage;
	var preventLSName = 'mm-prevent-actions';
	var newPreventedActions = [];
	var preventObj = {};
	var currentTS = new Date().getTime();
	var miliSecsFromUnload = 5000;
	var unloadActions = window.onunload;

	var testLocalStorage = function () {
		var test = 'test';
		try {
			localStorage.setItem(test, test);
			localStorage.removeItem(test);
			return true;
		} catch (e) {
			return false;
		}

	};

	var isLocalStorage = testLocalStorage();

	var isEmptyObj = function (obj) {
		for (var prop in obj) {
			if (obj.hasOwnProperty(prop))
				return false;
		}

		return true;
	};

	if (localStorage.getItem(preventLSName)) {
		try {
			if (isLocalStorage) {
				preventObj = JSON.parse(localStorage.getItem(preventLSName));
			} else {
				preventObj = JSON.parse(mmcore.GetCookie(preventLSName, 1));
			}
		} catch (err) {
			preventObj = {};
		}
	}

	for (var prop in preventObj) {
		if (preventObj.hasOwnProperty(prop) && (+preventObj[prop] + miliSecsFromUnload < currentTS)) {
			delete preventObj[prop];
		}
	}

	window.onunload = function () {
		for (var i = 0; i < newPreventedActions.length; i++) {
			preventObj[newPreventedActions[i]] = new Date().getTime();

		}

		if (isEmptyObj(preventObj)) {
			if (isLocalStorage) {
				localStorage.removeItem(preventLSName);
			} else {
				mmcore.SetCookie(preventLSName, 0, -1, 1);
			}
		} else {
			if (isLocalStorage) {
				localStorage.setItem(preventLSName, JSON.stringify(preventObj));
			} else {
				mmcore.SetCookie(preventLSName, JSON.stringify(preventObj), 0, 1);
			}
		}

		if (unloadActions) {
			return unloadActions.apply(this, arguments);
		}
	};

	mmcore.T15 = mmcore.T15 || {};

	mmcore.T15.setPreventedAction = function (action, val, attr, settings) {
		settings = settings || {};

		settings.request = settings.request !== false;

		if (!preventObj[action]) {
			mmcore.SetAction(action, val || 1, attr || '');
			mmcore.SetPageID('mmevents');
			mmcore._async = true;

			if (settings.request) {
				mmcore.CGRequest();
			}
		}

		newPreventedActions.push(action);
	};

	mmcore.T15.setPreventedAction.preventObj = preventObj;
	mmcore.T15.setPreventedAction.newPreventedActions = newPreventedActions;
})();

}catch(err){mmcore.EH(err);}
try{
/**
 * 04.11.2014
 * Clean Cookie for Subscription action
 * Alexander Tytskiy
 */
(function () {
	'use strict';

	var locationHref = window.location.href;

	if (locationHref.indexOf('://registration.ft.com') < 0 &&
		locationHref.indexOf('://sign-up-app-test.memb.ft.com') < 0 &&
		locationHref.indexOf('://subscription.ft.com') < 0 &&
		locationHref.indexOf('://sub.ft.com/bforma') < 0 &&
		locationHref.indexOf('://sub.ft.com/bformm') < 0) {
		// if this is no one of subscriptions domains then clean cookie
		mmcore.SetCookie('mm_t15_interacted', '', -1, true);
	}
}());

}catch(err){mmcore.EH(err);}
try{
;(function(mmcore, cmp) {
	document.write('<style type="text/css" id="' + cmp.sId + '">#iaiWrapperAnon, #corppop_overlay {position:relative;left:-10000px;}</style>')

	var cookie = mmcore.GetCookie( 'AYSC', true),
		usrId,

		showContent = function() {
			var st = document.getElementById(cmp.sId);
			if (st && st.parentNode) {
				st.parentNode.removeChild(st);
			}
		};

	// Campaign cannot be generated when user is logged in or when there's no posibility to define the user type
	if(!cookie || cookie === "\"\"" || !cookie.match(/\S*/)){
		showContent();
		return;
	}

	usrId = cookie.match( /PVT_27([A-Za-z0-9]{4,13})/ );
	if (!usrId || (usrId && usrId.length < 2)) {
		showContent();
		return;
	}
	usrId = usrId[1];
	for (var i = 0, len = cmp.exclusionIDs.length; i < len; i++) {
		if (cmp.exclusionIDs[i] === usrId) {
			showContent();
			return;
		}
	}

	mmcore.AddDocLoadHandler(function() {
		if (!document.getElementById("DRMUpsell") && !document.getElementById("banlb")) {
			// The page does not container for barrier/overlay
			showContent();
			return;
		} else {
			mmcore.waitFor(function () {
				return (typeof (window.jQuery) === "function" && (!!document.getElementById("opOverlay") || !!document.getElementById("corppop_overlay")));
			}, {isNotStoppedOnDocumentReadiness: true, timeout: 2500})
				.done(function () {
					setTimeout(function() {
						if (window.jQuery("#iaiMain").hasClass("H15") || window.jQuery("#banlb #corppop_overlay").size() > 0) {
							mmcore.SetPersCriterion("T5GenPage", "AM");

							mmcore._async = true;
							mmcore.SetPageID(cmp.pageID);
							mmcore.CGRequest();
						} else {
							showContent();
						}
					}, 0);
				})
				.fail(function () { showContent(); });
		}
	});
})(window.mmcore, {
	sId: "mmt5btb-hidden",
	pageID: "t5b2b-barrier",
	exclusionIDs: ["P8d9jfKOz1ik8", "rdDUjpjX7tGIH", "N4iUwa4kclbLq"]
});
}catch(err){mmcore.EH(err);}
try{
;(function(mmcore) {

	var // Check for qualification cookie
		markerCookieValue = mmcore.GetCookie("mm_t10_flag", true),
		// Check if qualification cookie is valid
		markerCookieIsValid = (markerCookieValue && parseInt(markerCookieValue, 10) < 5),
		// Check for user logged in
		isUserLoggedIn = /USERID\=\d+/i.test(mmcore.GetCookie("FT_User", 1)),

		// Check for page types
		isThePage = (typeof(FT) !== "undefined" && typeof(FT.isPage) === "object" && FT.isPage.Site === 1),
		isTheTitlePage = (isThePage && FT.isPage.Section === 0 && FT.isPage.Front === 1),
		isTheSectionPage = (isThePage && FT.isPage.Section === 1 && FT.isPage.Front === 0),
		isTheArticlePage = (document.querySelectorAll("meta[property='og:type'][content='article']") || []).length,

		// Check for user type: B2B or B2C
		userType = mmcore.GetCookie('AYSC', 1).match(/PVT_27[A-Za-z0-9]{4,13}/) ? 'B2B' : 'B2C',
		// Check for journey type: Registered, Premium, Standard, Bundle or Corporate
		journeyType = mmcore.GetCookie('mm_t10_user_journey', 1),

		// First A2 generation page (this cookie is set before A2 generation)
		A2WasGeneratedInThisSession = mmcore.GetCookie('mm_t10_a2_was_shown_in_this_session', 1),

		A3closed = mmcore.GetCookie('mm_t10_closed', true),

		// Depends on cookies defined in A3: mm_t10_m + ["", "m", "f", "p", "r", "a"]
		A3sawAllTooltips = Boolean(
			mmcore.GetCookie('mm_t10_m', true) &&
			mmcore.GetCookie('mm_t10_f', true) &&
			mmcore.GetCookie('mm_t10_p', true) &&
			mmcore.GetCookie('mm_t10_r', true) &&
			mmcore.GetCookie('mm_t10_a', true)
		);

	if (
	    mmcore.GetCookie('mm_t10_a3', true) &&
	    (A3closed || A3sawAllTooltips)
	) {
		// Early exit to not generate as per spec.
		return;
	}

	// Hacking variable to be dependent on another rule.
	markerCookieIsValid = Boolean(markerCookieIsValid && !A3closed);

	if ((markerCookieIsValid || mmcore.GetCookie("mm_t10_step", true)) &&
		(isTheTitlePage || isTheSectionPage || isTheArticlePage) &&
		isUserLoggedIn && userType && journeyType &&
		!A2WasGeneratedInThisSession) {

		// Setting of mandatory PCs
		mmcore.SetPersCriterion('Usertype', userType); // B2B or B2C
		mmcore.SetPersCriterion('T10_SubsLevel', journeyType); // Registered, Premium, Standard, Bundle or Corporate

		mmcore._async = true;
		mmcore.SetPageID("t10-page");
		mmcore.HideMaxyboxes = function() {};
		mmcore.CGRequest();
	}

})(window.mmcore);

}catch(err){mmcore.EH(err);}
try{
(function (global, mmcore, undefined) {
    'use strict';

    if (window.location.href && window.location.href.toLowerCase().indexOf('//registration.ft.com/') > - 1) {
        return;
    }
    mmcore.SetCookie('mm-t3-barrier-clicked', '', -1, true);
})(window, window.mmcore);
}catch(err){mmcore.EH(err);}
try{
// common
(function (global, mmcore, undefined) {
    'use strict';

    var Helpers;

    /**
     * Helpers for specific campaign
     */
    Helpers = function (testNumber) {
        this.testNumber = testNumber;
        if (!testNumber) {
            throw 'Please set Maxymiser Test number';
        }
        this.isFirefox = this.detectFirefox();
        this.data = {};
    };

    Helpers.prototype.makeDispatcher = function() {
        var dispatcher;

        dispatcher = this.$({});
        dispatcher.subscribe = function() {
            if (dispatcher.on) {
                return dispatcher.on.apply(dispatcher, arguments);
            } else {
                return dispatcher.bind.apply(dispatcher, arguments);
            }
        };
        dispatcher.unsubscribe = function() {
            if (dispatcher.off) {
                return dispatcher.off.apply(dispatcher, arguments);
            } else {
                return dispatcher.unbind.apply(dispatcher, arguments);
            }
        };
        dispatcher.publish = function() {
            return dispatcher.trigger.apply(dispatcher, arguments);
        };
        this.dispatcher = dispatcher;
    };

    Helpers.prototype.setCssNamespace = function () {
        var testNumber;

        testNumber = this.testNumber.toLowerCase();
        this.$('body').addClass('mm-' + testNumber);
    };

    Helpers.prototype.detectFirefox = function () {
        var browser;

        browser = navigator.userAgent;
        if (browser && browser.toLowerCase().indexOf('firefox') > -1) {
            return true;
        } else {
            return false;
        }
    };

    Helpers.prototype.fixFirefoxHistory = function () {
        var hash;

        if (this.isFirefox) {
            hash = location.hash;
            hash = hash.length ? '' + hash + '-mm' : 'mm';
            location.hash = hash;
        }
    };

    Helpers.prototype.redirect = function (url) {
        if (url) {
            this.fixFirefoxHistory();
            if (location.assign) {
                location.assign(url);
            } else {
                location = url;
            }
        }
    };

    Helpers.prototype.delegateEvent = function (eventType, selOrObj, callback) {
        if (!selOrObj || !eventType || !callback) {
            throw '' + this.testNumber + ' delegateEvent: invalid arguments';
        }
        if (this.$.fn.on) {
            this.$(document).on(eventType, selOrObj, callback);
        } else if (this.$.fn.live) {
            this.$(selOrObj).live(eventType, callback);
        }
    };

    Helpers.prototype.undelegateEvent = function (eventType, selOrObj, callback) {
        if (!eventType) {
            throw '' + this.testNumber + ' undelegateEvent: invalid arguments';
        }
        if (this.$.fn.off) {
            this.$(document).off(eventType, selOrObj, callback);
        } else if (this.$.fn.die) {
            this.$(selOrObj).die(eventType, callback);
        }
    };

    Helpers.prototype.injectStyle = function (styleString) {
        var style;

        style = document.createElement('style');
        style.type = 'text/css';
        if (style.styleSheet) {
            style.styleSheet.cssText = styleString;
        } else {
            style.appendChild(document.createTextNode(styleString));
        }
        document.getElementsByTagName('head')[0].appendChild(style);
        return style;
    };

    Helpers.prototype.trackAsyncAction = function (data) {
        mmcore._async = true;
        mmcore.SetPageID('events');
        mmcore.SetAction(data.name, data.val || 1, data.attr || '');
        mmcore.CGRequest(data.then || function () {});
    };

    Helpers.prototype.stripScripts = function (html) {
        return html.replace(/<script.*?>(.|\n)*?<\/script>/gim, '');
    };

    Helpers.prototype.wait = function (data) {
        var check,
            context,
            fail,
            freq,
            isResetFunction,
            reset,
            resetAllTimers,
            success,
            timers,
            waitInner;
        timers = {};
        resetAllTimers = function () {
            clearTimeout(timers.timer);
            clearTimeout(timers.resetTimer);
        };
        check = data.check || null;
        freq = data.frequency || data.freq || 0;
        reset = data.reset || null;
        context = data.context || global || window.top;
        if (typeof data.success === 'function') {
            success = function () {
                resetAllTimers();
                data.success();
                if (typeof data.always === 'function') {
                    data.always();
                }
            };
        } else {
            success = function () {
                resetAllTimers();
                if (typeof data.always === 'function') {
                    data.always();
                }
            };
        }
        if (typeof data.fail === 'function') {
            fail = function () {
                resetAllTimers();
                data.fail();
                if (typeof data.always === 'function') {
                    data.always();
                }
            };
        } else {
            fail = function () {
                resetAllTimers();
                if (typeof data.always === 'function') {
                    data.always();
                }
            };
        }
        isResetFunction = typeof reset === 'function' ? true : false;
        if (!isResetFunction) {
            reset = parseInt(reset, 10);
            reset = reset > -1 ? reset : null;
        }
        if (!check) {
            if (data.id) {
                check = function () {
                    return context.document.getElementById(data.id);
                };
            } else if (data.selector) {
                check = function () {
                    return context.document.querySelector(data.selector);
                };
            } else {
                throw 'wait(): no condition specified';
            }
        }
        if (check()) {
            success();
        } else if (isResetFunction && reset()) {
            fail();
        } else {
            waitInner = function (data) {
                timers.timer = setTimeout(function () {
                    if (check()) {
                        success();
                    } else {
                        if (isResetFunction && reset()) {
                            fail();
                        } else {
                            waitInner(data);
                        }
                    }
                }, freq);
            };
            if (reset && !isResetFunction) {
                timers.resetTimer = setTimeout(function () {
                    return fail();
                }, reset);
            }
            waitInner(data);
        }
    };

    Helpers.prototype.imgReplacer = function (path, img_to_replace, options) {
        var src = path,
            img_replaced = img_to_replace.cloneNode(false);

        img_replaced.src = src;
        img_to_replace.parentNode.replaceChild(img_replaced, img_to_replace);

        if (options) {
            img_replaced.title = options.title;
            img_replaced.alt = options.alt;
        }
    };

    Helpers.prototype.extend = function () {
        return Helpers.extend.apply(arguments);
    };

    Helpers.extend = function (child, parent) {
        var own,
            Ctor;

        own = {}.hasOwnProperty;
        for (var key in parent) {
            if (own.call(parent, key)) {
                child[key] = parent[key];
            }
        }
        Ctor = function () {
            this.constructor = child;
        };
        Ctor.prototype = parent.prototype;
        child.prototype = new Ctor();
        child.__super__ = parent.prototype;
        return child;
    };
    /* Helpers end */

    // export
    mmcore.T5 = Helpers;
})(window, window.mmcore);

// specific
(function (global, mmcore, Helpers, FT, undefined) {
    'use strict';

    var MyHelpers,
        helpers;

    /**
     * MyHelpers for specific campaign
     */
    MyHelpers = function () {
        MyHelpers.__super__.constructor.apply(this, arguments);
        this.test = 'aaa';
    };
    Helpers.extend(MyHelpers, Helpers);

    MyHelpers.prototype.hide = function () {
        var style;

        style = helpers.injectStyle([
            '#iaiMain {',
            '    position: absolute;',
            '    left: -9999999px;',
            '}'
        ].join('\n'));
        style.id = 'mm-t5-hider';
    };

    MyHelpers.prototype.show = function () {
        var style;

        style = document.getElementById('mm-t5-hider');
        if (style) {
            style.parentNode.removeChild(style);
        }
    };

    MyHelpers.prototype.checkDefaultGenerated = function () {
        var geninfo;

        geninfo = mmcore.GenInfo;
        if (geninfo && geninfo.T5PremiumBarrier &&
            geninfo.T5PremiumBarrier.t5barrier === 'Default') {
            return true;
        }
        return false;
    };

    MyHelpers.prototype.check = function () {
        var type,
            cookie;

        type = global.HurdleType;
        cookie = mmcore.GetCookie('FT_User', true);
        if (type === 'h3' && cookie.indexOf('_P2_') < 0 &&
            window.jQuery && mmcore.initCampaignForUser &&
            typeof mmcore.initCampaignForUser === 'function') {
            return true;
        }
        return false;
    };

    MyHelpers.prototype.generate = function () {
        var type,
            name;

        type = 'C';
        name = 'T5PremiumBarrier';
        mmcore.initCampaignForUser(type, name);
        helpers.wait({
            freq: 100,
            reset: 7000,
            check: function () {
                var isAllForFTanalitycs = mmcore.GenInfo.T5PremiumBarrier &&
                    FT && FT.analytics && FT.analytics.siteIntelligence &&
                    FT.analytics.siteIntelligence.sendAdditionalTracer;
                return isAllForFTanalitycs;
            },
            success: helpers.trackFTanalitycs
        });
        helpers.wait({
            freq: 100,
            reset: 5000,
            check: helpers.checkDefaultGenerated,
            success: helpers.show
        });
        helpers.wait({
            freq: 100,
            reset: 8000,
            check: function () {
                return helpers.data.isBarrierVariantShown;
            },
            fail: helpers.show
        });
    };

    MyHelpers.prototype.clearCookie = function () {
        mmcore.SetCookie('mm_t5_banner_clicked', '', -1, true);
    };

    MyHelpers.prototype.preload = function () {
        this.data.cta = '//service.maxymiser.net/cm/images-eu/1/1/1/FD05E394B6F8D813736CE24B4E8309F25BCE6B976FC74CBCD76EA1D80BAE19CF/ft-com/T5PremiumBarrier/cta-button.png';

        (new Image()).src = this.data.cta;
    };

    MyHelpers.prototype.checkLoggedInAsNonPremium = function () {
        var userCookie;

        userCookie = mmcore.GetCookie('FT_User', true);
        if (!userCookie) {
            return false;
        }
        if (userCookie.indexOf('_P2_') < 0) {
            return true;
        }
        return false;
    };

    MyHelpers.prototype.trackFTanalitycs = function () {
        var geninfo,
            test,
            barrierMaxyBox,
            a;

        a = 1;
        geninfo = mmcore.GenInfo;
        test = geninfo.T5PremiumBarrier;
        barrierMaxyBox = test.t5barrier;
        if (barrierMaxyBox === 'oldwinner') {
            a = 2;
        } else if (barrierMaxyBox === 'newbarrier') {
            a = 3;
        }
        FT.analytics.siteIntelligence.sendAdditionalTracer('/MVT', 'creativeID=T5|A' + a);
    };

    MyHelpers.prototype.redirect = function (url) {
        if (url) {
            if (location.hash) {
                location.hash = '';
            }
            this.fixFirefoxHistory();
            if (location.assign) {
                location.assign(url);
            } else {
                location = url;
            }
        }
    };
    /* MyHelpers end */

    helpers = mmcore.T5 = new MyHelpers('t5');
    helpers.wait({
        freq: 100,
        check: function () {
            return window.jQuery;
        },
        success: function () {
            helpers.$ = window.jQuery;
        }
    });
})(window, window.mmcore, window.mmcore.T5, window.FT);
}catch(err){mmcore.EH(err);}
try{
/**
 * 29.10.2014
 * Alexander Tytskiy
 */
(function () {
	'use strict';

	var hostname = window.location.hostname;

	// Don't waste time on registration/subscription/blogs domains.
	if (hostname.indexOf('registration.ft.com') > -1 ||
		hostname.indexOf('sub.ft.com') > -1 ||
		hostname.indexOf('blogs.ft.com') > -1) {
		return;
	}

	var mmcore = window.mmcore,

		campaignName = 'T15_SubsBarrierOffer',
		campaign = new mmcore.Campaign(campaignName, ['T15_SubsBarr'], 't15-hider'),

		isPrevented = false,

		TIMEOUT = 45 * 1000;

	var preload = function () {
		(new Image()).src = '//service.maxymiser.net/cm/images-eu/1/1/1/3C48E5A45C3C00561BFD594D76FB0671421D740FE39EA110DE048CA9F69304E7/ft-com/T9Helper/mm-t9-grey-check.png';
	};

	var select = function (selector, root) {
		root = root || document;
		return root.querySelectorAll(selector);
	};

	var initCampaignForB2C = function () {
		mmcore.initCampaignForUser('C', campaignName, function () {
			// Custom rendering inside initCampaignForUser().
			// Request fake page ID.
			mmcore.SetPageID(campaignName);
			mmcore._async = true;
			mmcore.CGRequest(function () {
				campaign.renderMaxyboxes();
				campaign.showContent();
			});

			// Emergency.
			setTimeout(function () {
				campaign.showContent();
			}, 8000);
		}, function () {
			// Execute if exact user type is not as given user type.
			campaign.showContent();
		});
	};

	var checkConditions = function () {
		return (!isPrevented &&
				window.jQuery &&
				// barrier
				select('#iaiMain.h2').length &&
				// last columnt in barrier
				select('#matrix .p-reg').length &&
				// class tells that table rendered
				(select('#matrix.three').length || select('#matrix.two').length ) &&
				// function for price changing, we insert price dinamically
				typeof window.updatePrice === 'function');
	};

	var onConditionsSuccess = function () {
		preload();
		initCampaignForB2C();
	};

	var initializeChecker = function () {
		mmcore
			.waitFor(checkConditions, {
				isNotStoppedOnDocumentReadiness: true,
				timeout: TIMEOUT
			})
			.done(onConditionsSuccess)
			.fail(function () {
				// Emergency.
				campaign.showContent();
			});
	};

	initializeChecker();
}());

}catch(err){mmcore.EH(err);}
try{
(function() {

	var userCookie = mmcore.GetCookie('FT_User', 1),
		visitorID = (userCookie.match(/USERID=([^:]+)/) || [])[1];

	if (visitorID) {
		if(mmcore.SetPersistentVisitorID) {
			mmcore.SetPersistentVisitorID(visitorID)
		} else {
			mmcore.SetVisitorID(visitorID)
		}
	}

})();
}catch(err){mmcore.EH(err);}
try{
;(function(mmcore) {
	var lh = location.href;
	var isBarrier = lh.indexOf('Authorised=false.html') > -1;

	if (lh.indexOf('registration/subscription-service/bpsp') > -1 ||
		lh.indexOf('registration/subscription-service/signuppsp') > -1 ||
		isBarrier) {
		mmcore.SetCookie('mm_T14_v4_visitedPages', '1', 1, 1);
	}

	if (lh.indexOf('registration.ft.com/signup/newspaper') > -1 ||
		lh.indexOf('registration.ft.com/signup/premium') > -1 ||
		lh.indexOf('registration.ft.com/signup/standard') > -1 ||
		lh.indexOf('registration.ft.com/signup/register') > -1 ||
		lh.indexOf('sub.ft.com/bforma') > -1 ||
		lh.indexOf('sub.ft.com/bformm') > -1 ||
		lh.indexOf('sub.ft.com/WWPSP') > -1) {
		if (document.referrer.indexOf('Authorised=false.html') + 1) {
			mmcore.SetCookie('mm_T14_v4_visitedPagesPSP2', '1', 1, 1);
		}
	}

	if (lh.indexOf('://registration.ft.com/registration/subscription-service/bpsp') > -1 ||
		lh.indexOf('://registration.ft.com/registration/subscription-service/signuppsp') > -1 ||
		lh.indexOf('://subscription.ft.com/?cpgid') > -1) {
		mmcore.SetCookie('mm_T14_v4_visitedPagesPSP2', '1', 1, 1);
	}
}(window.mmcore));

}catch(err){mmcore.EH(err);}
try{
/*
	Campaign checker
	15.05.2014
	Edward Shveday
*/

mmcore.AddDocLoadHandler(function(){
	var m = window.mmcore;

	var href = location.href;
	var cutHref = href.replace(/(,Authorised|#).+/, '');
	var viewCounts = m.GetCookie('mm_t7_viewCounts', 1);
	var lastPage = m.GetCookie('mm_t7_lastPage', 1);
	m.SetCookie('mm_t7_lastPage', cutHref, 128, 1);

	viewCounts = viewCounts ? parseInt(viewCounts, 10) : 0;
	if( (viewCounts > 2 && href.indexOf(m.GetCookie('mm_t7_saw3rdAt', 1)) < 0 ) ||
		m.GetCookie('mm_t7_dontShowAgain', 1) ||
		!document.querySelector('meta[content="article"]') ||
		!$('.nav-ftcom').length){
			return;
	}


	if(href.indexOf(lastPage) < 0){
		viewCounts += 1;
	}

	var arr = m.GetCookie('AYSC', 1).split('_');
	var i = arr.length;
	var AYSC = {};
	var sub = '';
	while(i--){
		if(arr[i]){
			sub = arr[i].substr(0, 2);
			AYSC[sub] = arr[i].replace(/(\d+){2}/, '');
		}
	}
	var is54Field = AYSC['53'] && AYSC['53'] === 'Yes';

	if(is54Field && typeof m.initCampaignForUser === 'function'){

		m.SetCookie('mm_t7_viewCounts', viewCounts, 128, 1);
		if (viewCounts === 3) {
			m.SetCookie('mm_t7_saw3rdAt', cutHref, 128, 1);
		}

		var userType = 'C';
		var campaignName = 'T7';

		m.T7 = {
			AYSC: AYSC
		};

		m.initCampaignForUser(userType, campaignName);
	}
});
}catch(err){mmcore.EH(err);}
try{
//(function () {
//
//	mmcore.T2ShouldGenerate = false;
//	mmcore.clickOnElement = true;
//
//	mmcore.T2 = mmcore.initCampaign( {
//		name: 'T2MyAcctRedirect',
//		hide: '',
//		checker: function () {
//			var cookie,
//				arr;
//			mmcore.isZuora = false;
//
//			cookie = mmcore.GetCookie( 'FT_User', 1 );
//
//			if ( !cookie ) {
//				return false;
//			}
//
//			arr = cookie.split( ':' );
//
//			for ( var i = 0; i < arr.length; i += 1 ) {
//				if ( /GROUPS/.test( arr[i] ) ) {
//					if ( /Order_Management|Order Management/.test( arr[i] ) ) {
//						mmcore.isZuora = true;
//						if ( /firefox/i.test( navigator.userAgent ) ) window.location.hash = 'mm';
//						window.location.assign( 'https://registration.ft.com/youraccount/details/core/view' );
//					}
//				}
//			}
//
//			return mmcore.GetCookie( 'FT_User', 1 ) && !mmcore.isZuora && document.getElementById( 'ftLogin-yourAccount' );
//		},
//		stopChecker: function () {
//
//			return mmcore.isZuora;
//		},
//		pageID: 'T2PageID',
//		beforeCGRequest: function () {
//			mmcore.GenInfo
//		},
//		afterCGRequest: function () {
//			var test = mmcore.GenInfo.T2MyAcctRedirect;
//			var A = test.myacctlndng === 'subsredir' ? 2 : 1;
//			FT.analytics.siteIntelligence.sendAdditionalTracer( '/MVT', 'creativeID=T2|A' + A );
//			if ( /firefox/i.test( navigator.userAgent ) ) window.location.hash = 'mm';
//			if ( mmcore.GenInfo.T2MyAcctRedirect.myacctlndng === 'subsredir' ) {
//				window.location.assign( 'https://registration.ft.com/youraccount/subscriptions' )
//			} else if ( mmcore.GenInfo.T2MyAcctRedirect.myacctlndng === 'Default' ) {
//				window.location.assign( 'https://registration.ft.com/youraccount/details/core/view' )
//			}
//		},
//		emergencyOpenTimeout: 3000,
//		checkerTimeout: 5000
//	} );
//
//	(function waitForButton() {
//		if ( window.jQuery && window.jQuery( '#ftLogin-yourAccount' ).length && mmcore.clickOnElement ) {
//			mmcore.clickOnElement = false;
//			window.jQuery( '#ftLogin-yourAccount' ).on( 'click', function () {
//				mmcore.T2.render();
//				return false;
//			} )
//		} else {
//			setTimeout( waitForButton, 100 )
//		}
//	})()
//
//
//})()
}catch(err){mmcore.EH(err);}
try{
/*
	Campaign checker
	14.05.2014
	Edward Shveday
*/

;(function(m){

	if(!document.querySelector('meta[content="article"]')){
		return;
	}

	var ref = document.referrer;
	var lh = location.href;
	var validReferrer = false;
	var refArray = ['199.30.80.0/21',
		'abnormalreturns',
		'ask',
		'bing',
		'ca.finance.yahoo.com',
		'ca.search.yahoo.com',
		'community.nasdaq.com',
		'dailyfinance.co.uk',
		'dailyfinance.com',
		'drudgereport',
		'edition.cnn.com',
		'epcvs.osb.ft.com',
		'execsense.com/',
		'finance.aol.co.uk',
		'finance.aol.com',
		'finance.yahoo.com',
		'home.bt.yahoo.com',
		'http://2424actu.fr',
		'http://pfweb-qa3.test.aol.com/',
		'http://www.indiabusinessbrief.com',
		'http://www.indiafinancebrief.com',
		'http://www.indiafoodbrief.com',
		'http://www.indiaretailnews.com',
		'http://www.indiasoftwarebrief.com',
		'http://www.indiatelecombrief.com',
		'http://www.walletpop.com/',
		'huffingtonpost',
		'money.aol.com',
		'money.cnn.com',
		'morningstar.com',
		'nasdaq',
		'nasdaq.com',
		'news.in.msn.com',
		'nyif.com',
		'paid.outbrain.com',
		'qa2.finance.yahoo.com',
		'quotes.nasdaq.com',
		'samachar.com',
		'search.news.yahoo.com',
		'taboola.com',
		'thestreet.com',
		'theweek.com',
		'uat-www.nyif.com',
		'uk.betastreaming.finance.yahoo.com',
		'uk.biz.yahoo.com',
		'uk.finance.yahoo.com',
		'uk.search.news.yahoo.com',
		'uk.search.yahoo.com',
		'uk.search.yahoo.com/search',
		'us.rd.yahoo.com',
		'www-qc.nasdaq.com',
		'www.2424actu.fr',
		'www.dailyfinance.co.uk',
		'www.dailyfinance.com',
		'www.liasset.com/',
		'www.liasset.com/wp-v3/2013/06/accelerate-your-career-with-the-financial-times/',
		'www.liasset.com/wp-v3/2013/06/mbas-expert-advice-to-progress-your-career/',
		'www.linkedin.com',
		'www.nasdaq.com',
		'www.nyif.com',
		'www.reddit.com',
		'www.samachar.com',
		'www.stumbleupon.com',
		'www.thestreet.com',
		'www.tumblr.com',
		'yahoo.co.uk',
		'yahoo.com',
		'yahoo.finance.com'];


	var _onunload = window.onunload;
	window.onunload = function () {
		m.SetCookie('mm_refresh_t6', 1, 3 / 86400, 1);
		if (typeof _onunload == 'function') {
			return _onunload.apply(this, arguments)
		}
	};


	var i = refArray.length;
	while(i--){
		if(ref.indexOf(refArray[i])>-1){
			validReferrer = true;
			break;
		}
	}

	if((validReferrer || isSegid) && !m.GetCookie('mm_refresh_t6', 1)){
		m.SetCookie('mm_t6_close', '', -1, 1);
	}

	var isClosed = m.GetCookie('mm_t6_close', 1);
	var isGoogleRef = (ref.indexOf('google.')>-1) ? true : false;
	var isSegid = lh.indexOf('segid=0100320')>-1;
	var FT_User = m.GetCookie('FT_User', 1) || '';

	/* 27-08-2014 */
	function non_mobile() {
		var userAgent = navigator.userAgent;
		function contains(where, what) {
			return where.toLowerCase().indexOf(what.toLowerCase()) !== -1;
		}

		/* Nexus*/
		if (contains(userAgent, 'AppleWebKit')) {
			if (screen.width > 1000 || screen.height > 1000) return true;
			else return false;
		}

		/* Android */
		if (contains(userAgent, 'android')) {
			if (!(contains(userAgent, 'mobile')) && (screen.width > 1000 || screen.height > 1000)) return true;
			else return false;
		}

		/* iPhone OS */
		if (contains(userAgent, 'ipad')) return true;
		else if (contains(userAgent, 'iphone') || contains(userAgent, 'ipod')) return false;

		/* RIM OS */
		if (contains(userAgent, 'rim tablet')) return true;
		else if (contains(userAgent, 'rim os') || contains(userAgent, 'blackberry')) return false;

		/* desktop */
		return true;
	}

	if( (isSegid || validReferrer) &&
		!isClosed &&
		!isGoogleRef &&
		!FT_User &&
		typeof m.initCampaignForUser === 'function' &&

		/* 27-08-2014 */
		non_mobile()
		){

			var userType = 'C';
			var campaignName = 'T6';

			m.T6 = {};

			m.T6.generationRules = {
				validReferrer: validReferrer,
				isSegid: isSegid
			};

			m.initCampaignForUser(userType, campaignName);
	}


}(window.mmcore));

}catch(err){mmcore.EH(err);}
try{
/*
	Campaign checker
	15.05.2014
	Edward Shveday
*/

mmcore.AddDocLoadHandler(function(){
	var m = window.mmcore;

	var href = location.href;
	var cutHref = href.replace(/(,Authorised|#).+/, '');
	var viewCounts = m.GetCookie('mm_t7_viewCounts', 1);
	var lastPage = m.GetCookie('mm_t7_lastPage', 1);
	m.SetCookie('mm_t7_lastPage', cutHref, 128, 1);

	viewCounts = viewCounts ? parseInt(viewCounts, 10) : 0;
	if( (viewCounts > 2 && href.indexOf(m.GetCookie('mm_t7_saw3rdAt', 1)) < 0 ) ||
		m.GetCookie('mm_t7_dontShowAgain', 1) ||
		!document.querySelector('meta[content="article"]') ||
		!$('.nav-ftcom').length){
			return;
	}


	if(href.indexOf(lastPage) < 0){
		viewCounts += 1;
	}

	var arr = m.GetCookie('AYSC', 1).split('_');
	var i = arr.length;
	var AYSC = {};
	var sub = '';
	while(i--){
		if(arr[i]){
			sub = arr[i].substr(0, 2);
			AYSC[sub] = arr[i].replace(/(\d+){2}/, '');
		}
	}
	var is54Field = AYSC['53'] && AYSC['53'] === 'Yes';

	if(is54Field && typeof m.initCampaignForUser === 'function'){

		m.SetCookie('mm_t7_viewCounts', viewCounts, 128, 1);
		if (viewCounts === 3) {
			m.SetCookie('mm_t7_saw3rdAt', cutHref, 128, 1);
		}

		var userType = 'C';
		var campaignName = 'T7';

		m.T7 = {
			AYSC: AYSC
		};

		m.initCampaignForUser(userType, campaignName);
	}
});
}catch(err){mmcore.EH(err);}
try{
;(function(m){
	if(location.href.indexOf('Authorised=false.html')>-1){
		$(document).on('click', '.signupLink', function(){
			m.SetCookie('mm_t14_v4_barrierClicked', '1', 1 ,1);
		})
	} else {
		m.SetCookie('mm_t14_v4_barrierClicked', '', -1 ,1);
	}
}(window.mmcore));

}catch(err){mmcore.EH(err);}
try{
;(function(mmcore) {
	var isArticle = function() {
			return ($("meta[property='og:type'][content='article']").size() > 0);
		},
		isUserLoggedIn = function() {
			var userCookie = mmcore.GetCookie("FT_User", true);
			return (!!userCookie && userCookie.indexOf("USERID") > -1);
		},
		setAction = function(name, attr) {
			mmcore._async = true;
			mmcore.SetPageID("mmevents");
			if (!attr) {
				mmcore.SetAction(name, 1);
			} else {
				mmcore.SetAction(name, 1, attr);
			}
			mmcore.CGRequest();
		},

		isHoweredTimeout,

		track = function() {
			var $ = window.jQuery,
				$doc = $(document),
				wasHovered = false;
			if (isArticle()) {
				if (isUserLoggedIn()) {
					var dropAuthorsHover = function() {
						if (!$("#followOverlay").is(":visible")) {
							wasHovered = false;
						} else {
							if (isHoweredTimeout) {
								clearTimeout(isHoweredTimeout);
							}
							isHoweredTimeout = setTimeout(dropAuthorsHover, 500);
						}
					};

					$doc.on("hover", ".byline a.followOverlayTrigger", function() {
						if (wasHovered) {
							dropAuthorsHover();
						} else {
							wasHovered = true;
							setAction("AuthAlertDropdown");
						}
					});

					$doc.on("mousedown", "#followOverlay .authors a.ft-button", function(e) {
						if (e.which === 1 && !$(e.currentTarget).hasClass("ft-button-negative")) {
							setAction("AuthAlertClicks");
						}
					});
				}
			}
		};

	mmcore.waitFor(function() {return typeof(jQuery) !== "undefined"}, {isNotStoppedOnDocumentReadiness: true, timeout: 7000})
		.done(track);
})(window.mmcore);
}catch(err){mmcore.EH(err);}
try{
;(function(mmcore) {
	var checkGoodPageURL = function () {
		var pageHref = window.location.href;

		return pageHref.indexOf('Authorised=false') < 0;
	};

	mmcore.AddDocLoadHandler(function() {
		if (checkGoodPageURL()) {
			mmcore._async = true;
			mmcore.SetPageID("mmevents");
			mmcore.SetAction("PageViews", 1);
			mmcore.CGRequest();
		}
	});
})(window.mmcore);
}catch(err){mmcore.EH(err);}
try{
;(function(mmcore) {

	mmcore.AddDocLoadHandler(function() {

		mmcore.waitFor(function() {

			var $ = window.jQuery || (window.require && window.require("jquery"));

			return typeof $ == "function" && ($('.topten') || $('.nav-items-l2-flyout').length);

		}).done(function() {

			var $ = window.jQuery || (window.require && window.require("jquery")),
				mainPartOfURL = (window.location.hostname + window.location.pathname).replace(/\/$/, ''),
				pagesDataArray = [
					{
						actionName: "T10_Portfolio",
						cookiePostfix: "p",
						pageMasks: ["portfolio.ft.com/dashboard"]
					},
					{
						actionName: "T10_fastFT",
						cookiePostfix: "f",
						selectorToHandle: '.nav-items-l2-flyout li:contains(fastFT) a, .fastft-introtext a'
					},
					{
						actionName: "T10_SpecReports",
						cookiePostfix: "r",
						pageMasks: ['www.ft.com/special-reports',
									'www.ft.com/intl/special-reports']
					},
					{
						actionName: "T10_Apps",
						cookiePostfix: "a",
						selectorToHandle: '.nav-items-l3 li:contains(Mobile) a'
					},
					{
						actionName: "T10_EmailBriefings",
						cookiePostfix: "m",
						pageMasks: ["nbe.ft.com/nbe/profile.cfm"],
						checkCondition: function() {
							return $(".topten").text().toLowerCase().indexOf("sign up for email alerts now") + 1
						}
					}
				],
				actionAttr = '', actualPageData = null, i, j, linksToHandle,
				pageIsCheckedByURL, maskCheckIsValid;

			var trackAction = function(actionName, actionAttr, callback) {
				mmcore._async = true;
				mmcore.SetPageID("mmevents");
				mmcore.SetAction(actionName, 1, actionAttr);
				mmcore.CGRequest(callback)
			};

			for (i = 0; i < pagesDataArray.length; i++) {

				actualPageData = pagesDataArray[i];
				pageIsCheckedByURL = actualPageData.pageMasks;
				maskCheckIsValid = false;

				// Onload actions processing, we check by URL
				if (pageIsCheckedByURL) {

					// Mapping validation processing
					for(j = 0; j < actualPageData.pageMasks.length; j++) {
						if (actualPageData.pageMasks[j] === mainPartOfURL) {
							maskCheckIsValid = true
						}
					}

					// Mapping conditions are met
					if (maskCheckIsValid) {

						actionAttr = mmcore.GetCookie("mm_t10_" + actualPageData.cookiePostfix, true);
						if (!actionAttr) {
							actionAttr = "Blank"
						} else {
							actionAttr = (actionAttr === "b") ? "Banner" : "Tooltip"
						}

						if (actualPageData.checkCondition) {
							if (actualPageData.checkCondition()) {
								trackAction(actualPageData.actionName, actionAttr)
							}
						} else {
							trackAction(actualPageData.actionName, actionAttr)
						}

					}

				// Onclick actions processing, we check by selector
				} else {
					(function(actionName, cookiePostfix) {
						$(actualPageData.selectorToHandle).bind('click', function(e) {

							var currentLink = $(this),
								currentLinkHref = currentLink.attr('href');

							e.preventDefault();

							actionAttr = mmcore.GetCookie("mm_t10_" + cookiePostfix, true);
							if (!actionAttr) {
								actionAttr = "Blank"
							} else {
								actionAttr = (actionAttr === "b") ? "Banner" : "Tooltip"
							}


							trackAction(actionName, actionAttr, function() {
								location.assign(currentLinkHref)
							});

							setTimeout(function() {
								location.assign(currentLinkHref)
							}, 2000);

						})
					})(actualPageData.actionName, actualPageData.cookiePostfix)

				}

			}

		})
	})

})(window.mmcore);

}catch(err){mmcore.EH(err);}
try{
(function (global, mmcore, helpers, undefined) {
    'use strict';

    var $,
        actions,
        Actions;

    $ = helpers.$;

    // Only part of the all actions.
    // {T6B2B_OverlayTrig} tracks inside of the A_T6FCFPage\A2_OldBarrier.html
    // {T6B2B_Articles}    tracks inside of the T6B2B_Checker.js
    Actions = function () {
        this.T6B2BRegClicks();
        this.T6B2BLogin();
    };

    Actions.prototype.T6B2BRegClicks = function () {
        helpers.delegate('#mm-t6b2b-cta-FreeTrial')('click', this._ctaHandler);
        helpers.delegate('#mm-t6b2b-popup__SignIn')('click', this._ctaHandler);
        helpers.delegate('#mm-t6b2b-cta-Contact')('click', this._ctaHandler);
        helpers.delegate('#mm-t6b2b-cta-Dismiss')('click', this._ctaHandler);
        helpers.delegate('#mm-t6b2b-cta-Premium')('click', this._ctaHandler);
        helpers.delegate('#mm-t6b2b-cta-Standard')('click', this._ctaHandler);
        helpers.delegate('#mm-t6b2b-cta-ForgotPass')('click', this._ctaHandler);
    };

    Actions.prototype._ctaHandler = function (event) {
        var $link,
            url,
            id,
            attr;

        event.preventDefault();
        $link = $(event.currentTarget);
        url = $link.attr('href');
        id = $link.attr('id');
        attr = (id.match(/FreeTrial|SignIn|Contact|Dismiss|Premium|Standard|ForgotPass/) || [null])[0];
        if (attr) {
            mmcore.SetCookie('mm-t3-barrier-clicked', 'true', 1, true);
            helpers.trackAsyncAction({
                name: 'T6B2B_OverlayInt',
                attr: attr,
                then: function () {
                    helpers.redirect(url);
                }
            });
        } else {
            helpers.redirect(url);
        }
    };

    Actions.prototype.T6B2BLogin = function () {
        helpers.delegate('form[action="https://registration.ft.com/registration/barrier/login"]')('submit', function () {
            var attr = $(this).closest('.mm-t6b2b-popup').length ? 'Overlay' : 'Other';
            mmcore.SetCookie('mm-t6b2b-login', attr, 1, true);
        });
    };

    helpers.wait({
        freq: 100,
        reset: 30 * 1000,
        check: function () {
            return helpers.$;
        },
        success: function () {
            actions = new Actions();
        }
    });

})(window, window.mmcore, window.mmcore.T6B2B);
}catch(err){mmcore.EH(err);}
try{
(function (global, mmcore, helpers, undefined) {
    'use strict';

    helpers.wait({
        freq: 100,
        check: function () {
            return helpers.$ && document.getElementById('footer');
        },
        success: function () {
            var loginCookie,
                $loggedIn,
                $link;

            loginCookie = mmcore.GetCookie('mm-t6b2b-login', true);
            $loggedIn = helpers.$('.ftLogin-loggedIn');
            $link = $loggedIn.find('a');
            if (loginCookie && $loggedIn.filter(':visible').length && $link.text()) {
                helpers.trackAsyncAction({
                    name: 'T6B2B_Logins',
                    attr: loginCookie,
                    then: function () {
                        mmcore.SetCookie('mm-t6b2b-login', '', -1, true);
                    }
                });
            }
        }
    });
})(window, window.mmcore, window.mmcore.T6B2B);
}catch(err){mmcore.EH(err);}
try{
(function (global, mmcore, helpers, undefined) {
    'use strict';

    helpers.preload();
    helpers.hide();
    helpers.wait({
        freq: 100,
        reset: 7 * 1000,
        check: helpers.check,
        success: helpers.generate,
        fail: helpers.show
    });
})(window, window.mmcore, window.mmcore.T5);
}catch(err){mmcore.EH(err);}
try{
/**
* maxymiser.com
*/
(function () {
	"use strict";

	var executorVer = "1.7";
	if (window.mmcore && window.mmcore.vcb && window.mmcore.vcb.executor && window.mmcore.vcb.executor.jsver >= executorVer) return;

	window.mmcore = window.mmcore || (window.mmcore = {});
	window.mmcore.vcb = window.mmcore.vcb || (window.mmcore.vcb = {});
	window.mmcore.vcb.executor = {};
	(function () {
		var e = window.mmcore.vcb.selectorLib = function (b, a) {
			return new e.prototype.init(b, a);
		};
		function merge(first, second) {
			var i = first.length, j = 0;
			if (typeof second.length === "number") {
				for (var l = second.length; j < l; j++) {
					first[i++] = second[j];
				}
			} else {
				while (second[j] !== undefined) {
					first[i++] = second[j++];
				}
			}
			first.length = i;
			return first;
		}

		function querySelectorAllIE(a, g) {
			var b = g.styleSheets[0] || g.createStyleSheet(), c = g.all, d = [];
			b.addRule(a, "x:o");
			for (var i = 0; i < c.length; i++) {
				c[i].currentStyle.x ? d.push(c[i]) : (function () {
				} ());
			}
			b.removeRule(b.rules.length - 1);
			var filteredResult = [];
			for (var j = 0; j < d.length; j++) {
				contains(d[j], this) && filteredResult.push(d[j]);
			}
			return filteredResult;
		}
		e.prototype = {
			init: function (b, a) {
				this.length = this.length || 0;
				b = b.split(",");
				var c, h = Array.prototype;
				for (var n = 0; n < b.length; n++) {
					for (var i = [], f, g = document, a = a || g.documentElement, d = b[n],
							 filterElements = function (a, b, c) {
							 	var d;
							 	switch (a) {
							 		case "eq":
							 			d = b[0 > c ? b.length - 1 : c];
							 			break;
							 		case "lt":
							 			d = h.slice.call(b, 0, c);
							 			break;
							 		case "gt":
							 			d = h.slice.call(b, +c + 1, b.length);
							 	}
							 	return d;
							 };
						 f = d.match(/:(eq|gt|lt)\((-?\d*)\)/); ) {
						c = d.indexOf(f[0]);
						a = filterElements(f[1], e(d.substr(0, c), a), f[2]);
						if (!a) {
							return i;
						}
						d = d.substr(c + f[0].length);
					}

					if (d) {
						i = (a.querySelectorAll) ? a.querySelectorAll(d) : querySelectorAllIE.call(a, d, g);
					}
					else {
						i = (a[0] && a.tagName !== "FORM") ? a : [a];
					}
					if (typeof i === 'function') {
						var obj = [];
						for (var prop in i) {
							if (i.hasOwnProperty(prop)) {
								obj.push(i[prop]);
							}
						}
						i = obj;
					}
					if (typeof this === "array") {
						h.push.apply(this, i);
					}
					else {
						merge(this, i);
					}
				}
				return this;
			},
			addClass: function (b) {
				for (var a = this.length, c, e = new RegExp("(^|\\s)" + b + "(\\s|$)", "g"); a--; ) {
					c = this[a];
					if (e.test(c.className)) {
						break;
					}
					c.className = (c.className + " " + b).replace(/\s+/g, " ").replace(/(^ | $)/g, "");
				}
			}
		};
		e.prototype.init.prototype = e.prototype;
		e.jsver = "1.2";

		function parents(el) {
			var arr = [];
			while (el && el.nodeType === 1 && el.parentElement && el.parentElement.nodeType === 1) {
				arr.push(el.parentElement);
				el = el.parentElement;
			}
			return arr;
		}

		function contains(element, parent) {
			if (element && parent && element.nodeType === 1 && parent.nodeType === 1) {
				var pars = parents(element);
				for (var i = 0; i < pars.length; i++) {
					if (pars[i] === parent) {
						return true;
					}
				}
			}
			return false;
		}
	})();
	window.mmcore.vcb.executor = (function () {
		var pub,
			constants = {
				s: 'string',
				u: 'undefined',
				n: 'number',
				nodeType: 1,
				styleTagId: 'vcb-maxymiser-variant-tag-style-id' + (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1),
				userGlobalStyleTagId: function () { return "vcb-maxymiser-user-global-style-tag-id" + (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1) },
				actionTypes: {
					attr: "attr",
					insert: "insert",
					remove: "remove",
					html: "html",
					index: "index",
					clickAction: "clickAction"
				},
				actionArray: "actions",
				markerModified: "vcb-was-modified-"
			};
		var bodyAlreadyShown = false;
		pub = {
			jsver: executorVer,
			executeVariant: function (data) {
				var actions = (data && data.actions) ? data.actions : [],
					userScript = data ? data.userScript : null,
					userStyle = data ? data.userStyle : null,
					errorLog = "",
					showHideContentStyleTagId = "vcb-maxymiser-hide-content-tag-style-id_" + (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);

				function deleteOldVcbHideStyles() {
					var stylesToDelete = [],
						allStyles = document.getElementsByTagName('style'),
						allStylesLength = allStyles.length,
						i;
					if (allStylesLength > 0) {
						for (i = 0; i < allStylesLength; i += 1) {
							if (allStyles[i].id.match(/vcb-maxymiser-show-hide-content-tag-style-id/)) {
								stylesToDelete.push(allStyles[i]);
							}
						}
						for (i = 0; i < stylesToDelete.length; i += 1) {
							stylesToDelete[i].parentNode.removeChild(stylesToDelete[i]);
						}
					}
				}

				function localCopyShowContent() {
					pub.showContent(showHideContentStyleTagId);
				}

				function extractSelectors(actions) {
					var selectors = [],
						replacer = function (matcher, p1) { return p1 + " > "; };
					for (var i = 0; i < actions.length; i++) {
						if (actions[i].jsSelector && actions[i].type !== "clickAction") {
							var actionSelector = actions[i].jsSelector;
							var result = actionSelector.replace(/\*/gi, "");
							result = result.replace(/:eq\(\s*\d+\s*\)/gi, "");
							result = result.replace(/([^\\])\s+/gi, replacer);
							selectors.push(result);
						}
					}
					return selectors;
				}

				function execute() {
					if (actions instanceof Array && actions.length > 0) {
						for (var i = 0; i < actions.length; i++) {
							if (actions[i]) {
								try {
									pub.executeAction(actions[i]);
								} catch (e) {
									errorLog += ";Vcb variant exception in action with index " + i + ", name: " + actions[i].name + ", type: " + actions[i].type + ". Original error message: " + e.message;
								}
							}
						}
					}
				}

				deleteOldVcbHideStyles();
				this.applyUserGlobalStyles(userStyle);
				var cssSelectors = extractSelectors(actions);
				pub.hideContent(cssSelectors.join(", "), showHideContentStyleTagId);
				setTimeout(localCopyShowContent, 3000);
				if (window.mmcore && window.mmcore.AddDocLoadHandler) {
					window.mmcore.AddDocLoadHandler(function () {
						setTimeout(localCopyShowContent, 0);
					});
				}

				window.mmcore.AddDocLoadHandler(function () {
					if (bodyAlreadyShown) {
						window.mmcore.vcb.vcb_error_log = window.mmcore.vcb.vcb_error_log || "";
						window.mmcore.vcb.vcb_error_log += ";VCB variant has not been executed:Page content is shown;"
					}
					execute();
					pub.executeCustomScript(userScript && userScript.customScript);
					if (errorLog) {
						window.mmcore.vcb.vcb_error_log = window.mmcore.vcb.vcb_error_log || "";
						window.mmcore.vcb.vcb_error_log += errorLog;
					}
				});
			},
			executeAction: function (action) {
				if (typeof action === 'object') {

					if (action.type in constants.actionTypes) {
						(window.mmcore.vcb[constants.actionArray] || (window.mmcore.vcb[constants.actionArray] = [])).push(action);
					}

					switch (action.type) {
						case constants.actionTypes.attr:
							return executeActions.attr(action);

						case constants.actionTypes.insert:
							return executeActions.insert(action);

						case constants.actionTypes.remove:
							return executeActions.remove(action);

						case constants.actionTypes.html:
							return executeActions.html(action);

						case constants.actionTypes.index:
							return executeActions.index(action);

						case constants.actionTypes.clickAction:
							return executeActions.clickAction(action);
					}
				}
			},
			addStyle: function (style) {
				if (typeof style === constants.s) {

					var styleNode = document.createElement('style');
					styleNode.type = "text/css";
					styleNode.id = constants.styleTagId;
					if (!!(window.attachEvent && !window.opera && styleNode.styleSheet)) {
						styleNode.styleSheet.cssText = style;
					} else {
						var styleText = document.createTextNode(style);
						styleNode.appendChild(styleText);
					}
					document.getElementsByTagName('head')[0].appendChild(styleNode);
					return true;
				} else {
					return false;
				}
			},
			hideContent: function (cssSelectorsToHide, styleTagId) {
				if (!cssSelectorsToHide) return;
				var checkStyleNode = document.getElementById(styleTagId);
				var style = (cssSelectorsToHide === "body")
					? "html body{position:relative; left:-10000px}"
					: (cssSelectorsToHide + "{visibility: hidden !important;}");
				if (checkStyleNode) {
					bodyAlreadyShown = false;
					return;
				}
				var styleNode = document.createElement('style');
				styleNode.type = "text/css";
				styleNode.id = styleTagId;
				if (!!(window.attachEvent && !window.opera && styleNode.styleSheet)) {
					styleNode.styleSheet.cssText = style;
				} else {
					var styleText = document.createTextNode(style);
					styleNode.appendChild(styleText);
				}
				document.getElementsByTagName('head')[0].appendChild(styleNode);
				bodyAlreadyShown = false;
			},
			showContent: function (styleTagId) {
				bodyAlreadyShown = true;
				var style = document.getElementById(styleTagId);
				if (style) {
					style.parentNode.removeChild(style);
				}
			},
			findNode: function (selector) {
				if (window.mmcore.vcb.selectorLib && typeof selector === constants.s) {
					return window.mmcore.vcb.selectorLib(selector);
				} else {
					return false;
				}
			},
			changeAttribute: function (node, attr, value) {
				var result = false;
				if (node) {
					if (node.nodeType === constants.nodeType && typeof attr === constants.s && typeof value === constants.s) {
						if (attr.toLowerCase() === "style") {
							node.style.cssText = value;
						}
						if (node.nodeName.toLowerCase() === "img" && attr === 'src') {
							node.style.visibility = "hidden";
							node.src = value;
							if (node.addEventListener) {
								node.addEventListener('load', function () { node.style.visibility = "visible"; }, false);
							}
							else if (node.attachEvent) {
								node.attachEvent('onload', function () { node.style.visibility = "visible"; });
							}
						}
						else {
							node.setAttribute(attr, value);
						}
						result = true;
					}
				}

				return result;
			},
			removeNode: function (node) {
				if (node && node.nodeType === constants.nodeType) {
					node.parentNode.removeChild(node);
					return true;
				} else {
					return false;
				}
			},
			changeInnerHTML: function (node, innerHTML) {
				if (node && node.nodeType === constants.nodeType && typeof innerHTML === constants.s) {
					if (node.nodeName && node.nodeName.toLowerCase() == "style") {
						if (!!(window.attachEvent && !window.opera && node.styleSheet)) {
							node.styleSheet.cssText = innerHTML;
						} else {
							var styleText = document.createTextNode(innerHTML);
							node.appendChild(styleText);
						}
					} else {
						node.innerHTML = innerHTML;
						return true;
					}
				} else {
					return false;
				}
			},
			createNode: function (nodeString) {
				if (typeof nodeString === constants.s) {
					var p = document.createElement('div');
					p.innerHTML = nodeString;
					var node = p.childNodes[0];
					p = null;
					return node;
				} else {
					return false;
				}
			},
			insertNode: function (parentNode, node, index) {

				function nodeIndex(node, nodes) {
					for (var i = 0; i < nodes.length; i++) {
						if (node === nodes[i]) {
							return i;
						}
					}
				}

				if (!parentNode || !node || node.nodeType !== constants.nodeType || typeof index !== constants.n) {
					return false;
				}

				var children = [];
				for (var i = 0; i < parentNode.children.length; i++) {
					var n = parentNode.children[i];
					if (n.tagName != 'SCRIPT') {
						children.push(n);
					}
				}

				var noChildren = children.length == 0,
					insertAfterLast = index >= children.length,
					insertAsLast = index == children.length - 1,
					alreadyExistsBeforeTarget = node.parentNode === parentNode && nodeIndex(node, children) < index;

				if (noChildren || insertAfterLast || alreadyExistsBeforeTarget && insertAsLast) {
					parentNode.appendChild(node);
					return true;
				}

				if (alreadyExistsBeforeTarget && !insertAsLast) {
					parentNode.insertBefore(node, children[index + 1]);
					return true;
				}

				parentNode.insertBefore(node, children[index]);
				return true;
			},
			executeCustomScript: function (script) {
				if (!window.mmcore.vcb.userScript) {
					window.mmcore.vcb.userScript = {
						customScript: script
					}
				} else if (!window.mmcore.vcb.userScript.customScript) {
					window.mmcore.vcb.userScript.customScript = script;
				}
				try {
					eval(script);
				}
				catch (e) {
					var message = "VCB Custom script error: \n" + e.message;
					if (window.console) window.console.log(message);
				}
			},
			applyUserGlobalStyles: function (userStyleString) {
				if (!userStyleString) return;
				var styleNode = document.createElement('style');
				styleNode.type = "text/css";
				styleNode.id = constants.userGlobalStyleTagId();
				if (!!(window.attachEvent && !window.opera && styleNode.styleSheet)) {
					styleNode.styleSheet.cssText = userStyleString;
				} else {
					var styleText = document.createTextNode(userStyleString);
					styleNode.appendChild(styleText);
				}
				document.getElementsByTagName('head')[0].appendChild(styleNode);
				window.mmcore.vcb.userStyle = userStyleString;
			}
		};
		var executeActions = {
			index: function (action) {
				var result = false;
				if (typeof action.jsSelector === constants.s) {
					var n = window.mmcore.vcb.selectorLib(action.jsSelector);
					if (n[0]) {
						result = pub.insertNode(n[0].parentNode, n[0], action.index);
						if (result) {
							n.addClass(constants.markerModified + action.type);
							if (typeof action.dataAttribute == constants.s && typeof action.nodeIdentifier == constants.s) {
								pub.changeAttribute(n[0], action.dataAttribute, action.nodeIdentifier);
							}
						}
					}
				}
				return result;
			},
			attr: function (action) {
				var result = false;
				if (action.jsSelector && typeof action.jsSelector === constants.s) {
					var n = window.mmcore.vcb.selectorLib(action.jsSelector);
					if (n[0]) {
						result = pub.changeAttribute(n[0], action.name, action.value);
						if (result) {
							n.addClass(constants.markerModified + action.type);
							if (typeof action.dataAttribute == constants.s && typeof action.nodeIdentifier == constants.s) {
								pub.changeAttribute(n[0], action.dataAttribute, action.nodeIdentifier);
							}
						}
					}
				}
				return result;
			},
			remove: function (action) {
				var result = false;
				if (action.jsSelector && typeof action.jsSelector === constants.s) {
					var n = window.mmcore.vcb.selectorLib(action.jsSelector);
					if (n[0]) {
						result = pub.removeNode(n[0]);
						if (result) {
							n.addClass(constants.markerModified + action.type);
							if (typeof action.dataAttribute == constants.s && typeof action.nodeIdentifier == constants.s) {
								pub.changeAttribute(n[0], action.dataAttribute, action.nodeIdentifier);
							}
						}
					}
				}
				return result;
			},
			html: function (action) {
				var result = false;
				if (action.jsSelector && typeof action.jsSelector === constants.s) {
					var n = window.mmcore.vcb.selectorLib(action.jsSelector);
					if (n[0]) {
						result = pub.changeInnerHTML(n[0], action.value);
						if (result) {
							n.addClass(constants.markerModified + action.type);
							if (typeof action.dataAttribute == constants.s && typeof action.nodeIdentifier == constants.s) {
								pub.changeAttribute(n[0], action.dataAttribute, action.nodeIdentifier);
							}
						}
					}
				}
				return result;
			},
			insert: function (action) {
				var result;
				if (action.jsSelector && typeof action.jsSelector === constants.s) {
					var n = window.mmcore.vcb.selectorLib(action.jsSelector);
					if (n[0]) {
						var newNode = pub.createNode(action.value);
						if (window.__VisualCampaignBuilder__ && newNode && action.isExternalContent) {
							var hash = window.__VisualCampaignBuilder__.Core.utils.generateHash();
							newNode.setAttribute("vcb-external-content-node-id", hash);
						}
						result = pub.insertNode(n[0], newNode, action.index);
						if (result) {
							n.addClass(constants.markerModified + action.type);
							if (typeof action.dataAttribute == constants.s && typeof action.nodeIdentifier == constants.s) {
								pub.changeAttribute(n[0], action.dataAttribute, action.nodeIdentifier);
							}
						}
					}
				}
				return result;
			},
			clickAction: function (action) {
				var result;
				if (action.jsSelector && typeof action.jsSelector === constants.s) {
					var n = window.mmcore.vcb.selectorLib(action.jsSelector);
					if (n[0]) {
						window.mmcore.vcb.Action(n[0]).set(action.actionName, action.actionValue || 1, action.actionAttribute || "", action.actionIdentifier);
						result = true;
						if (result) {
							n.addClass(constants.markerModified + action.type);
							if (typeof action.dataAttribute == constants.s && typeof action.nodeIdentifier == constants.s) {
								pub.changeAttribute(n[0], action.dataAttribute, action.nodeIdentifier);
							}
						}
					}
				}
				return result;
			}
		};

		return pub;
	} ());

	(function (core, scope) {
		scope.Action = function (node, options) {
			options = options || {};
			options.context = options.context || window;
			var DATA_ATTR = "data-vcb-events-ref";
			var request = function (callback) {
				var callbackExecutor;
				if (callback) {
					callbackExecutor = function () {
						try {
							callback();
						} catch (e) {
							core.EH(e);
						}
						callbackExecutor = function () {
						};
					};
					setTimeout(function () {
						callbackExecutor();
					}, 2000);
				}
				core._async = true;
				core.SetPageID('events');
				var pcs = core._vars && core._vars.uat;
				core.CGRequest(callbackExecutor);
				core._vars && (core._vars.uat = pcs);
			};
			var LinkType = function (targetLink) {
				var linkHref = targetLink.href;
				return {
					hrefHasJS: function () {
						return /^javascript:/i.test(linkHref);
					},
					sameSite: function () {
						return core._Host(targetLink.hostname) === core._Host(location.hostname)/* && targetLink.hostname  === location.hostname*/;
					},
					notRequiresReload: function () {
						return targetLink.target === "_blank" || /#|^javascript:void\(/i.test(linkHref);
					}
				}
			};
			var bind = function (node, type, fn) {
				var listener = function (event) {
					fn.call(node, event || window.event)
				};
				if (node.addEventListener) {
					node.addEventListener(type, listener, false);
				} else if (node.attachEvent) {
					node.attachEvent("on" + type, listener);
				}
			};
			var bindClickThrough = function (callback) {
				if (!node[DATA_ATTR]) {
					node[DATA_ATTR] = {
						callbacks: []
					};
					bind(node, "click", function (event) {
						var callbacks = this[DATA_ATTR].callbacks,
							target = event.target || event.srcElement,
							contains = function (arr, value) {
								var i = arr.length;
								while (i--) {
									if (arr[i] === value) return true;
								}
								return false;
							},
							alreadyTriggeredOnTarget = function (actionName) {
								if (target === this) {
									return false;
								} else {
									return (typeof event.data == "string") && contains(event.data.split(","), actionName);
								}
							};
						this[DATA_ATTR] = this[DATA_ATTR] || { callbacks: [] };
						target[DATA_ATTR] = target[DATA_ATTR] || { callbacks: [] };
						for (var i = 0; i < callbacks.length; i++) {
							var arg = callbacks[i].call(this);
							if (arg) {
								var actionName = arg[0];
								if (!alreadyTriggeredOnTarget.call(this, actionName)) {
									core.$Action.apply(core, arg);
									if (typeof event.data != "string") {
										event.data = "";
									}
									var triggeredActions = (event.data == false) ? [] : event.data.split(",");
									if (!contains(triggeredActions, actionName)) {
										triggeredActions.push(actionName);
										event.data = triggeredActions.join();
									}
								}
							}
						}
						trackAction(event, this);
					});
				}
				node[DATA_ATTR].callbacks.push(callback);
			};
			var callback = function (callback) {
				bindClickThrough(callback);
				return this;
			};
			var set = function (name, value, attr, guid) {
				if (window.__VisualCampaignBuilder__) {
					store(name, value, attr, guid);
				} else {
					bindClickThrough(function () {
						return [name, value, attr]
					});
				}
				return this;
			};
			var store = function (name, value, attr, guid) {
				var arr = scope.clickActions || (scope.clickActions = []),
					el = null;
				for (var i = 0; i < arr.length; i++) {
					if (arr[i].node === node) { el = arr[i]; break; }
				}
				if (!el) {
					el = { node: node, actions: [] };
					arr.push(el);
				}
				el.actions.push({
					name: name,
					value: value,
					attr: attr,
					guid: guid
				});
				return el;
			};
			var findLink = function (node) {
				if (node.nodeName === "A") {
					return node;
				} else if (node.parentNode) {
					return findLink(node.parentNode);
				}
				return false;
			};
			var trackAction = function (event, element) {
				var targetLink = findLink(element),
					nodeName = element.nodeName,
					typeAttr = element.getAttribute("type"),
					isSubmitButton = (nodeName == "INPUT" || nodeName == "BUTTON") && typeAttr && typeAttr.toLowerCase() == "submit";

				if (targetLink) {
					var linkType = LinkType(targetLink);
					if (!linkType.sameSite()) {
						event.preventDefault ? event.preventDefault() : event.returnValue = false;
						request(function () {
							if (linkType.hrefHasJS()) {
								new Function(targetLink.href).call(window);
							} else {
								options.context.location.assign(targetLink.href);
							}
						});
					} else if (linkType.notRequiresReload() || options.immediatelyAction) {
						request();
					}
				} else if (!options.postponedAction && !isSubmitButton) {
					request();
				}
			};
			var getHandlers = function () {
				return node[DATA_ATTR].callbacks;
			};
			scope.Action.bind = bind;
			scope.Action.request = request;
			return {
				getHandlers: getHandlers,
				callback: callback,
				set: set,
				store: store
			}
		};
		scope.DomReady = function (handler) {
			if (core && core.AddDocLoadHandler) {
				core.AddDocLoadHandler(handler);
			}
		};
	} (window.mmcore, window.mmcore.vcb));

	if (window.mmcore._async) {
		var backupHideMaxyboxes = window.mmcore.HideMaxyboxes;
		window.mmcore.HideMaxyboxes = function () { };
	}

	window.setTimeout(function () {
		var vcbMaxyboxes = [],
			renderers = mmcore._renderers;
		if (backupHideMaxyboxes) window.mmcore.HideMaxyboxes = backupHideMaxyboxes;
		for (var n in renderers) {
			if (renderers.hasOwnProperty(n) && renderers[n]
				&& renderers[n].toString().indexOf("mmcore.vcb.executor.executeVariant") !== -1) {
				vcbMaxyboxes.push(n);
			}
		}
		if (vcbMaxyboxes.length) {
			mmcore.RenderMaxyboxes(vcbMaxyboxes);
		}
	}, 0);

} ());

}catch(err){mmcore.EH(err);}
try{
;
(function () {

    $(document).ready(function () {

        var preventFlag = false;


        $(document).on('focus', '#seriesLogic #series', function () {
            mmcore.SetAction('VCB_DropdownClicks', 1, 'Initial');
            mmcore.request();

            if (!preventFlag) {
                
                preventFlag = true;
                
                $('#seriesLogic #series').on('change', function () {

                    mmcore.SetAction('VCB_DropdownClicks', 1, 'Item');
                    mmcore.request();


                });

            }

        });
    });

})();
}catch(err){mmcore.EH(err);}
mmcore._AddRenderer('Element11448',function(){var el=mmcore.GetMaxyboxNode('Element11448');var mm_inner_HTML='';try{

mmcore.vcb.executor.executeVariant({"actions" : [],
 "userScript": {"customScript": "$('.shareArt').append('<div id=\"firstft\" class=\"promobox\" style=\"padding-left: 8px; padding-right: 8px; overflow: visible;\"><h3><a href=\"http://www.ft.com/nbe\">Sign up now</a></h3><div class=\"promobox-img\"><a href=\"http://www.ft.com/nbe\"><img alt=\"firstFT\" src=\"http://im.ft-static.com/content/images/8290489e-64f2-11e4-ab2d-00144feabdc0.img\"></a></div><p><em>First</em>FT is our new essential daily email briefing of the best stories from across the web</p></div>');\n$('#firstft').find('a').click(function() {\n  mmcore.$Action('ClicksOnFirstFT', '1', 'ClicksOnFirstFT');\n});"},
 "userStyle":""});

}catch(err){mmcore.EH(err);}
if(el && typeof el.innerHTML!='undefined')el.innerHTML=mm_inner_HTML;});mmcore.HideMaxyboxes('Element11448');mmcore._RenderOnLoad();if(typeof mmcore._callback=='object'&&typeof mmcore._callback[1]=='function'){try{mmcore._callback[1]();}catch(err){mmcore.EH(err);}
finally{mmcore._callback[1]=null;}}
})();