$.storage=$.localStorage=(function(){'use strict';var storage=window.localStorage||window.sessionStorage,data={};return{get:function(key){return storage.getItem(key);},set:function(key,value){storage.setItem(key,value);},remove:function(keys){if(typeof keys==='string'){keys=[keys];} keys.forEach(function(key){storage.removeItem(key);});},ns:function(namespace){if(!data[namespace]){data[namespace]={};} if(storage.getItem(namespace)){try{data[namespace]=JSON.parse(storage.getItem(namespace));}catch(e){console.error(e);}} return{get:function(key){if(!key){return data[namespace];} return data[namespace][key];},set:function(key,value){data[namespace][key]=value;storage.setItem(namespace,JSON.stringify(data[namespace]));},keys:function(){return Object.keys(data[namespace]);},remove:function(keys){if(typeof keys==='string'){keys=[keys];} keys.forEach(function(key){delete data[namespace][key];});storage.setItem(namespace,JSON.stringify(data[namespace]));},removeAll:function(){data[namespace]={};storage.removeItem(namespace);}};}};})();$.initNamespaceStorage=function(ns){'use strict';return{localStorage:$.storage.ns(ns)};};