(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{171:function(t,e,n){},249:function(t,e,n){"use strict";var r=n(171);n.n(r).a},366:function(t,e,n){"use strict";n.r(e);n(45);var r=n(5),o=(n(62),n(198)),c=n.n(o),l=(navigator.languages&&navigator.languages[0]||navigator.language||navigator.userLanguage).toLowerCase().split(/[_-]+/)[0],d={layout:"sidebar",head:function(){return{title:this.dateHeader}},asyncData:function(){var t=Object(r.a)(regeneratorRuntime.mark(function t(e){var r,o,l,path,d;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.params,o=void 0===r?{}:r,e.query,l=e.payload,path="",d=null,o.year&&(path+="".concat(o.year),o.month&&(path+="/".concat(o.month),o.day&&(path+="/".concat(o.day)))),!path.length){t.next=12;break}if(t.t0=l,t.t0){t.next=9;break}return t.next=8,c.a.get("".concat("/","unide/files/posts/").concat(path,".json"));case 8:t.t0=t.sent.data;case 9:d=t.t0,t.next=16;break;case 12:return t.next=14,Promise.resolve().then(n.t.bind(null,90,3));case 14:d=(d=t.sent).default;case 16:return t.abrupt("return",{list:d.slice().reverse()});case 17:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}(),computed:{dateHeader:function(){var t=this.$route.params,e=t.year,n=t.month,r=t.day,o=new Date(Date.UTC(e||2016,n||0,r||1));return e?Intl.DateTimeFormat(l,{month:n?"long":void 0,year:e?"numeric":void 0,day:r?"2-digit":void 0}).format(o):"Recent Posts"}},filters:{timeStamp:function(t,e){var n=e.year,r=e.month,o=(e.day,(t=t instanceof Date?t:new Date(t)).getHours()&&t.getMinutes());return Intl.DateTimeFormat(l,{hour12:!1,month:r?void 0:"long",year:n?void 0:"numeric",day:"2-digit",hour:o?"numeric":void 0,minute:o?"2-digit":void 0}).format(t)}}},m=(n(249),n(2)),component=Object(m.a)(d,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"blog"},[n("h1",{staticClass:"title is-3"},[t._v("\n    "+t._s(t.dateHeader)+"\n  ")]),t._v(" "),n("ul",t._l(t.list.filter(function(i){return i.title}),function(e){return n("li",{key:e.url},[n("h2",{staticClass:"title is-4"},[n("nuxt-link",{attrs:{to:e.url}},[t._v("\n          "+t._s(e.title)+"\n        ")])],1),t._v(" "),e.date?n("h3",{staticClass:"subtitle is-6"},[n("nuxt-link",{attrs:{to:e.url}},[n("i",{staticClass:"fa fa-calendar"}),t._v("  \n          "+t._s(t._f("timeStamp")(e.date,t.$route.params))+"\n        ")])],1):t._e()])}),0)])},[],!1,null,null,null);e.default=component.exports}}]);