PageSourceSearch

https://kisekae.org/_next/static/chunks/pages/index-30b9eb74b5b40c49.js

js kisekae.org collected 2026-10-02 20:22:23 UTC 112,027 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[405],{3136:function(e,t,i){"use strict";i.r(t),i.d(t,{default:function(){return Yt}});var a=i(7294),s=JSON.parse('[{"name":"Mizushima Izumi","website":{"url":""},"email":"","dolls":["amifkiss.lzh","amikiss.lzh"]},{"name":"Yav","website":{"url":"http://www2s.biglobe.ne.jp/~yav/","status":200},"email":"[email protected]","dolls":["kissmars.lzh"]},{"name":"Iti-ro","website":{"url":""},"email":"","dolls":["cdsykiss.lzh"]},{"name":"EWIGKEIT","website":{"url":""},"email":"[email protected]","dolls":["kzwiebel.lzh","kssh100.lzh","kbiriri.lzh"]},{"name":"Kyouhei","website":{"url":""},"email":"","dolls":["kyo_kis2.lzh"]},{"name":"Ishikawa Ryuuzou","website":{"url":""},"email":"[email protected]","dolls":["mogami.lzh"]},{"name":"A7M2","website":{"url":""},"email":"","dolls":["kswapiko.lzh"]},{"name":"Saegusa Yuki","website":{"url":"http://www.page.sannet.ne.jp/mayama/","status":404},"email":"[email protected]","dolls":["yamatoks.lzh","sailor5.lzh","armdc2ks.lzh"]},{"name":"Simba","website":{"url":""},"email":"[email protected]","dolls":["kisschun.lzh"]},{"name":"MUX","website":{"url":""},"email":"","dolls":["sk_kimux.lzh"]},{"name":"ELME","website":{"url":"http://www2s.biglobe.ne.jp/~elme/","status":404},"email":"[email protected]","dolls":["elme_necpc.lzh","elme_31.lzh","msz006c1.lzh"]},{"name":"KOH","website":{"url":""},"email":"[email protected]","dolls":["aniekiss.lzh"]},{"name":"Unknown","website":{"url":""},"email":"","dolls":["rumi.lzh"]},{"name":"G Hammer","website":{"url":""},"email":"","dolls":["kisryoko.lzh"]},{"name":"Masami & K1A","website":{"url":""},"email":"","dolls":["mihoshi1.lzh"]},{"name":"Five Pennies","website":{"url":""},"email":"","dolls":["fp_ksmk.lzh","fp_ksms.lzh"]},{"name":"Wedge","website":{"url":""},"email":"","dolls":["sasami.lzh"]},{"name":"Mian","website":{"url":"http://www.anime.net/~kens/","status":404},"email":"[email protected]","dolls":["ks_rana.lzh"]},{"name":"Yurika-chan","website":{"url":""},"email":"","dolls":["igo.lzh"]},{"name":"Maimai","website":{"url":""},"email":"","dolls":["kis_aki.lzh"]},{"name":"Makoto","website":{"url":""},"email":"","dolls":["ksraye_1.lzh"]},{"name":"Horndale","website":{"url":""},"email":"[email protected]","dolls":["gdsbel.lzh"]},{"name":"Mokkun","website":{"url":""},"email":"","dolls":["wildcat.lzh","astro.lzh"]},{"name":"Yuujiji","website":{"url":""},"email":"[email protected]","dolls":["maki100.lzh"]},{"name":"Light","website":{"url":"http://member.nifty.ne.jp/L/index.html","status":404},"email":"[email protected]","dolls":["litks10c.lzh"]},{"name":"YOSHIY","website":{"url":"https://archive.org/details/kisspz4d179"},"email":"","dolls":["kisspz4.lzh"]},{"name":"Mugicha","website":{"url":""},"email":"[email protected]","dolls":["mg_mn000.lzh"]},{"name":"DUSA","website":{"url":"https://emk.name/sohonzan/shz.cgi?f=kissdata;n=418"},"email":"","dolls":["pcekis1.lzh"]},{"name":"Terry Wiley","website":{"url":"http://www.compulink.co.uk/~recombo-dna-lab//sleaze_castle/","status":404},"email":"[email protected]","dolls":["mirrorjo.lzh"]},{"name":"Dov Sherman:","website":{"url":"http://otakuworld.com/dbio.html"},"email":"[email protected]","dolls":["futabami.lzh"]},{"name":"Lisa Miller","website":{"url":"https://web.archive.org/web/20091027025837/http://geocities.com/lisa_l_miller/","status":404},"email":"","dolls":["witch.lzh","xenalm.lzh","anyano.lzh"]},{"name":"Chun","website":{"url":"http://home.pacific.net.sg/~puppy52/","wayback":"https://web.archive.org/web/19990202233646/http://home1.pacific.net.sg/~puppy52/","status":404},"email":"[email protected]","dolls":["ssdchan.lzh"]},{"name":"Kenn Stollery-Jones","website":{"url":"http://www.ozemail.com/~kennsj/","status":404},"email":"[email protected]","dolls":["samnmax.lzh"]},{"name":"Emby Quinn","website":{"url":"http://embyquinn.tripod.com/","status":200},"email":"[email protected]","dolls":["glamazon.lzh","cleodoll.lzh"]},{"name":"Tracy Kiger","website":{"url":""},"email":"t&[email protected]","dolls":["forklift.lzh"]},{"name":"Shiima","website":{"url":""},"email":"","dolls":["cham.lzh"]},{"name":"Princess Quova","website":{"url":""},"email":"[email protected]","dolls":["lime.lzh"]},{"name":"Jade Gordon","website":{"url":"http://jadegordon.deviantart.com/","status":200},"email":"","dolls":["luv3000.lzh","webgirl.lzh","isa2kiss.lzh","boredom.lzh"]},{"name":"Satori","website":{"url":"http://www.angelfire.com/sd/SatorisKiSS/","status":200},"email":"[email protected]","dolls":["ophelia.lzh","trinity.lzh"]},{"name":"MARS","website":{"url":"http://www.newon.org/mars/","status":404},"email":"[email protected]","dolls":["kssakura.lzh"]},{"name":"Lon Bergeron","website":{"url":"http://geocities.com/death_by_panda/","status":404},"email":"[email protected]","dolls":["buttrcup.lzh"]},{"name":"Batchix","website":{"url":"http://www.geocities.com/batchix/","status":404},"email":"[email protected]","dolls":["wtrclr.lzh","bsusan.lzh"]},{"name":"Ashlleeh","website":{"url":"http://webpages.charter.net/ashbury/","status":404},"email":"","dolls":["ash_trt.lzh"]},{"name":"Rach","website":{"url":""},"email":"[email protected]","dolls":["tenoh.lzh"]},{"name":"Genie","website":{"url":""},"email":"[email protected]","dolls":["showa1.lzh"]},{"name":"Kawaii fish","website":{"url":"http://soulmirror.envy.nu/","status":404},"email":"[email protected]","dolls":["sparkle.lzh"]},{"name":"RyogasGirl","website":{"url":""},"email":"","dolls":["kikyo2.lzh"]},{"name":"Amy","website":{"url":"http://www.geocities.com/amyskisspage/","status":404},"email":"[email protected]","dolls":["thegirls.lzh"]},{"name":"Nizardo","website":{"url":"http://nizardo.cjb.net","status":404},"email":"[email protected]","dolls":["nizsm.lzh"]},{"name":"Aragonite","website":{"url":"http://www.geocities.com/endlessduet/","status":404},"email":"[email protected]","dolls":["taurie.lzh","hj_kmsn.lzh","hatter.lzh","hjsaturn.lzh"]},{"name":"Jens","website":{"url":"http://www.audistory.de/","status":200},"email":"[email protected]","dolls":["audi.lzh"]},{"name":"Starfire","website":{"url":""},"email":"[email protected]","dolls":["e_lysine.lzh"]},{"name":"Shiva Indis","website":{"url":"http://www.planetkc.com/","status":404},"email":"[email protected]","dolls":["anthykis.lzh"]},{"name":"Carolita","website":{"url":""},"email":"[email protected]","dolls":["sirena.lzh"]},{"name":"Shinzui","website":{"url":"http://www.SailorOrion.com/","status":404},"email":"[email protected]","dolls":["generato.lzh"]},{"name":"pyon","website":{"url":"http://www.alles.or.jp/~pyon/","status":404},"email":"[email protected]","dolls":["pk_ask33.lzh"]},{"name":"Anime Craze","website":{"url":""},"email":"[email protected]","dolls":["dapower.lzh"]},{"name":"Issei","website":{"url":"http://www.hanayuuki.net/","status":404},"email":"[email protected]","dolls":["best1.lzh"]},{"name":"stale chips","website":{"url":""},"email":"[email protected]","dolls":["scgundmw.lzh","scsponge.lzh"]},{"name":"Mary","website":{"url":"http://members.tripod.com/Robinton12/index.html","status":200},"email":"[email protected]","dolls":["fake.lzh"]},{"name":"Kimiki","website":{"url":"http://www.nekorevolution.net/","status":404},"email":"[email protected]","dolls":["nako1.lzh","ki_chiku.lzh"]},{"name":"DarkStorm","website":{"url":"http://dstorm_cheesebox.tripod.com/","status":200},"email":"[email protected]","dolls":["ds_usa.lzh"]},{"name":"Digi_Kitty_Angel","website":{"url":"http://www.geocities.com/bakadigineko/","status":404},"email":"[email protected]","dolls":["rukikiss.lzh"]},{"name":"Brianna","website":{"url":""},"email":"[email protected]","dolls":["kamuix.lzh"]},{"name":"Valasia","website":{"url":"http://www.oddworldz.com/valasia/index.html","status":404},"email":"[email protected]","dolls":["gothabc.lzh"]},{"name":"Sakurcia","website":{"url":"http://www.etna-tv.prv.pl/","status":200},"email":"[email protected]","dolls":["tetsuya.lzh"]},{"name":"Arikuja","website":{"url":""},"email":"[email protected]","dolls":["aikiss.lzh"]},{"name":"Hiei-No-Miko","website":{"url":"http://dragon.ragnarok-ag.com/shinzon/index.html","status":404}
1,"email":"[email protected]","dolls":["sakurabm.lzh"]},{"name":"MKBailey","website":{"url":""},"email":"[email protected]","dolls":["kb-ran.lzh"]},{"name":"Punky","website":{"url":""},"email":"[email protected]","dolls":["ms_candy.lzh","yunass.lzh"]},{"name":"Rayn","website":{"url":"http://www.stormpages.com/snailey/","status":404},"email":"[email protected]","dolls":["s_rayn.lzh"]},{"name":"Lorelei","website":{"url":"http://www.geocities.com/mystic_lorelei/","status":404},"email":"[email protected]","dolls":["suspiria.lzh"]},{"name":"Sharm","website":{"url":"http://rydia.net/drakecastle/","status":404},"email":"[email protected]","dolls":["tongaihh.lzh"]},{"name":"Maria Luna","website":{"url":""},"email":"[email protected]","dolls":["bibiana.lzh"]},{"name":"Neko Girl","website":{"url":"http://crebain.net","status":200},"email":"[email protected]","dolls":["sailortm.lzh"]},{"name":"Shala Kerrigan","website":{"url":"http://www.geocities.com/shalas_beads/","status":404},"email":"[email protected]","dolls":["skcalen.lzh"]},{"name":"henrique","website":{"url":"http://www.fanzic.cjb.net","status":404},"email":"[email protected]","dolls":["cosplay.lzh"]},{"name":"Kayru","website":{"url":""},"email":"[email protected]","dolls":["banana.lzh"]},{"name":"Mariye","website":{"url":""},"email":"[email protected]","dolls":["poppy.lzh"]},{"name":"eph","website":{"url":"http://www.ephralon.de","status":200},"email":"[email protected]","dolls":["ephbelle.lzh"]},{"name":"Jason Pham","website":{"url":"http://eat-the-panda.deviantart.com/","status":200},"email":"","dolls":["p_sketch.lzh"]},{"name":"Dotty","website":{"url":"http://ops.hoshi.it/","status":404},"email":"[email protected]","dolls":["potatos.lzh"]},{"name":"Nekoirazu","website":{"url":""},"email":"[email protected]","dolls":["dante.lzh"]},{"name":"Mommy Eyes","website":{"url":"http://mommyeyes.tripod.com","status":200},"email":"[email protected]","dolls":["halparty.lzh"]},{"name":"Medox","website":{"url":"http://www.murphypop.com","status":200},"email":"","dolls":["gingerme.lzh","zahirame.lzh","cassiome.lzh","blytheme.lzh","tyd_me.lzh","mch_me.lzh","marzime.lzh"]},{"name":"sion","website":{"url":"https://raitoninqxaara.carrd.co/","status":200},"email":"","dolls":["s_lgbt.lzh","wuvluv.lzh","sion_ash.lzh"]}]'),n=i(1961),r=i.n(n);const l=["Editor's Choice","Editor's Award"],o=e=>{const{doll:t,clickHandler:i}=e,n=`/dolls/${t.file}`;const o=s.find((e=>e.name===t.artist))??t.artist;let h;"object"===typeof o&&o.website&&o.website.url&&o.website.url.length>0&&200===o.website.status&&(h=a.createElement("a",{href:o.website.url,target:"_blank"},o.name));let d=[];for(const[s,r]of Object.entries(t)){const e=a.createElement("li",{key:`overlay-${t.name.toLowerCase()}-${s}`},a.createElement("strong",null,s,":")," ",r);d.push(e)}const u=t.tags.map(((e,t)=>{if(!l.includes(e))return a.createElement("li",{key:e+"-"+t,className:r().tag},e)})),p=t.categories.map(((e,t)=>a.createElement("li",{key:e+"-"+t,className:r().category},e))),g=a.createElement(m,{imageUrl:`/dolls/${t.file.replace(".lzh","")}.png`,artist:t.artist,filename:t.file,styles:r().image});return a.createElement("div",{className:r().DollItem,key:`doll-${t.name.toLowerCase()}`},void 0!==i?a.createElement(c,{url:n,dollName:t.name,clickHandler:i},g):g,a.createElement("p",{className:"name"},t.name," by"," ",a.createElement("span",{className:"artist"},h||t.artist)),a.createElement("div",{className:r().metadata},t.file," | ",t.size," | ",new Date(t.date).getFullYear()),a.createElement("div",{className:r().filtering},(u.length>0||p.length>0)&&a.createElement("ul",null,u,p)))},c=e=>{const{url:t,dollName:i,clickHandler:s,children:n}=e;return a.createElement("a",{href:t,key:`key${i}`,className:"dollLink",onClick:e=>{s&&s(e,t)},draggable:"false"},n)},m=e=>{const{imageUrl:t,filename:i,artist:s,styles:n}=e;return a.createElement("div",{className:n},a.createElement("img",{src:t,alt:`${i} by ${s}`,draggable:"false"}))};var h=i(9046),d=i.n(h),u=i(2277);var p=e=>{const{clickHandler:t,currentDolls:i}=e,s=i.map(((e,i)=>{if(!(e.expansion.length>0))return a.createElement(o,{doll:e,clickHandler:t,key:`${i}`})}));return a.createElement(u.W,{className:d().DollMenu},s)},g=i(2924),f=i.n(g);var w=e=>{const{onFileDrop:t}=e,[i,s]=(0,a.useState)(!1);return window.addEventListener("dragenter",(e=>{e.preventDefault(),e.stopPropagation(),i||s(!0)})),a.createElement("div",{className:`${f().UploadDropZone} ${i?f().dragging:""}`,onDrop:e=>((e,t)=>{e.preventDefault(),s(!1),t(e)})(e,t),onDragOver:e=>{e.preventDefault(),s(!0)},onDragLeave:e=>{e.preventDefault(),s(!1)}},a.createElement("p",null,"Drag and drop a ",a.createElement("code",null,".lzh")," file to open in the KiSS viewer."))},b=i(7608),y=i.n(b),k=i(5263),v=i.n(k);var x=({children:e,onClose:t})=>{(0,a.useEffect)((()=>{const e=document.body.style.overflow;document.body.style.overflow="hidden";const i=e=>{"Escape"===e.key&&t?.()};return document.addEventListener("keydown",i),()=>{document.body.style.overflow=e,document.removeEventListener("keydown",i)}}),[t]);return a.createElement("div",{className:v().Modal,onPointerDown:()=>{t?.()}},a.createElement("div",{onPointerDown:e=>e.stopPropagation()},e))};var E=e=>{const{error:t}=e,[i,s]=(0,a.useState)(!0),n=()=>{s(!1)};return a.createElement(a.Fragment,null,i&&a.createElement(x,{onClose:n},a.createElement("div",{className:`window ${y().ErrorMessage}`},a.createElement("div",{className:"title-bar"},a.createElement("div",{className:"title-bar-text"},a.createElement("span",null,a.createElement("span",{className:"icon-small"}
1),"Error")),a.createElement("div",{className:"title-bar-controls"},a.createElement("button",{"aria-label":"Close",className:"close-button",onClick:()=>n()}))),a.createElement("div",{className:"window-body"},a.createElement("div",{className:"icon"}),a.createElement("div",null,a.createElement("p",null,a.createElement("strong",null,"An error has occured.")),a.createElement("p",null,"Oops, something went wrong!"),a.createElement("ul",null,a.createElement("li",null,"File does not have the correct extension. Only ",a.createElement("code",null,".lzh")," files can be loaded."),a.createElement("li",null,"File cannot be parsed or decoded")),a.createElement("p",null,"Please send an email to"," ",a.createElement("a",{href:"mailto:[email protected]"},"support.")))))))};const z=[...JSON.parse('[{"name":"Sailor Mercury (Face)","categories":["Sailor Moon","Makeovers"],"file":"amifkiss.lzh","artist":"Mizushima Izumi","email":"","website":"","size":"9k","date":"January 1, 1993","tags":[],"expansion":""},{"name":"Sailor Mercury","categories":["Sailor Moon"],"file":"amikiss.lzh","artist":"Mizushima Izumi","email":"","website":"","size":"25k","date":"September 10, 1993","tags":[],"expansion":""},{"name":"Annie Hamilton","categories":["Power Instinct"],"file":"aniekiss.lzh","artist":"KOH","email":"[email protected]","website":"","size":"83k","date":"January 7, 1994","tags":["Editor\'s Choice","Favorites"],"expansion":""},{"name":"Anthy Himemiya","categories":["Revolutionary Girl Utena"],"file":"anthykis.lzh","artist":"Shiva Indis","email":"[email protected]","website":"http://www.planetkc.com/","size":"55k","date":"July 31, 2000","tags":["Editor\'s Choice"],"expansion":""},{"name":"Anastasia","categories":["Movies"],"file":"anyano.lzh","artist":"Lisa Miller","email":"","website":"http://www.geocities.com/lisa_l_miller/","size":"203k","date":"August 25, 2002","tags":["Editor\'s Choice"],"expansion":""},{"name":"Haagenti System Variation","categories":["Armed Colossus"],"file":"armdc2ks.lzh","artist":"Saegusa Yuki","email":"[email protected]","website":"http://www.page.sannet.ne.jp/mayama/","size":"41k","date":"June 9, 1995","tags":[],"expansion":""},{"name":"Alisa Is A Spacewoman","categories":["Original Character"],"file":"astro.lzh","artist":"Mokkun","email":"","website":"","size":"49k","date":"August 22, 1998","tags":["Editor\'s Choice","Favorites"],"expansion":""},{"name":"Audi","categories":["Miscellaneous"],"file":"audi.lzh","artist":"Jens","email":"[email protected]","website":"http://www.audistory.de/","size":"158k","date":"May 10, 2000","tags":[],"expansion":""},{"name":"Disguise Banana","categories":["Original Character","Aberrant"],"file":"banana.lzh","artist":"Kayru","email":"[email protected]","website":"","size":"30k","date":"June 21, 2004","tags":["Editor\'s Choice","Favorites"],"expansion":""},{"name":"Tomoyo and Sakura: Best Friends","categories":["Card Captor Sakura"],"file":"best1.lzh","artist":"Issei","email":"[email protected]","website":"http://www.hanayuuki.net/","size":"43k","date":"July 7, 2001","tags":["Editor\'s Choice"],"expansion":""},{"name":"Bibiana","categories":["Original Character"],"file":"bibiana.lzh","artist":"Maria Luna","email":"[email protected]","website":"","size":"421k","date":"April 18, 2003","tags":["Editor\'s Choice"],"expansion":""},{"name":"Buttercup","categories":["PowerPuff Girls"],"file":"buttrcup.lzh","artist":"Lon Bergeron","email":"[email protected]","website":"http://geocities.com/death_by_panda/","size":"125k","date":"July 2, 1999","tags":["CKiss","Editor\'s Choice"],"expansion":""},{"name":"Daisy","categories":["Happy Talk"],"file":"cdsykiss.lzh","artist":"Iti-ro","email":"","website":"","size":"15k","date":"June 22, 1993","tags":["Editor\'s Choice"],"expansion":""},{"name":"King of Fighters Cosplayer","categories":["Original Character"],"file":"cosplay.lzh","artist":"henrique","email":"[email protected]","website":"http://www.fanzic.cjb.net","size":"38k","date":"August 3, 2003","tags":["CKiss","Editor\'s Choice"],"expansion":""},{"name":"The Power","categories":["Card Captor Sakura"],"file":"dapower.lzh","artist":"Anime Craze","email":"[email protected]","website":"","size":"86k","date":"April 13, 2001","tags":["Editor\'s Choice"],"expansion":""},{"name":"Sailor Chibi Moon","categories":["Sailor Moon"],"file":"ds_usa.lzh","artist":"DarkStorm","email":"[email protected]","website":"http://dstorm_cheesebox.tripod.com/","size":"41k","date":"September 21, 2001","tags":["Editor\'s Choice"],"expansion":""},{"name":"Lysine, beta version","categories":["Original Character"],"file":"e_lysine.lzh","artist":"Starfire","email":"[email protected]","website":"","size":"41k","date":"July 8, 2000","tags":["Editor\'s Choice"],"expansion":""},{"name":"Dee and Ryo","categories":["Fake"],"file":"fake.lzh","artist":"Mary","email":"[email protected]","website":"http://members.tripod.com/Robinton12/index.html","size":"110k","date":"August 11, 2001","tags":["Editor\'s Choice"],"expansion":""},{"name":"Sailor Jupiter","categories":["Sailor Moon"],"file":"fp_ksmk.lzh","artist":"Five Pennies","email":"","website":"","size":"52k","date":"March 3, 1994","tags":[],"expansion":""},{"name":"Sailor Pluto","categories":["Sailor Moon"],"file":"fp_ksms.lzh","artist":"Five Pennies","email":"","website":"","size":"80k","date":"January 2, 1995","tags":["Editor\'s Choice","Favorites"],"expansion":""},{"name":"Belldandy","categories":["Oh My Goddess!"],"file":"gdsbel.lzh","artist":"Horndale","email":"[email protected]","website":"","size":"111k","date":"September 20, 1994","tags":["Editor\'s Choice"],"expansion":""},{"name":"Mad Hatter","categories":["Tenshi Kinryohku"],"file":"hatter.lzh","artist":"Aragonite","email":"[email protected]","website":"http://www.geocities.com/endlessduet/","size":"107k","date":"January 14, 2002","tags":["Editor\'s Award","FKiss"],"expansion":""},{"name":"Sailor Saturn","categories":["Sailor Moon"],"file":"hjsaturn.lzh","artist":"Aragonite","email":"[email protected]","website":"http://www.geocities.com/endlessduet/","size":"147k","date":"July 11, 2002","tags":["Editor\'s Choice"],"expansion":""},{"name":"Happy Little Families Halloween Party","categories":["Seasonal: Halloween","Original Character"],"file":"halparty.lzh","artist":"Mommy Eyes","email":"[email protected]","website":"http://mommyeyes.tripod.com","size":"80k","date":"October 20, 2006","tags":["Editor\'s Choice"],"expansion":""},{"name":"Go Board","categories":["Playable Games","Miscellaneous"],"file":"igo.lzh","artist":"Yurika-chan","email":"","website":"","size":"3k","date":"June 15, 1994","tags":["Favorites"],"expansion":""},{"name":"Kamui","categories":["X"],"file":"kamuix.lzh","artist":"Brianna","email":"[email protected]","website":"","size":"82k","date":"November 23, 2001","tags":["Editor\'s Choice"],"expansion":""},{"name":"Ran","categories":["GALS!"],"file":"kb-ran.lzh","artist":"MKBailey","email":"[email protected]","website":"","size":"21k","date":"June 4, 2002","tags":["Editor\'s Choice"],"expansion":""},{"name":"Brutal Ripping","categories":["Miscellaneous","Aberrant"],"file":"kbiriri.lzh","artist":"EWIGKEIT","email":"[email protected]","website":"","size":"24k","date":"February 16, 1995","tags":["Favorites"],"expansion":""},{"name":"Kikyo","categories":["Inu-Yasha"],"file":"kikyo2.lzh","artist":"RyogasGirl","email":"","website":"","size":"85k","date":"April 4, 2000","tags":["Editor\'s Choice"],"expansion":""},{"name":"Aki","categories":["Original Character"],"file":"kis_aki.lzh","artist":"Maimai","email":"","website":"","size":"82k","date":"August 7, 1994","tags":["Editor\'s Choice"],"expansion":""},{"name":"Ryouko","categories":["Tenchi Muyo!"],"file":"kisryoko.lzh","artist":"G Hammer","email":"","website":"","size":"64k","date":"January 26, 1994","tags":["Editor\'s Award"],"expansion":""},{"name":"Chun Li","categories":["Street Fighter","Video Games"],"file":"kisschun.lzh","artist":"Simba","email":"[email protected]","website":"","size":"52k","date":"December 18, 1993","tags":["Editor\'s Choice","Favorites"],"expansion":""},{"name":"Sailor Mars (base set)","categories":["Sailor Moon"],"file":"kissmars.lzh","artist":"Yav","email":"[email protected]","website":"http://www2s.biglobe.ne.jp/~yav/","size":"11k","date":"May 22, 1993","tags":[],"expansion":""},{"name":"Hikaru, Umi, and Fu","categories":["Mahou Kishi Rayearth"],"file":"ksraye_1.lzh","artist":"Makoto","email":"","website":"","size":"93k","date":"September 4, 1994","tags":["Editor\'s Choice"],"expansion":""},{"name":"Sakura Kinomoto","categories":["Card Captor Sakura"],"file":"kssakura.lzh","artist":"MARS","email":"[email protected]","website":"http://www.newon.org/mars/","size":"244k","date":"April 12, 1999","tags":["Editor\'s Choice"],"expansion":""},{"name":"KiSS Shell","categories":["Miscellaneous","Aberrant"],"file":"kssh100.lzh","artist":"EWIGKEIT","email":"[email protected]","website":"","size":"20k","date":"January 2, 1995","tags":[],"expansion":""},{"name":"Wapiko","categories":["Kingyou Chuihou!"],"file":"kswapiko.lzh","artist":"A7M2","email":"","website":"","size":"65k","date":"December 1, 1993","tags":["Editor\'s Choice"],"expansion":""},{"name":"Onion and Bonus doll","categories":["Miscellaneous","Aberrant"],"file":"kzwiebel.lzh","artist":"EWIGKEIT","email":"[email protected]","website":"","size":"10k","date":"July 13, 1993","tags":[],"expansion":""},{"name":"Lime","categories":["Saber Marionette J"],"file":"lime.lzh","artist":"Princess Quova","email":"[email protected]","website":"","size":"77k","date":"August 17, 1998","tags":["Editor\'s Choice"],"expansion":""},{"name":"Sailor Mercury","categories":["Sailor Moon"],"file":"litks10c.lzh","artist":"Light","email":"[email protected]","website":"http://member.nifty.ne.jp/L/index.html","size":"25k","date":"April 12, 1995","tags":["Editor\'s Choice","Favorites"],"expansion":""},{"name":"Maki Osada","categories":["Original Character"],"file":"maki100.lzh","artist":"Yuujiji","email":"[email protected]","website":"","size":"28k","date":"March 26, 1995","tags":["Editor\'s Choice","Favorites"],"expansion":""},{"name":"Mina, Girl in the Elf Village","categories":["Original Character"],"file":"mg_mn000.lzh","artist":"Mugicha","email":"[email protected]","website":"","size":"15k","date":"October 27, 1995","tags":["Editor\'s Choice"],"expansion":""},{"name":"Mihoshi","categories":["Tenchi Muyo!"],"file":"mihoshi1.lzh","artist":"Masami & K1A","email":"","website":"http://otakuworld.com/guide/index.html?/cgi-bin/amtgxttl.exe?Tenchi+Muyou,+Ryo-Oh-Ki","size":"30k","date":"February 17, 1994","tags":["Editor\'s Award"],"expansion":""},{"name":"Battleship Mogami","categories":["Miscellaneous"],"file":"mogami.lzh","artist":"Ishikawa Ryuuzou","email":"[email protected]","website":"","size":"11k","date":"November 29, 1993","tags":[],"expansion":""},{"name":"Zplus-GAL MSZ006C1 Seena","categories":["Original Character","Miscellaneous"],"file":"msz
1006c1.lzh","artist":"ELME","email":"[email protected]","website":"http://www2s.biglobe.ne.jp/~elme/","size":"65k","date":"August 15, 1998","tags":["Editor\'s Choice"],"expansion":""},{"name":"The Inner Planet Scouts","categories":["Sailor Moon"],"file":"nizsm.lzh","artist":"Nizardo","email":"[email protected]","website":"http://nizardo.cjb.net","size":"124k","date":"April 23, 2000","tags":["Editor\'s Choice"],"expansion":""},{"name":"Ophelia St.Morphine","categories":["Original Character"],"file":"ophelia.lzh","artist":"Satori","email":"[email protected]","website":"http://www.angelfire.com/sd/SatorisKiSS/","size":"16k","date":"January 31, 1999","tags":["Editor\'s Choice"],"expansion":""},{"name":"Mr. Potato","categories":["Original Character","Miscellaneous"],"file":"potatos.lzh","artist":"Dotty","email":"[email protected]","website":"http://ops.hoshi.it/","size":"32k","date":"April 9, 2006","tags":["Editor\'s Choice"],"expansion":""},{"name":"Rika","categories":["Digimon"],"file":"rukikiss.lzh","artist":"Digi_Kitty_Angel","email":"[email protected]","website":"http://www.geocities.com/bakadigineko/","size":"52k","date":"October 31, 2001","tags":["Editor\'s Choice"],"expansion":""},{"name":"Rayn","categories":["Original Character"],"file":"s_rayn.lzh","artist":"Rayn","email":"[email protected]","website":"http://www.stormpages.com/snailey/","size":"84k","date":"August 4, 2002","tags":["Editor\'s Choice"],"expansion":""},{"name":"The Inner Planet Scouts","categories":["Sailor Moon"],"file":"sailor5.lzh","artist":"Saegusa Yuki","email":"[email protected]","website":"http://www.page.sannet.ne.jp/mayama/","size":"52k","date":"December 29, 1993","tags":["Editor\'s Choice"],"expansion":""},{"name":"Sailor Moon and Tuxedo Mask","categories":["Sailor Moon"],"file":"sailortm.lzh","artist":"Neko Girl","email":"[email protected]","website":"http://crebain.net","size":"93k","date":"June 11, 2003","tags":["Editor\'s Choice"],"expansion":""},{"name":"Sakura Kinomoto","categories":["Card Captor Sakura"],"file":"sakurabm.lzh","artist":"Hiei-No-Miko","email":"[email protected]","website":"http://dragon.ragnarok-ag.com/shinzon/index.html","size":"190k","date":"May 3, 2002","tags":["Editor\'s Choice"],"expansion":""},{"name":"Sam and Max","categories":["Video Games"],"file":"samnmax.lzh","artist":"Kenn Stollery-Jones","email":"[email protected]","website":"http://www.ozemail.com/~kennsj/","size":"68k","date":"October 6, 1997","tags":["Editor\'s Choice","Favorites"],"expansion":""},{"name":"Magical Girl Pretty Sammy","categories":["Tenchi Muyo!"],"file":"sasami.lzh","artist":"Wedge","email":"","website":"","size":"48k","date":"March 24, 1994","tags":["Editor\'s Award"],"expansion":""},{"name":"Make Your Own Gundam","categories":["Gundam"],"file":"scgundmw.lzh","artist":"stale chips","email":"[email protected]","website":"","size":"90k","date":"August 7, 2001","tags":["Favorites"],"expansion":""},{"name":"SpongeBob Squarepants - SpongeBob","categories":["Television"],"file":"scsponge.lzh","artist":"stale chips","email":"[email protected]","website":"","size":"6k","date":"December 8, 2001","tags":["Favorites"],"expansion":""},{"name":"Honey Love","categories":["Classic Paperdolls"],"file":"showa1.lzh","artist":"Genie","email":"[email protected]","website":"","size":"779k","date":"March 16, 2000","tags":["Editor\'s Choice"],"expansion":""},{"name":"Sirena","categories":["Original Character"],"file":"sirena.lzh","artist":"Carolita","email":"[email protected]","website":"","size":"62k","date":"August 24, 2000","tags":["Editor\'s Choice","Favorites"],"expansion":""},{"name":"Mini-Skuld","categories":["Oh My Goddess!"],"file":"sk_kimux.lzh","artist":"MUX","email":"","website":"","size":"100k","date":"December 29, 1993","tags":["Editor\'s Award"],"expansion":""},{"name":"Mini Calendar Maker","categories":["Miscellaneous"],"file":"skcalen.lzh","artist":"Shala Kerrigan","email":"[email protected]","website":"http://www.geocities.com/shalas_beads/","size":"58k","date":"July 17, 2003","tags":["Editor\'s Choice"],"expansion":""},{"name":"Sparkle","categories":["Original Character"],"file":"sparkle.lzh","artist":"Kawaii fish","email":"[email protected]","website":"http://soulmirror.envy.nu/","size":"172k","date":"March 16, 2000","tags":["Editor\'s Choice"],"expansion":""},{"name":"Super SD-chan","categories":["Original Character"],"file":"ssdchan.lzh","artist":"Chun","email":"[email protected]","website":"http://home.pacific.net.sg/~puppy52/","size":"21k","date":"August 7, 1997","tags":["Editor\'s Choice"],"expansion":""},{"name":"Suspiria","categories":["Original Character"],"file":"suspiria.lzh","artist":"Lorelei","email":"[email protected]","website":"http://www.geocities.com/mystic_lorelei/","size":"54k","date":"September 22, 2002","tags":["Editor\'s Choice"],"expansion":""},{"name":"Sailor Uranus","categories":["Sailor Moon"],"file":"tenoh.lzh","artist":"Rach","email":"[email protected]","website":"","size":"370k","date":"February 28, 2000","tags":["Editor\'s Choice"],"expansion":""}
1,{"name":"Tetsuya Kajiwara","categories":["Fushigi Yuugi"],"file":"tetsuya.lzh","artist":"Sakurcia","email":"[email protected]","website":"http://www.etna-tv.prv.pl/","size":"68k","date":"February 12, 2002","tags":["Editor\'s Choice"],"expansion":""},{"name":"The Girls","categories":["Original Character"],"file":"thegirls.lzh","artist":"Amy","email":"[email protected]","website":"http://www.geocities.com/amyskisspage/","size":"26k","date":"April 4, 2000","tags":["Editor\'s Choice"],"expansion":""},{"name":"Tongai","categories":["Gensomaden Saiyuki"],"file":"tongaihh.lzh","artist":"Sharm","email":"[email protected]","website":"http://rydia.net/drakecastle/","size":"56k","date":"March 1, 2003","tags":["Editor\'s Choice"],"expansion":""},{"name":"Trinity","categories":["Original Character"],"file":"trinity.lzh","artist":"Satori","email":"[email protected]","website":"http://www.angelfire.com/sd/SatorisKiSS/","size":"25k","date":"January 31, 1999","tags":["Editor\'s Choice"],"expansion":""},{"name":"72th Force `Wildcat\'","categories":["Original Character","Miscellaneous"],"file":"wildcat.lzh","artist":"Mokkun","email":"","website":"","size":"164k","date":"November 11, 1994","tags":["Editor\'s Award","Favorites"],"expansion":""},{"name":"Witchblade\'s Detective Sara Pezzini","categories":["Image Comics"],"file":"witch.lzh","artist":"Lisa Miller","email":"","website":"http://www.geocities.com/lisa_l_miller/","size":"161k","date":"January 3, 1997","tags":["Editor\'s Choice"],"expansion":""},{"name":"Xena and Calisto","categories":["Xena, Warrior Princess"],"file":"xenalm.lzh","artist":"Lisa Miller","email":"","website":"http://www.geocities.com/lisa_l_miller/","size":"153k","date":"April 1, 2001","tags":["Editor\'s Choice","Favorites"],"expansion":""},{"name":"Battleship and Bonus Doll","categories":["Uchuu Senkan Yamato"],"file":"yamatoks.lzh","artist":"Saegusa Yuki","email":"[email protected]","website":"http://www.page.sannet.ne.jp/mayama/","size":"149k","date":"December 2, 1993","tags":["Editor\'s Choice","Favorites"],"expansion":""},{"name":"Yuna","categories":["Final Fantasy","Video Games"],"file":"yunass.lzh","artist":"Yuna-Ki (template by Punky)","email":"[email protected]","website":"http://www.sweetsakura.tk","size":"92k","date":"July 17, 2003","tags":["Editor\'s Choice"],"expansion":""},{"name":"Carbancle","categories":["Puyo Puyo"],"file":"kyo_kis2.lzh","artist":"Kyouhei","email":"","website":"","size":"10k","date":"November 15, 1993","tags":[],"expansion":""},{"name":"Jocasta (Mirror Set)","categories":["Sleaze Castle"],"file":"mirrorjo.lzh","artist":"Terry Wiley","email":"[email protected]","website":"http://www.compulink.co.uk/~recombo-dna-lab//sleaze_castle/","size":"74k","date":"July 1, 1996","tags":[],"expansion":""}]'),...JSON.parse('[{"name":"Sailor Generator Portrait Shoppe","categories":["Sailor Moon"],"file":"generato.lzh","artist":"Shinzui","email":"[email protected]","website":"http://www.SailorOrion.com/","size":"273k","date":"August 30, 2000","tags":["FKiss","Editor\'s Choice","Favorites"],"expansion":""},{"name":"Trent Lane","categories":["Daria"],"file":"ash_trt.lzh","artist":"Ashlleeh","email":"","website":"http://webpages.charter.net/ashbury/","size":"79k","date":"September 24, 1999","tags":["FKiss","Editor\'s Choice"],"expansion":""},{"name":"Popsicle Stick Dollie","categories":["Original Character","Aberrant"],"file":"poppy.lzh","artist":"Mariye","email":"[email protected]","website":"","size":"41k","date":"October 31, 2004","tags":["FKiss","Editor\'s Choice"],"expansion":""},{"name":"Sailor Neptune","categories":["Sailor Moon"],"file":"hj_kmsn.lzh","artist":"Aragonite","email":"[email protected]","website":"http://www.geocities.com/endlessduet/","size":"118k","date":"September 21, 2001","tags":["FKiss","Editor\'s Award"],"expansion":""},{"name":"Fork-Lift","categories":["Miscellaneous","Aberrant"],"file":"forklift.lzh","artist":"Tracy Kiger","email":"t&[email protected]","website":"","size":"14k","date":"March 31, 1998","tags":["FKiss","Favorites"],"expansion":""},{"name":"Talkative Asuka-chan","categories":["Original Character"],"file":"pk_ask33.lzh","artist":"pyon","email":"[email protected]","website":"http://www.alles.or.jp/~pyon/","size":"103k","date":"February 22, 2001","tags":["FKiss","Editor\'s Award"],"expansion":""},{"name":"Futaba Shimeru (Mirror Set)","categories":["Futaba-kun Change!"],"file":"futabami.lzh","artist":"Dov Sherman","email":"[email protected]","website":"http://otakuworld.com/dbio.html","size":"85k","date":"November 14, 1996","tags":["FKiss","Editor\'s Award"],"expansion":""},{"name":"Siouxsie Misercordia","categories":["Original Character"],"file":"siouxsie.lzh","artist":"Satori","email":"[email protected]","website":"http://www.angelfire.com/sd/SatorisKiSS/","size":"53k","date":"August 11, 2001","tags":["FKiss","Editor\'s Choice"],"expansion":""},{"name":"Bustle Beauty 1874","categories":["Historical"],"file":"tlbustle.lzh","artist":"Tigerlady","email":"[email protected]","website":"","size":"470k","date":"March 15, 2003","tags":["FKiss2","Editor\'s Award"],"expansion":""},{"name":"Bridal Bliss","categories":["Original Character"],"file":"tlbride.lzh","artist":"Tigerlady","email":"[email protected]","website":"","size":"142k","date":"November 15, 2002","tags":["FKiss2","Editor\'s Award"],"expansion":""},{"name":"The Attic in Which You Go Slightly Mad","categories":["Dollhouses"],"file":"mad.lzh","artist":"Size:","email":"[email protected]","website":"http://www.angelfire.com/scary/dontlook/","size":"Date:","date":"","tags":["FKiss2","Editor\'s Choice"],"expansion":""},{"name":"Build Your Own Gingerbread House","categories":["Dollhouses","Seasonal: Christmas"],"file":"gingerme.lzh","artist":"Medox","email":"[email protected]","website":"http://medox.murphypop.com","size":"26k","date":"December 25, 2005","tags":["FKiss2","Editor\'s Choice"],"expansion":""},{"name":"Rei Ayanami","categories":["Neon Genesis Evangelion"],"file":"rei_a.lzh","artist":"Amaryllis","email":"[email protected]","website":"http://www.shadowsofdeception.com","size":"806k","date":"October 20, 2006","tags":["FKiss2","Editor\'s Choice"],"expansion":""},{"name":"Misty","categories":["Pokemon"],"file":"mistykf2.lzh","artist":"Kawaii fish","email":"[email protected]","website":"http://soulmirror.envy.nu/","size":"192k","date":"July 7, 2001","tags":["FKiss2","Editor\'s Choice"],"expansion":""},{"name":"Lady Amalthea","categories":["Last Unicorn","Movies"],"file":"amalthea.lzh","artist":"Zoe","email":"[email protected]","website":"http://www.angelfire.com/on3/lilyshan/kiss.html","size":"174k","date":"October 18, 2005","tags":["FKiss2","CKiss","Editor\'s Choice"],"expansion":""}
1,{"name":"Gen13\'s Freefall","categories":["Image Comics"],"file":"freefall.lzh","artist":"Cal Callisto","email":"[email protected]","website":"","size":"165k","date":"April 28, 1998","tags":["FKiss2","Editor\'s Choice"],"expansion":""},{"name":"Narcissa Malfoy - Haute couture","categories":["Harry Potter"],"file":"mc-narci.lzh","artist":"Mary-chan","email":"[email protected]","website":"http://www.sarapica.net/","size":"73k","date":"December 19, 2004","tags":["FKiss2","Editor\'s Award"],"expansion":""},{"name":"Coraline","categories":["Coraline"],"file":"coralin.lzh","artist":"Key","email":"[email protected]","website":"http://nihilisticangel.deviantart.com","size":"88k","date":"March 20, 2005","tags":["FKiss2","Editor\'s Choice"],"expansion":""},{"name":"Sailor Moon","categories":["Sailor Moon"],"file":"smoonavi.lzh","artist":"Avi","email":"[email protected]","website":"http://www.geocities.com/TelevisionCity/Set/4340/kissdoll.htm","size":"370k","date":"January 14, 2002","tags":["FKiss2","Editor\'s Award"],"expansion":""},{"name":"Heavy Metal Papillion - Stars","categories":["Sailor Moon"],"file":"hmpstar2.lzh","artist":"Megan","email":"[email protected]","website":"","size":"167k","date":"April 6, 2001","tags":["FKiss2","Editor\'s Award"],"expansion":""},{"name":"Sailor Mars","categories":["Sailor Moon"],"file":"nizmars.lzh","artist":"Nizardo","email":"[email protected]","website":"http://nizardo.cjb.net","size":"577k","date":"July 6, 2004","tags":["FKiss2","Editor\'s Choice"],"expansion":""},{"name":"Sailor Mercury","categories":["Sailor Moon"],"file":"nizmer.lzh","artist":"Nizardo","email":"[email protected]","website":"http://nizardo.cjb.net","size":"87k","date":"August 7, 2001","tags":["FKiss2","Editor\'s Choice"],"expansion":""},{"name":"Zahira","categories":["Original Character"],"file":"zahirame.lzh","artist":"Medox","email":"[email protected]","website":"http://medox.murphypop.com","size":"191k","date":"September 18, 2005","tags":["FKiss2","Editor\'s Award"],"expansion":""},{"name":"Sophie - Mirror Doll of Many Fashions","categories":["Original Character"],"file":"soph_mir.lzh","artist":"Kimiki","email":"[email protected]","website":"http://www.nekorevolution.net/","size":"287k","date":"March 19, 2001","tags":["FKiss2","Editor\'s Award"],"expansion":""},{"name":"Ribbon Fighter Death","categories":["Original Character"],"file":"rf_mori.lzh","artist":"Kimiki","email":"[email protected]","website":"http://www.nekorevolution.net/","size":"122k","date":"June 20, 2001","tags":["FKiss2","Editor\'s Award"],"expansion":""},{"name":"Pretty Little Head","categories":["Original Character"],"file":"prtylhd.lzh","artist":"Wendy","email":"[email protected]","website":"http://www.geocities.com/willajean1/","size":"433k","date":"October 5, 2002","tags":["FKiss2","Editor\'s Choice"],"expansion":""},{"name":"Claudia the Immortal Marriage Impostor","categories":["Original Character"],"file":"aw_cl1.lzh","artist":"Skid","email":"[email protected]","website":"http://www.keladry.com/","size":"208k","date":"October 18, 2001","tags":["FKiss2","Editor\'s Choice"],"expansion":""},{"name":"Athemes","categories":["Original Character"],"file":"athemes.lzh","artist":"Silent angel","email":"[email protected]","website":"http://www.tokyo-girl.net/myu","size":"96k","date":"May 27, 2001","tags":["FKiss2","Editor\'s Award"],"expansion":""},{"name":"Amatski, the Make-Your-Own Adventurer","categories":["Original Character"],"file":"amatski.lzh","artist":"Jolie","email":"[email protected]","website":"http://www.neeku.net","size":"134k","date":"May 5, 2003","tags":["FKiss2","Editor\'s Choice"],"expansion":""},{"name":"Cassiopeia X","categories":["Original Character"],"file":"cassiome.lzh","artist":"Medox","email":"[email protected]","website":"http://medox.murphypop.com","size":"88k","date":"March 6, 2006","tags":["FKiss2","Editor\'s Award"],"expansion":""},{"name":"Blythe","categories":["Toys"],"file":"blytheme.lzh","artist":"Medox","email":"[email protected]","website":"http://medox.murphypop.com","size":"158k","date":"July 6, 2004","tags":["FKiss2","CKiss","Editor\'s Choice"],"expansion":""},{"name":"Turanga Leela","categories":["Futurama",""],"file":"tyd_me.lzh","artist":"Medox","email":"[email protected]","website":"http://medox.murphypop.com","size":"176k","date":"August 3, 2003","tags":["FKiss2","Editor\'s Award"],"expansion":""},{"name":"Estelle: Have Yourself a Merry Chibi Holiday","categories":["Advent Calendar 2003","Seasonal: Christmas","Original Character"],"file":"mch_me.lzh","artist":"Medox","email":"[email protected]","website":"http://medox.murphypop.com","size":"133k","date":"December 20, 2003","tags":["FKiss2","Editor\'s Choice"],"expansion":""},{"name":"Marzipan","categories":[""],"file":"marzime.lzh","artist":"Medox","email":"[email protected]","website":"http://medox.murphypop.com","size":"102k","date":"November 28, 2004","tags":["FKiss2","Editor\'s Choice"],"expansion":""},{"name":"s_lgbt","file":"s_lgbt.lzh","artist":"sion","size":"40k","website":"https://raitoninqxaara.carrd.co/","date":"2024","tags":["FKiss"],"categories":["Original Character","Modern"],"expansion":""},{"name":"wuvluv","file":"wuvluv.lzh","artist":"sion","size":"34k","website":"https://raitoninqxaara.carrd.co/","date":"May 16, 2024","tags":["FKiss"],"categories":["WuvLuv","Modern"],"expansion":""},{"name":"ashely","file":"sion_ash.lzh","artist":"sion","size":"34k","website":"https://raitoninqxaara.carrd.co/","date":"May 16, 2024","tags":["FKiss"],"categories":["Original Character","Modern"],"expansion":""}]'),...JSON.parse('[{"name":"Mobile Suit Gundam - RGM-79 GM","categories":["Gundam","Miscellaneous"],"file":"elme_31.lzh","artist":"ELME","website":"http://www2s.biglobe.ne.jp/~elme/","email":"[email protected]","size":"41k","date":"December 5, 1996","tags":["Favorites"],"expansion":""},{"name":"NEC PC-9801 DA2","categories":["Miscellaneous","Aberrant"],"file":"elme_necpc.lzh","artist":"ELME","website":"http://www2s.biglobe.ne.jp/~elme/","email":"[email protected]","size":"22k","date":"1994","tags":["Favorites"],"expansion":""},{"name":"Zaku","categories":["Miscellaneous","Gundam"],"file":"elme_03.lzh","artist":"ELME","website":"https://kiss-wkp.com/archives/lib/elme_03.html","email":"[email protected]","size":"72k","date":"June 13, 1994","tags":[],"expansion":""},{"name":"Panzer IV Tank","categories":["Miscellaneous","Aberrant"],"file":"kisspz4.lzh","artist":"YOSHIY","email":"","website":"https://archive.org/detail
1s/kisspz4d179","size":"22k","date":"May 18, 1995","tags":[],"expansion":""},{"name":"RX-78-2 Gundam","categories":["Gundam","Miscellaneous"],"file":"gundamks.lzh","artist":"Yuki Saegusa","email":"","website":"http://emk.name/sohonzan/shz.cgi?f=kissdata;n=125","size":"55k","date":"April 29, 1994","tags":[],"expansion":""},{"name":"PC-Engine","categories":["Miscellaneous","Aberrant"],"file":"pcekis1.lzh","artist":"DUSA","email":"","website":"https://emk.name/sohonzan/shz.cgi?f=kissdata;n=418","size":"22k","date":"June 6, 1996","tags":[],"expansion":""}]')].flat();let S=function(e){return e[e.TAG=0]="TAG",e[e.CATEGORY=1]="CATEGORY",e}({});var C=i(6638),_=i.n(C);var j=e=>{const{values:t,onSelect:i,header:s,filterType:n,selected:r}=e,l=Object.keys(t).map(((e,s)=>e.length>0?a.createElement("li",{key:`${n.toString()}-${s.toString()}`},a.createElement("input",{type:"checkbox",onChange:e=>{i(e,n)},id:e,name:e,checked:r.includes(e)}),a.createElement("label",{htmlFor:e},e," (",t[e],")")):""));return a.createElement("div",{className:_().Filter},a.createElement("fieldset",null,a.createElement("legend",null,s),a.createElement("ul",null,l)))};var M=({metadata:e,selectedTags:t,selectedCategories:i,selectedSort:s,dollCount:n,onSelectHandler:r,showFilterHandler:l,onSortHandler:o,clearAllHandler:c})=>{const m=(0,a.useRef)();let h=0;const d=document.querySelector(".FilterIcon")?.getBoundingClientRect();d&&window.innerWidth>768&&(h=window.innerWidth-d.x-d.width);const u=t.map(((e,t)=>a.createElement("li",{key:"st"+t},e))),p=i.map(((e,t)=>a.createElement("li",{key:"sc"+t},e)));return a.createElement("div",{className:`${_().Filters} window`,style:{right:h},ref:m},a.createElement("div",{className:"title-bar"},a.createElement("div",{className:"title-bar-text"},"Filters"),a.createElement("div",{className:"title-bar-controls"},a.createElement("button",{"aria-label":"Close",onClick:l}))),a.createElement("div",{className:"window-body container"},a.createElement("div",{className:_().FilterWrap},a.createElement(j,{values:e.categories,onSelect:r,header:"Categories",filterType:S.CATEGORY,selected:i}),a.createElement("div",{className:"col"},a.createElement(j,{values:e.tags,onSelect:r,header:"Tags",filterType:S.TAG,selected:t}),a.createElement("div",{className:_().Filter},a.createElement("fieldset",null,a.createElement("legend",null,"Sort"),a.createElement("label",{htmlFor:"sort"},"Sort by",a.createElement("select",{name:"sort",id:"sort",value:s,onChange:o},a.createElement("option",{value:"date-newest"},"Newest"),a.createElement("option",{value:"date-oldest"},"Oldest"),a.createElement("option",{value:"artist"},"Artist"))))))),(i.length>0||t.length>0)&&a.createElement("fieldset",{className:_().Selected},a.createElement("legend",null,a.createElement("strong",null,"Selected"),"\xa0",a.createElement("span",{className:_().DollCount},"(",n,")")),a.createElement("div",{className:`${_().Row} field-row`},a.createElement("section",null,a.createElement("strong",null,"Categories"),a.createElement("ul",null,p)),a.createElement("section",null,a.createElement("strong",null,"Tags"),a.createElement("ul",null,u)),a.createElement("section",null,a.createElement("button",{onClick:e=>{e.preventDefault(),e.stopPropagation(),c()}},"Clear All"))))))},F=i(5893);function N(e){const t=Object.assign({h3:"h3",p:"p",a:"a",h4:"h4",strong:"strong"},e.components);return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(t.h3,{children:"Welcome to kisekae.org!"}),"\n",(0,F.jsxs)(t.p,{children:['Kisekae.org lets you view "virtual paper dolls" created for the ',(0,F.jsx)(t.a,{href:"https://en.wikipedia.org/wiki/Kisekae_Set_System",children:"KiSS (Kisekae Set System)"})," in the late 90s and early 2000s."]}),"\n",(0,F.jsx)(t.h4,{children:"Viewing this website"}),"\n",(0,F.jsx)(t.p,{children:(0,F.jsx)(t.strong,{children:"This website is best viewed on a laptop or desktop computer. It is not meant for mobile!"})}),"\n",(0,F.jsx)(t.h4,{children:"\u26a0\ufe0f Warning \u26a0\ufe0f"}),"\n",(0,F.jsx)(t.p,{children:'As these are "dress-up dolls", you can also undress them. Much like with real people, that means a doll can be naked.'}),"\n",(0,F.jsx)(t.p,{children:"Some of these files contain dolls that are more realistic than others. No doll is guaranteed to be completely free of nudity or appropriate for all ages."}),"\n",(0,F.jsx)(t.p,{children:"Many of these sets were created more than 20 years ago. Fashions, tastes, and norms have evolved since the 1990s and early 2000s."}),"\n",(0,F.jsx)(t.h4,{children:"Contact"}),"\n",(0,F.jsxs)(t.p,{children:[(0,F.jsx)(t.a,{href:"mailto:[email protected]",children:"Email questions or comments"}),"."]})]})}var I=function(e={}){const{wrapper:t}=e.components||{};return t?(0,F.jsx)(t,Object.assign({},e,{children:(0,F.jsx)(N,e)})):N(e)},K=i(315),O=i.n(K);var A=()=>{const[e,t]=(0,a.useState)(!0),i=()=>{t(!1)};return(0,a.useEffect)((()=>{localStorage.setItem("welcomeModalDismissed","true")}),[e]),a.createElement(a.Fragment,null,e&&a.createElement(x,{onClose:i},a.createElement("div",{className:`window ${O().WelcomeModal}`},a.createElement("div",{className:"title-bar"},a.createElement("div",{className:"title-bar-text"},a.createElement("span",null,"Welcome!")),a.createElement("div",{className:"title-bar-control
1s"},a.createElement("button",{"aria-label":"Close",className:"close-button",onClick:i}))),a.createElement("div",{className:"window-body"},a.createElement(I,null)))))};var P=()=>{const[e,t]=(0,a.useState)(!1);return(0,a.useEffect)((()=>{const e="undefined"===typeof window.navigator?"":navigator.userAgent,i=Boolean(e.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile|WPDesktop/i));t(i)}),[]),{isMobile:e}},D=i(8895),T=i.n(D);const H=({value:e,clickHandler:t,active:i})=>a.createElement("li",null,a.createElement("button",{onClick:i=>{t(i,e)},className:i?T().Selected:""},e));var L=e=>{const{clickHandler:t,menuItems:i,header:s,id:n,selected:r}=e,{isMobile:l}=P(),o=i.map(((e,i)=>l?a.createElement("option",{key:i,value:e},e):a.createElement(H,{key:`${s}${e}`,value:e,clickHandler:t,active:r==Number.parseInt(e)})));return a.createElement("div",{id:n,className:T().ToolbarMenu},a.createElement("fieldset",{className:"field-row"},a.createElement("label",null,s),l?a.createElement("select",{id:"cnfSelect",title:"cnfSelect",onChange:e=>{const i=e.target;i.value&&t(e,i.value)}},o):a.createElement("ul",null,o)))},B=i(4589),R=i.n(B);var W=e=>{const{clickHandler:t,type:i}=e;return a.createElement("div",{className:R().ToolbarMenuIcon},a.createElement("i",{className:R()[i],onClick:t}),a.createElement("span",null,i))},G=i(1666),$=i.n(G);var J=e=>{const{isMobile:t}=P();let i=[$().ContentWindow];t&&i.push($().Mobile);const{type:s,closeHandler:n,children:r}=e;return a.createElement("div",{className:`${s} window ${i.join(" ")}`},a.createElement("div",{className:"title-bar"},a.createElement("div",{className:"title-bar-text"},s),a.createElement("div",{className:"title-bar-controls"},a.createElement("button",{"aria-label":"Close",onClick:n}))),a.createElement("div",{className:`window-body ${$().WindowBody}`},a.createElement("div",{className:$().Content},a.createElement("pre",null,r))))},U=i(3454);const Y=(...e)=>{U.env.NEXT_PUBLIC_DEBUG_LOGS},V=(e,t,i,a,s)=>{const n=t.celData[i.filename];if(void 0===n)console.warn("Cel is undefined");else{Y((n.filename,JSON.stringify(a)));const t=q(n,s);t&&e.drawImage(t,a.x,a.y,t.width,t.height)}},q=(e,t)=>{if(void 0!==e.imageElements[t])return e.imageElements[t];const i=e.imageData[t];if(void 0===i)return void Y(e.filename);const a=document.createElement("canvas");a.width=i.width+e.xOffset,a.height=i.height+e.yOffset;const s=a.getContext("2d");return null!==s?(s.putImageData(i,e.xOffset,e.yOffset),e.imageElements[t]=a,a):void 0};var Z=i(8711),X=i.n(Z);const Q=({isMobile:e,children:t})=>{let i=[T().Toolbar,X().ViewerToolbar];e&&i.push(X().Mobile);const s=(0,a.useRef)(null),{height:n}=ie(s);return a.createElement("div",{id:"Toolbar",className:i.join(" "),ref:s,style:{height:`${n}px`}},a.createElement("div",null,t))},ee=({isMobile:e,width:t,selectedObject:i,pointer:s})=>{let n=[X().ViewerStatusBar];e&&n.push(X().Mobile);const r=(0,a.useRef)(null),{height:l}=ie(r),o={};return null!==l&&(o.height=`${l}px`),e||(o.width=`${t}px`),a.createElement("div",{className:n.join(" "),ref:r,style:o},a.createElement("div",{className:"status-bar"},a.createElement(te,{classname:"SelectedObject"},"Object: ",i?.selectedCel," #",i?.number),a.createElement(te,{classname:"ObjectComment"},i?.comment&&a.createElement("span",null,"Comment: ",i?.comment)),a.createElement(te,{classname:"PointerPosition"},s&&a.createElement(a.Fragment,null,"x: ",s.x,", y: ",s.y)),a.createElement(te,{classname:"ObjectFix"},i?.fix)))},te=({children:e,classname:t})=>{const i=["status-bar-field",X()[t]];return a.createElement("p",{className:i.join(" ")},e)},ie=e=>{const[t,i]=(0,a.useState)(null);return(0,a.useEffect)((()=>{const t=e.current?.firstElementChild;t?.clientHeight&&i(t?.clientHeight)}),[e.current]),{height:t}};var ae=i(7480),se=i.n(ae);var ne=({title:e,onClose:t,onOpen:i,isOpenInitially:s=!1})=>{const[n,r]=a.useState(s),l=(0,a.useRef)(null),o=()=>{t?.(),r(!1)};(0,a.useEffect)((()=>{const e=e=>{const t=l.current;null!==t&&(t?.contains(e.target)||o())};document.addEventListener("touchstart",e),document.addEventListener("click",e)}),[l.current]);return{openPopupWindow:()=>{i?.(),r(!0)},closePopupWindow:o,PopupWindow:({children:t})=>{const i=[se().PopupWindow,"window"];return a.createElement(a.Fragment,null,n&&a.createElement("div",{className:i.join(" "),ref:l},a.createElement("div",{className:"title-bar"},e&&a.createElement("div",{className:"title-bar-text"}
1,e),a.createElement("div",{className:"title-bar-controls"},a.createElement("button",{"aria-label":"Close",onClick:o}))),a.createElement("div",{className:"window-body"},t)))}}};var re=class{constructor(e,t){this.x=e,this.y=t}};class le{constructor(){Y()}static getObjectAtPosition(e,t,i,a){if(void 0===a)return null;Y();for(let s=0;s<e.celLayers.length;s++){const n=e.celLayers[s],r=e.getObject(n.objectNumber,t);if(void 0!==r){const t=r.getPosition();if(null!==t){const s=e.celData[n.filename],l=new re(t.x+s.width+s.xOffset,t.y+s.height+s.yOffset);if(a.x>t.x+s.xOffset&&a.x<l.x&&a.y>t.y+s.yOffset&&a.y<l.y){const e=Math.floor(a.x-(t.x+s.xOffset)),n=Math.floor(a.y-(t.y+s.yOffset)),l=new re(e,n);if(!(0===s.getColorAtPosition(l,i).a)&&r.mapped&&r.celFiles[s.filename])return r.selectedCel=s.filename,r}}}}return null}static getOverlappingObjects(e,t,i,a){const s=[];for(let n=0;n<e.celLayers.length;n++){const i=e.celLayers[n];if(i.objectNumber===a.number);else{const n=e.getObject(i.objectNumber,t);if(void 0!==n&&n.mapped){const t=Object.keys(n.celFiles),i=Object.keys(a.celFiles);let r=!1;for(let l=0;l<t.length&&!r;l++){const o=t[l],c=e.celData[o],m=new re(n.currentPosition.x+c.xOffset,n.currentPosition.y+c.yOffset),h=new re(m.x+c.width,m.y+c.height);for(let t=0;t<i.length;t++){const l=i[t],o=e.celData[l],d=new re(a.currentPosition.x+o.xOffset,a.currentPosition.y+o.yOffset),u=new re(d.x+o.width,d.y+o.height);if(!(u.x<m.x||d.x>h.x||d.y>h.y||u.y<m.y)){Y((c.filename,a.number,o.filename)),s.push(n),r=!0;break}}}}}}return s}}class oe{constructor(){Y()}static extractTargetValue(e){return"string"===typeof e&&"#"===e[0]&&(e=parseInt(e.replace("#",""))),"string"===typeof e?e.toLowerCase():e}static extractNumericTargetValue(e){return"#"===e[0]&&(e=e.replace("#","")),parseInt(e)}static createFKEvent(e){const t=e.method;if("initialize"===t)return new he;if("begin"===t)return new de;if("end"===t)return new ue;if(!e.args)throw new Error(`FKEvent not found for ${e.method}`);if("alarm"===t)return new pe(parseInt(e.args));if("press"===t)return new ge(e.args);if("catch"===t)return new fe(e.args);if("fixcatch"===t)return new we(e.args);if("release"===t)return new be(e.args);if("drop"===t)return new ye(e.args);if("fixdrop"===t)return new ke(e.args);if("unfix"===t)return new ve(e.args);if("set"===t)return new xe(parseInt(e.args));if("col"===t)return new Ee(parseInt(e.args));if("never"===t)return new ze;if("in"===t){const t=e.args.split(",");return new Se(t[0],t[1])}}static createFKAction(e){const t=e.method;let i;if((e.args||""===e.args)&&(i=e.args.split(",")),"nop"===t)return new Te;if("quit"===t)return new He;if(!(i&&i.length>0))throw new Error(`${t} not implemented`);return"map"===t?new _e(i[0]):"unmap"===t?new je(i[0]):"altmap"===t?new Me(i[0]):"timer"===t?new Fe(parseInt(i[0]),parseInt(i[1])):"randomtimer"===t?new Ne(parseInt(i[0]),parseInt(i[1]),parseInt(i[2])):"sound"===t?new Ie(i[0]):"music"===t?new Ke(i[0]):"move"===t?new Oe(i[0],parseInt(i[1]),parseInt(i[2])):"changeset"===t?new Pe(parseInt(i[0])):"changecol"===t?new De(parseInt(i[0])):"movebyx"===t?new Le(i[0],i[1],parseInt(i[2])):"movebyy"===t?new Be(i[0],i[1],parseInt(i[2])):"moveto"===t?new Ae(i[0],parseInt(i[1]),parseInt(i[2])):void console.warn(`${t} with args ${i} not implemented`)}}var ce=function(e){return e[e.FK1=0]="FK1",e[e.FK1_b=1]="FK1_b",e[e.FK2=2]="FK2",e[e.FK2_1=3]="FK2_1",e[e.FK3=4]="FK3",e[e.FK4=5]="FK4",e}(ce||{});class me{constructor(){this.actions=[]}}class he extends me{constructor(){super(),this.version=ce.FK1}}class de extends me{constructor(){super(),this.version=ce.FK1}}class ue extends me{constructor(){super(),this.version=ce.FK1}}class pe extends me{constructor(e){super(),this.id=e,this.version=ce.FK1}}class ge extends me{constructor(e){super(),this.target=e,this.version=ce.FK1}}class fe extends me{constructor(e){super(),this.target=e,this.version=ce.FK1}}class we extends me{constructor(e){super(),this.target=e,this.version=ce.FK1}}class be extends me{constructor(e){super(),this.target=e,this.version=ce.FK1}}class ye extends me{constructor(e){super(),this.target=e,this.version=ce.FK1}}class ke extends me{constructor(e){super(),this.target=e,this.version=ce.FK1}}class ve extends me{constructor(e){super(),this.target=e,this.version=ce.FK1}}class xe extends me{constructor(e){super(),this.setNumber=e,this.version=ce.FK1}}class Ee extends me{constructor(e){super(),this.paletteNumber=e,this.version=ce.FK1}}class ze extends me{constructor(){super(),this.version=ce.FK1,Y()}}class Se extends me{constructor(e,t){super(),this.target1=e,this.target2=t,this.version=ce.FK2}}class Ce{constructor(){}}class _e extends Ce{constructor(e){super(),this.version=ce.FK1,this.target=oe.extractTargetValue(e)}}class je extends Ce{constructor(e){super(),this.version=ce.FK1,this.target=oe.extractTargetValue(e)}}class Me extends Ce{constructor(e){super(),this.version=ce.FK1,this.target=oe.extractTargetValue(e)}}class Fe extends Ce{constructor(e,t){super(),this.version=ce.FK1,this.alarm=e,this.delay=t}}class Ne extends Ce{constructor(e,t,i){super(),this.version=ce.FK1,this.alarm=e,this.delay=t,this.variance=i}}class Ie extends Ce{constructor(e){super(),this.version=ce.FK2,this.file=e}}class Ke extends Ce{constructor(e){super(),this.version=ce.FK2,this.file=e}}class Oe extends Ce{constructor(e,t,i){super(),this.version=ce.FK1,this.target=oe.extractNumericTargetValue(e),this.x=t,this.y=i}}class Ae extends Ce{constructor(e,t,i){super(),this.version=ce.FK1,this.target=oe.extractNumericTargetValue(e),this.x=t,this.y=i}}class Pe extends Ce{constructor(e){super(),this.version=ce.FK1,this.setNumber=e}}class De extends Ce{constructor(e){super(),this.version=ce.FK1,this.paletteNumber=e}}class Te extends Ce{constructor(){super(),this.version=ce.FK1}}class He extends Ce{constructor(){super(),this.version=ce.FK1}}class Le extends Ce{constructor(e,t,i){super(),this.version=ce.FK2,this.target=oe.extractNumericTargetValue(e),this.relative=oe.extractNumericTargetValue(t),this.x=i}}class Be extends Ce{constructor(e,t,i){super(),this.version=ce.FK2,this.target=oe.extractNumericTargetValue(e),this.relative=oe.extractNumericTargetValue(t),this.y=i}}const Re={initialize:he,begin:de,end:ue,alarm:pe,press:ge,catch:fe,fixcatch:we,release:be,drop:ye,fixdrop:ke,unfix:ve,set:xe,col:Ee,never:ze,in:Se},We=Object.keys(Re),Ge={timer:Fe,randomtimer:Ne,map:_e,unmap:je,altmap:Me,sound:Ie,music:Ke,move:Oe,changeset:Pe,changecol:De,nop:Te,quit:He,moveto:Ae,movebyx:Le,movebyy:Be},$e=Object.keys(Ge);var Je=i(3181),Ue=i.n(Je),Ye=i(9857),Ve=i(9973);const qe={midiOut:void 0,initialized:!1,initializing:void 0,midiData:{},midis:{},init:()=>qe.initialized?Promise.resolve():(qe.initializing||(Ye(Je),Ve(Je),qe.initializing=Je.requestMIDIAccess().then((e=>{Y(),Je.synth.Tiny.register("Web Audio"),qe.midiOut=Ue()().openMidiOut(),qe.initialized=!0,Object.entries(qe.midiData).forEac
1h((([e,t])=>{qe.createPlayer(e,t)}))})).catch((e=>{Y()})).finally((()=>{qe.initializing=void 0}))),qe.initializing),add:(e,t)=>{qe.midiData[e]=t,qe.initialized&&qe.createPlayer(e,t)},createPlayer:(e,t)=>{if(!qe.midiOut||void 0!==qe.midis[e])return;const i=new Je.MIDI.SMF(t).player();i.connect(qe.midiOut),qe.midis[e]=i},remove:e=>{e.forEach((e=>{delete qe.midis[e],delete qe.midiData[e]}))},play:e=>{qe.initialized&&void 0!==qe.midis[e]?qe.midis[e].play():void 0!==qe.midiData[e]&&qe.init().then((()=>{qe.midis[e]?.play()}))},pause:e=>{qe.initialized&&void 0!==qe.midis[e]&&qe.midis[e].pause()},isPlaying:e=>Boolean(qe.midis[e]?.playing),pauseAll:()=>{Object.keys(qe.midis).length&&Object.keys(qe.midis).forEach((e=>qe.pause(e)))}},Ze={_audioContext:void 0,audioContext:()=>(void 0==Ze._audioContext&&(Ze._audioContext=new AudioContext),Ze._audioContext)},Xe=e=>{const{kissSet:t}=e,{canvasRef:i,getUpdatedPointerPosition:s,height:n,width:r}=(e=>{const t=(0,a.useRef)(null),i=(0,a.useRef)(null),[s,n]=(0,a.useState)(600),[r,l]=(0,a.useState)(400);(0,a.useEffect)((()=>{n(e.config.playfield.width),l(e.config.playfield.height)}),[e]),(0,a.useEffect)((()=>{t.current&&(i.current=t.current.getBoundingClientRect())}),[s,r]),(0,a.useEffect)((()=>{const e=()=>{t.current&&(i.current=t.current.getBoundingClientRect())};return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[]);const o=(0,a.useCallback)((e=>{if(i.current){const a=t.current?.parentElement?t.current?.parentElement.scrollLeft:0,s=t.current?.parentElement?t.current?.parentElement.scrollTop:0;return{x:Math.round(e.x-i.current.left+a),y:Math.round(e.y-i.current.top+s)}}}),[]);return{canvasRef:t,getUpdatedPointerPosition:o,height:r,width:s}})(t);(0,a.useEffect)((()=>{(e=>{Object.values(e.celData).forEach((e=>{Object.keys(e.imageData).forEach((t=>{q(e,Number.parseInt(t,10))}))}))})(t)}),[t]);const{currentPalette:l,currentSet:o,handleFKActions:c,handleFKPressEvent:m,setCurrentPalette:h,setCurrentSet:d}=(e=>{const[t,i]=(0,a.useState)(e.getDefaultSetNumber()),[s,n]=(0,a.useState)(0),r=(0,a.useRef)(t);(0,a.useEffect)((()=>{r.current=t}),[t]);const l=(0,a.useCallback)((t=>{let i,a=Object.keys(e.config.sets).map((e=>parseInt(e)));"string"===typeof t.target&&(i=e.celLayers.find((e=>e.filename===t.target)),void 0!==i&&(a=i.sets)),a.forEach((a=>{const s=e.config.sets[a];if(!s)return void console.warn(`Page set #${a} is null or undefined`);let n;if("number"===typeof t.target&&s.objects[t.target]){if(n=s.objects[t.target],t instanceof _e?n.mapped=!0:t instanceof je?n.mapped=!1:t instanceof Me&&(n.mapped=!n.mapped),void 0!==n.mapped){const e=n.celFiles;Object.keys(e).forEach((e=>{n.celFiles[e]=n.mapped}))}}else void 0!==i&&s.objects[i.objectNumber]?(n=s.objects[i.objectNumber],t instanceof _e?n.celFiles[t.target]=!0:t instanceof je?n.celFiles[t.target]=!1:t instanceof Me&&(n.celFiles[t.target]=!n.celFiles[t.target]),!0===n.celFiles[t.target]&&(n.mapped=!0)):Y(t.target)}))}),[e]),o=(0,a.useCallback)((t=>{Y(),t.forEach((t=>{if(t instanceof _e||t instanceof je||t instanceof Me)Y(),l(t);else if(t instanceof Fe||t instanceof Ne)Y(),e.config.script.runTimerAction(t,(e=>{o(e)}));else if(t instanceof Pe)i(e.normalizeSetNumber(t.setNumber));else if(t instanceof De)n(t.paletteNumber);else if(t instanceof Oe){const i=e.getObject(t.target,r.current);if(!i)return;i.currentPosition.x+=t.x,i.currentPosition.y+=t.y}else if(t instanceof Ae){const i=e.getObject(t.target,r.current);if(!i)return;i.currentPosition.x=t.x,i.currentPosition.y=t.y}else if(t instanceof Le){const i=e.getObject(t.target,r.current),a=e.getObject(t.relative,r.current);if(!i||!a)return;i.currentPosition.x=a.currentPosition.x+t.x}else if(t instanceof Be){const i=e.getObject(t.target,r.current),a=e.getObject(t.relative,r.current);if(!i||!a)return;i.currentPosition.y=a.currentPosition.y+t.y}else if(t instanceof Ke)void 0!==e.soundBank[t.file]&&t&&(qe.isPlaying(t.file)?qe.pause(t.file):qe.play(t.file));else if(t instanceof Ie){if(void 0!==e.soundBank[t.file]&&t){const i=e.soundBank[t.file];i.playing?i.stop():i.play()}}else Y((t.constructor.name,JSON.stringify(t)))}))}),[l,e]),c=(0,a.useCallback)((t=>{t&&t.selectedCel&&e.config.script.onPress(t,(e=>{Y(t.number),o(e)}))}),[o,e]);return(0,a.useEffect)((()=>{i(e.getDefaultSetNumber()),n(0),e.config.script.onInitialize((e=>{o(e)})),e.config.script.onBegin((e=>{o(e)}))}),[o,e]),(0,a.useEffect)((()=>{e.config.script.onSet(t,(e=>{o(e)}))}),[t,o,e]),(0,a.useEffect)((()=>{e.config.script.onCol(s,(e=>o(e)))}),[s,o,e]),{currentPalette:s,currentSet:t,handleFKActions:o,handleFKPressEvent:c,setCurrentPalette:n,setCurrentSet:i}})(t),[u,p]=(0,a.useState)(!1),{isMobile:g}=P(),{handleTouchEnd:f,handleTouchMove:w,handleTouchStart:b,isPanning:y}=(e=>{const[t,i]=(0,a.useState)(!1),s=(0,a.useRef)([]);return{handleTouchEnd:e=>{i(!1),s.current=[],e.preventDefault()},handleTouchMove:i=>{if(t&&e.current&&2===i.touches.length){const t=s.current.find((e=>e.identifier===i.targetTouches[0].identifier));if(void 0!==t){const a=t.clientX-i.targetTouches[0].clientX,s=t.clientY-i.targetTouches[0].clientY;e.current.parentElement?.scrollBy(a,s)}else s.current=[]}i.preventDefault()},handleTouchStart:e=>{2===e.touches.length&&(i(!0),s.current=Array.from(e.touches).map((({clientX:e,clientY:t,identifier:i})=>({clientX:e,clientY:t,identifier:i}))),s.current.forEach((e=>{Y()}))),e.preventDefault()},isPanning:t}})(i),{pointer:k,pointerDownHandler:v,pointerMoveHandler:x,pointerUpHandler:E,selectedObject:z}=(({canvasRef:e,currentPalette:t,currentSet:i,getUpdatedPointerPosition:s,handleFKActions:n,handleFKPressEvent:r,isMobile:l,isPanning:o,kissSet:c})=>{const[m,h]=(0,a.useState)(new re(0,0)),[d,u]=(0,a.useState)(null),[p,g]=(0,a.useState)(null);return{pointer:m,pointerDownHandler:e=>{const a=s(new re(e.clientX,e.clientY));a&&h(a);const l=le.getObjectAtPosition(c,i,t,a);u(l),null!=l&&(l.fix>
10?(l.fix-=1,Y((l.number,l.selectedCel,l.fix)),0===l.fix?c.config.script.onUnfix(l,(e=>n(e))):c.config.script.onFixCatch(l,(e=>n(e)))):(l.dragging=!0,c.config.script.onCatch(l,(e=>n(e)))),r(l))},pointerMoveHandler:a=>{const n=s(new re(a.clientX,a.clientY));if(n&&h(n),!o||!l){if(e.current&&!l){const a=le.getObjectAtPosition(c,i,t,n),s=null!==a&&0===a.fix;e.current.style.cursor=s?"pointer":"default"}if(null!=d&&d.dragging){const e=n??m;let t=p;if(!t){const i=d.getPosition();t=new re(e.x-i.x,e.y-i.y),g(t)}d.setPosition({x:e.x-t.x,y:e.y-t.y}),Y((d.number,d?.selectedCel))}}},pointerUpHandler:e=>{null!=d&&(le.getOverlappingObjects(c,i,t,d).forEach((e=>{c.config.script.onIn(e,d,(e=>{n(e)}))})),c.config.script.onRelease(d,(e=>{n(e)})),d.fix>0?c.config.script.onFixDrop(d,(e=>{n(e)})):c.config.script.onDrop(d,(e=>{n(e)})),d.dragging=!1,u(null),g(null))},selectedObject:d}})({canvasRef:i,currentPalette:l,currentSet:o,getUpdatedPointerPosition:s,handleFKActions:c,handleFKPressEvent:m,isMobile:g,isPanning:y,kissSet:t});(0,a.useEffect)((()=>{const e=e=>{if(e.key.match(/[0-9]/)){const i=parseInt(e.key);d(t.normalizeSetNumber(i))}};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}}),[t,d]);((e,t)=>{const i=(0,a.useRef)(null);(0,a.useEffect)((()=>{const t=()=>{e(),i.current=requestAnimationFrame(t)};return i.current=requestAnimationFrame(t),()=>{null!==i.current&&cancelAnimationFrame(i.current)}}),t)})((()=>{i.current&&(({canvas:e,currentPalette:t,currentSet:i,kissSet:a})=>{const{height:s,width:n}=e,r=e.getContext("2d");if(null!==r){r.clearRect(0,0,n,s),r.fillStyle=a.backgroundColor,r.strokeStyle=a.borderColor,r.fillRect(0,0,n,s),r.strokeRect(0,0,n,s);for(let e=a.celLayers.length-1;e>-1;e--){const s=a.celLayers[e],n=a.getObject(s.objectNumber,i);if(void 0!==n&&n.mapped&&!0===n.celFiles[s.filename]){const e=n.getPosition();null!==e&&V(r,a,s,e,t)}}}})({canvas:i.current,currentPalette:l,currentSet:o,kissSet:t})}),[t,o,l]);const{PopupWindow:S,openPopupWindow:C}=ne({title:"Touch Controls",isOpenInitially:!0});return a.createElement(a.Fragment,null,g&&a.createElement(S,null,a.createElement("p",null,"To scroll / pan, use two fingers.")),a.createElement(Q,{isMobile:g},a.createElement(L,{id:"SetsMenu",header:"Sets",menuItems:Object.keys(t.config.sets),clickHandler:(e,i)=>{e.preventDefault(),"string"===typeof i&&(i=parseInt(i)),d(t.normalizeSetNumber(i))},selected:o}),t.palette&&t.palette.numPalettes>1&&a.createElement(L,{id:"PaletteMenu",header:"Palette",menuItems:Object.keys(t.palette.paletteData),clickHandler:(e,t)=>{e.preventDefault(),"string"===typeof t&&(t=parseInt(t)),h(t)},selected:l}),t.readme.length>0&&a.createElement(W,{type:"ReadMe",altText:"Read Me",clickHandler:()=>{p(!0)}}),g&&a.createElement("button",{className:X().TouchControlsButton,onClick:C},"Touch Controls")),u&&a.createElement(J,{type:"ReadMe",closeHandler:()=>{p(!1)}},t.readme),a.createElement("canvas",{width:r,height:n,id:"Canvas",className:X().Canvas,ref:i,onPointerMove:x,onPointerDown:v,onPointerUp:E,onContextMenu:e=>{"touch"===e.nativeEvent.pointerType&&e.preventDefault()},onTouchStart:b,onTouchMove:w,onTouchEnd:f,onTouchCancel:f}),a.createElement(ee,{isMobile:g,width:r,selectedObject:z,pointer:k}))};var Qe=i(9230),et=i.n(Qe);var tt=e=>{const t=e.filename.replace(".lzh","").split("/").slice(-1)[0],i=`/dolls/${t}.png`;return a.createElement("div",{className:et().Loader},a.createElement("div",{id:"TempToolbar",className:`TempToolbar ${T().Toolbar}`}),a.createElement("div",{className:`${et().LoaderText} window`},a.createElement("div",{className:"title-bar"},a.createElement("div",{className:"title-bar-text"},"Loading ",t,".lzh")),a.createElement("div",{className:"window-body"},a.createElement("p",null,"Please wait..."),a.createElement("div",{className:"ProgressBar status-bar"},a.createElement("div",{className:"status-bar-field"},a.createElement("div",{className:"progress"}))))),a.createElement("img",{src:i,alt:e.filename}))},it=i(3015),at=i.n(it);const st=({loading:e,file:t,onClose:i,isMobile:s})=>{let n=[at().TitleBar];return s&&n.push(at().Mobile),a.createElement("div",{className:n.join(" ")},a.createElement("div",{className:"title-bar"},a.createElement("div",{className:`title-bar-text ${at().TitleBarText}`},"kisekae.org viewer: ",t," ",e?"- LOADING":""),a.createElement("div",{className:"title-bar-control
1s"},a.createElement("button",{type:"button","aria-label":"Close",onClick:i,className:"close-button"}))))},nt=({isMobile:e=!1,onSelectCnf:t,multipleCnfs:i,cnf:s})=>{const n=i.map(((e,t)=>a.createElement("option",{key:t,value:e},e)));let r=[at().MultipleCnfSelectMenu];return e&&r.push(at().Mobile),a.createElement("div",{className:r.join(" ")},a.createElement("div",null,a.createElement("fieldset",{className:"field-row"},a.createElement("label",null,"Config"),a.createElement("select",{id:"cnfSelect","data-testid":"cnf-select",title:"cnfSelect",value:s,onChange:e=>{e.target.value&&t(e.target.value)}},a.createElement("option",{value:""},"Select config"),n))))};var rt=({cnf:e,file:t,isMobile:i,kissSet:s,loading:n,multipleCnfs:r,onClose:l,onSelectCnf:o,viewerRef:c})=>a.createElement(x,{onClose:l},a.createElement("div",{className:`${at().Viewer} window`,onClick:e=>e.stopPropagation(),ref:c},a.createElement(st,{loading:n,file:t,onClose:l,isMobile:i}),r.length>0&&a.createElement(nt,{multipleCnfs:r,onSelectCnf:o,isMobile:i,cnf:e}),n&&0===r.length&&a.createElement(tt,{filename:t}),!n&&s&&a.createElement(Xe,{kissSet:s}))),lt=i(8689),ot=i(6025),ct=i(4671),mt=i(2007),ht=i.n(mt),dt=i(1664),ut=i.n(dt);const pt=e=>{const{name:t,iconClassName:i,children:s,closeHandler:n}=e;let r=0;const l=document.querySelector(`.${i}`)?.getBoundingClientRect();return l&&window.innerWidth>768&&(r=window.innerWidth-l.x-l.width),a.createElement("div",{className:`${ht().NavWindow} ${t}`,style:{right:r}},a.createElement("div",{className:"window"},a.createElement("div",{className:"title-bar"},a.createElement("div",{className:"title-bar-text"},t),a.createElement("div",{className:"title-bar-controls"},a.createElement("button",{"aria-label":"Close",onClick:n}))),a.createElement("div",{className:`window-body ${ht().NavWindowBody}`},s)))};var gt=({handleShowFilter:e,activeFilterCount:t})=>{const i=(0,a.useRef)(),[s,n]=(0,a.useState)(!1),[r,l]=(0,a.useState)(!1),[o,c]=(0,a.useState)(!1),m=()=>{l(!1),c(!1),n(!s)},h=()=>{n(!1),c(!1),l(!r)},d=()=>{n(!1),l(!1),c(!o)};return(0,a.useEffect)((()=>{document.addEventListener("click",(e=>{i.current?.contains(e.target)||(n(!1),l(!1),c(!1))}))}),[]),a.createElement("header",{className:ht().Header},a.createElement("div",{className:ht().container},a.createElement("h1",null,a.createElement(ut(),{href:"/"},a.createElement("a",null,"kisekae.org"))),a.createElement("div",{className:ht().tagline},a.createElement("p",null,a.createElement("a",{href:"https://en.wikipedia.org/wiki/Kisekae_Set_System",rel:"external noopener",target:"_blank"},"Kisekae")," ","set system (KiSS) viewer and gallery")),a.createElement("div",{ref:i},a.createElement("nav",null,a.createElement("ul",null,a.createElement("li",{title:"Filter",onClick:e},t>0&&a.createElement("span",{className:ht().ActiveFilterCount},t),a.createElement("i",{className:`${ht().FilterIcon} FilterIcon`})," ","Filter"),a.createElement("li",{title:"Updates",onClick:h},a.createElement("i",{className:`${ht().UpdateIcon} UpdateIcon`})," ","Updates"),a.createElement("li",{title:"Help",onClick:m},a.createElement("i",{className:`${ht().HelpIcon} HelpIcon`})," ","Help"),a.createElement("li",{title:"Info",onClick:d},a.createElement("i",{className:`${ht().InfoIcon} InfoIcon`})," ","Info"))))),r&&a.createElement(pt,{iconClassName:"UpdateIcon",name:"Updates",closeHandler:h},a.createElement(ot.Z,null)),s&&a.createElement(pt,{iconClassName:"HelpIcon",name:"Help",closeHandler:m},a.createElement(lt.Z,null)),o&&a.createElement(pt,{iconClassName:"InfoIcon",name:"Info",closeHandler:d},a.createElement(ct.Z,null)))},ft=i(5675);const wt=(e,t)=>e.includes(t)?e.filter((e=>e!==t)):e.concat(t),bt=e=>{const[t,i]=(0,a.useState)(!1),[s,n]=(0,a.useState)([]),[r,l]=(0,a.useState)([]),[o,c]=(0,a.useState)("artist"),m=(0,a.useMemo)((()=>(e=>{let t={},i={};return e.forEach(((e,a)=>{for(let i=0;i<e.categories.length;i++){let a=e.categories[i];void 0===t[a]&&(t[a]=0),t[a]++}const s=Object.entries(t).sort(((e,t)=>t[1]-e[1]));t=Object.fromEntries(s);const n=["Editor's Choice","Editor's Award"];for(let t=0;t<e.tags.length;t++){let a=e.tags[t];n.includes(a)||(void 0===i[a]&&(i[a]=0),i[a]++)}const r=Object.entries(i).sort(((e,t)=>t[1]-e[1]));i=Object.fromEntries(r)})),{categories:t,tags:i}})(e)),[e]),h=(0,a.useMemo)((()=>{const t=((e,t,i)=>e.filter((e=>{const a=0===t.length||e.categories.some((e=>t.includes(e)));return e.tags.reduce(((e,t)=>i.includes(t)?e+1:e),0)===i.length&&a})))(e,r,s);return((e,t)=>{const i=[...e];return"artist"===t?(Y(),i.sort(((e,t)=>e.artist>t.artist?1:e.artist<t.artist?-1:0))):"date-newest"===t?i.sort(((e,t)=>Date.parse(t.date)-Date.parse(e.date))):"date-oldest"===t&&i.sort(((e,t)=>Date.parse(e.date)-Date.parse(t.date))),i})(t,o)}),[e,r,s,o]);return{activeFilterCount:r.length+s.length,clearAllHandler:()=>{l([]),n([])},currentDolls:h,metadata:m,onSelectHandler:(e,t)=>{const i=e.target.id;t===S.CATEGORY?l((e=>wt(e,i))):n((e=>wt(e,i)))},onSortHandler:e=>{e.currentTarget?.value&&Y(e.currentTarget.value),c(e.currentTarget.value)},selectedCategories:r,selectedTags:s,showFilterHandler:()=>{i((e=>!e))},showFilterMenu:t,sortType:o}},yt=(e,t)=>
1{const i="000000000"+e;return i.substring(i.length-t)},kt=e=>{const t=e[0];return(e[1]<<8)+t};var vt=class{transparentIndex=0;paletteData={};numColors=0;bitsPerColor=0;numPalettes=1;filemark="";id="";bytesPerColor=-1;legacyFormat=!1;constructor(e){this.parseKcf(e)}parseKcf(e){const t=Array.from(e);this.transparentIndex=0;let i=t.slice(0,4);if(this.id=i.map((e=>String.fromCharCode(parseInt(e)))).join(""),"KiSS"!==this.id)Y(),this.legacyFormat=!0,this.numColors=16,this.bitsPerColor=12,this.bytesPerColor=2,this.paletteData=this.parse12BitPalette(t),this.numPalettes=Object.keys(this.paletteData).length;else{Y(),this.filemark=t.slice(4,5)[0],Y(this.filemark),this.bitsPerColor=parseInt(t.slice(5,6)[0]),this.bytesPerColor=12===this.bitsPerColor?2:4;const e=t.slice(8,10).map((e=>parseInt(e)));this.numColors=kt(e);const i=t.slice(10,12).map((e=>parseInt(e)));this.numPalettes=kt(i);const a=t.slice(32,t.length);this.paletteData=12===this.bitsPerColor?this.parse12BitPalette(a):this.parse24BitPalette(a)}this.checkForDuplicates(),Y(this.bitsPerColor),Y(this.numColors),Y(this.numPalettes)}checkForDuplicates=()=>{if(this.numPalettes>1){const e=Object.values(this.paletteData),t=e.filter(((t,i)=>{const a=JSON.stringify(t);return i===e.findIndex((e=>JSON.stringify(e)===a))}));t.length!==this.numPalettes?(this.numPalettes=t.length,this.paletteData={},t.forEach(((e,t)=>{this.paletteData[t]=e})),Y((e.length,t.length))):Y()}else Y()};parse24BitPalette(e){const t={};for(let i=0;i<this.numPalettes;i+=1){const a=[],s=e.slice(i*this.numColors*3,i*this.numColors*3+3*this.numColors);for(let e=0;e<s.length;e+=3){const t=s.slice(e,e+3);a.push({r:t[0],g:t[1],b:t[2]})}t[i]=a}return t}
1parse12BitPalette(e){const t={},i=this.numColors*this.bytesPerColor;for(let a=0;a<e.length;a+=i){const s=e.slice(a,a+i),n=[];for(let e=0;e<i;e+=2){const t=s.slice(e,e+2),i=yt(t[0].toString(2),8),a=yt(t[1].toString(2),8),r={r:parseInt(i.slice(0,4),2)<<4,b:parseInt(i.slice(4,8),2)<<4,g:parseInt(a.slice(4,8),2)<<4};n.push(r)}t[a/i]=n}return t}};var xt=class{celFiles={};dragging=!1;fix=0;comment="";constructor(e,t,i,a,s){this.number=e,this.originalPosition=i,this.currentPosition=i,this.fix=a,this.comment=s,this.mapped=!0;const n={};t.forEach((e=>{n[e]=!0})),this.celFiles=n}getPosition=()=>this.currentPosition;setPosition=e=>{this.currentPosition=e}};var Et=class{events=new Map;constructor(){this.timeouts=[]}onInitialize(e){this.events.forEach(((t,i)=>{if(i instanceof he)return e(t)}))}onBegin(e){this.events.forEach(((t,i)=>{if(i instanceof de)return e(t)}))}onEnd(e){this.events.forEach(((t,i)=>{if(i instanceof ue)return e(t)}))}onPress(e,t){this.events.forEach(((i,a)=>{a instanceof ge&&(Y(e.number),this.handleTargetEvent(a,i,e,t))}))}onCatch(e,t){this.events.forEach(((i,a)=>{a instanceof fe&&(Y(),this.handleTargetEvent(a,i,e,t))}))}onFixCatch(e,t){this.events.forEach(((i,a)=>{a instanceof we&&(Y(),this.handleTargetEvent(a,i,e,t))}))}onRelease(e,t){this.events.forEach(((i,a)=>{a instanceof be&&(Y(),this.handleTargetEvent(a,i,e,t))}))}onDrop(e,t){this.events.forEach(((i,a)=>{a instanceof ye&&(Y(),this.handleTargetEvent(a,i,e,t))}))}onFixDrop(e,t){this.events.forEach(((i,a)=>{a instanceof ke&&(Y(),this.handleTargetEvent(a,i,e,t))}))}onUnfix(e,t){this.events.forEach(((i,a)=>{a instanceof ve&&(Y(),this.handleTargetEvent(a,i,e,t))}))}onSet(e,t){Y(),this.events.forEach(((i,a)=>
1{if(a instanceof xe&&(Y(a.setNumber,a.setNumber),Y()),a instanceof xe&&a.setNumber===e)return Y(),Y(),t(i)}))}onCol(e,t){this.events.forEach(((i,a)=>{if(a instanceof Ee&&a.paletteNumber===e)return Y(),t(i)}))}onAlarm(e,t){this.events.forEach(((i,a)=>{a instanceof pe&&a.id==e&&this.runActions(i,t)}))}onIn(e,t,i){this.events.forEach(((a,s)=>{if(s instanceof Se){(s.target1===e.selectedCel||s.target1===`#${e.number}`)&&(s.target2===t.selectedCel||s.target2===`#${t.number}`)&&this.runActions(a,i)}}))}runActions(e,t){let i=[];e.forEach((e=>{if(e instanceof Fe){const i=setTimeout((()=>this.onAlarm(e.alarm,t)),e.delay);this.timeouts.push(i)}else i.push(e)})),t(i)}runTimerAction(e,t){let i=e.delay;return e instanceof Ne&&(i=Math.floor(e.variance*Math.random())+e.delay),setTimeout((()=>this.onAlarm(e.alarm,t)),i)}handleTargetEvent(e,t,i,a){if(e.target===i.selectedCel||e.target===`#${i.number}`)return a(t)}};const zt={";@":"FKISS_COMMAND",";":"COMMENT","(":"PLAYFIELD_SIZE","%":"PALETTE_FILE","[":"BORDER_COLOR","#":"CEL",$:"SET"," ":"SET_NEXT_LINE"},St=Object.keys(zt);var Ct=class{playfield={comment:"",width:448,height:320};palettes=[];borderColor={comment:"",index:0};layers=[];setData=[];objectNumbers=[];sets={};errors=[];constructor(e){this.script=new Et,this.parseCnf(e),this.setConfigDefaults();const t=this.layers.map((e=>e.objectNumber));this.objectNumbers=Array.from(new Set(t)),this.sets=this.mergeObjectsInSets()}isFKiss(e){return";@"===e.substring(0,2)}parseCnf(e){let t=e.replace(/\r/g,"\n").replace(/\n\n/g,"\n");t=t.replace(/\n\s+(-?\d|\*)/g,"!@!$1").split("!@!").join(" ");const i=t.split("\n");let a,s=!1;for(let r=0;r<i.length;r++){const e=i[r];let t=e.trimEnd();if(t.includes(";@EventHandler")&&(s=!0),s&&this.isFKiss(t)){this.parseFKissLine(t).forEach(((e,t)=>{if(e.isEvent){let t=oe.createFKEvent(e);t&&(this.script.events.set(t,[]),a=t)}else if(e.isAction&&a){const t=this.script.events.get(a),i=oe.createFKAction(e);i&&t?.push(i)}})),Y(this.script.events)}else{t=e.split(";")[0].trimEnd();const i=e.split(";")[1],a=t[0],s=St.includes(a)?zt[a]:null;if("PLAYFIELD_SIZE"===s){const e=t.replace("(","").replace(")","").split(",");this.playfield={comment:i,width:Number.parseInt(e[0]),height:Number.parseInt(e[1])}}else if("PALETTE_FILE"===s){const e=t.toLowerCase().replace("%","").split(".kcf")[0].trim()+".kcf";this.palettes.push({filename:e.toLowerCase(),comment:i})}else if("BORDER_COLOR"===s){const e=t.replace("[","");this.borderColor={index:0===e.length?0:parseInt(e),comment:i}}else if("CEL"===s)try{const e=this.parseCelLine(t);e.comment=i,this.layers.push(e)}catch(n){const e=`Skipping line; Error parsing line: ${t}`;console.warn(e),this.errors.push(e)}else if("SET"===s){const e=t.substring(0,2).replace("$",""),i={positionData:this.splitSet(t),paletteNumber:parseInt(e)};this.setData.push(i)}else Y()}}}parseFKissLine(e){const t=[],i=e.toLowerCase().replace(";@"," ").split(";"),a=i[0].split(", ").join(",").split(/[\s\t]/g).filter((e=>e.length>0));i[1];return a.length>0?a.forEach(((e,i)=>{const a=e.replace(")"," ").replace(/[\'\"]/g,"").split("("),s=a[0];const n={method:s,args:a[1]?a[1].trim():void 0,isEvent:We.includes(s),isAction:$e.includes(s)};t.push(n)})):Y(),t}parseCelLine(e){let t="",i=-1;e.indexOf(";")&&(i=e.indexOf(";"),t=e.substring(i,e.length)),i>=0&&(e=e.substring(0,i));
1const a=(e=(e=(e=e.trim()).replace(/:/g," : ")).replace(/\t/g," ")).split(" ").filter((e=>e.length>0)),s=a[0].split("."),n=s[0].replace("#","");let r=0;s.length>1&&(r=parseInt(s[1]));const l=a[1].toLowerCase();let o=0;a[2]&&0===a[2].indexOf("*")&&(o=parseInt(a[2].replace("*","")));const c=a.indexOf(":");let m=[];c>-1&&(m=a.splice(c+1,a.length).filter((e=>/\d/.test(e))).map((e=>Number.parseInt(e))));return{objectNumber:Number.parseInt(n),fixValue:r,filename:l,paletteNumber:o,sets:m,comment:t}}splitSet(e){return e.replace(/\$\d{1}/,"").split(/\s/).filter((e=>e.length>0))}setConfigDefaults(){void 0===this.borderColor&&(this.borderColor={index:0,comment:"No border color defined in CNF file; using index 0"}),void 0===this.playfield&&(this.playfield={width:448,height:320,comment:'No playfield size defined in CNF file; using "(448,320" as per CNF specification'})}getObjectPositionInSet(e,t){let i,a=this.setData[t].positionData[e];if("*"===a)return new re(0,0);if(void 0===a)return new re(0,0);i=a.split(",");const s=Number.parseInt(i[0]),n=Number.parseInt(i[1]);return new re(s,n)}mergeObjectsInSets(){const e={};for(let t=0;t<this.layers.length;t++){const i=this.layers[t];0===i.sets.length&&(i.sets=this.setData.map(((e,t)=>t)));for(let a=0;a<this.setData.length;a++)if(i.sets.indexOf(a)>-1){if(Y(i.filename),e[a]||(Y(),e[a]={id:a,paletteNumber:this.setData[a].paletteNumber,objects:{}}),!e[a].objects[i.objectNumber]){Y(i.objectNumber);const t=this.getObjectPositionInSet(i.objectNumber,a),s=new xt(i.objectNumber,[],t,i.fixValue,i.comment??null);e[a].objects[i.objectNumber]=s}Y((i.filename,i.objectNumber)),i.layer=t,e[a].objects[i.objectNumber].celFiles[i.filename]=!0}else Y(i.filename)}return e}};var _t=class{filename="";legacyFormat=!1;width=0;height=0;paletteBased=!1;bitsPerPixel=0;xOffset=0;yOffset=0;imageData={};imageElements={};constructor(e,t){this.filename=e.name.toLowerCase(),this.mapped=!0,this.parseCelData(e.content,t)}parseCelData=(e,t)=>{const i=Array.from(e),a=i.slice(0,4).map((e=>String.fromCharCode(e))).join("");Y(this.filename);let s=[];if("KiSS"!==a){Y(),this.legacyFormat=!0;const e=i.slice(0,2);this.width=kt(e);const t=i.slice(2,4);this.height=kt(t),this.paletteBased=!0;const a=i.slice(4,i.length-1);s=this.parse4BitPixelData(a),this.bitsPerPixel=4,this.xOffset=0,this.yOffset=0}else if("KiSS"===a){Y(),this.paletteBased=32===i[4],this.bitsPerPixel=i[5];const e=i.slice(8,10);this.width=kt(e);const t=i.slice(10,12);this.height=kt(t);const a=i.slice(12,14);this.xOffset=kt(a);const n=i.slice(14,16);this.yOffset=kt(n);const r=i.slice(32);s=4===this.bitsPerPixel?this.parse4BitPixelData(r):r}const n=4===this.bitsPerPixel?2:0;this.width*this.height-n>s.length?console.error(`Invalid cel data; dimensions exceed total pixel data. Check ${this.filename}.`):this.generateImageData(s,t)};parse4BitPixelData=e=>{const t=[];for(let i=0;i<e.length;i++){const a=e[i],s=yt(a.toString(2),8),n=parseInt(s.slice(0,4),2),r=parseInt(s.slice(4,8),2);t.push(n,r)}return t};generateImageData=(e,t)=>{const i=4===this.bitsPerPixel&&this.width%2===1?this.width+1:this.width;if(32===this.bitsPerPixel){const t=new Uint8ClampedArray(i*this.height*4);Y((this.filename,this.bitsPerPixel));for(let i=0;i<t.length;i+=4){const a=e.slice(i,i+4);t[i]=a[2],t[i+1]=a[1],t[i+2]=a[0],t[i+3]=a[3]}0===t.length&&console.error("Array for ImageData is empty"),this.imageData[0]=new ImageData(t,i,this.height)}else if(t)for(let a=0;a<Object.keys(t.paletteData).length;a++){const s=new Uint8ClampedArray(i*this.height*4);Y(this.filename);let n=t.paletteData[a];const r=e;let l=0;for(let e=0;e<s.length;e+=4){const i=r[l];if(void 0!==i){const a=n[i];s[e]=a.r,s[e+1]=a.g,s[e+2]=a.b,s[e+3]=i===t.transparentIndex?0:255,l++}}this.imageData[a]=new ImageData(s,i,this.height)}};getColorAtPosition=(e,t)=>{const i=this.imageData[t],a=e.y*i.width*4+4*e.x;return{r:i.data[a],g:i.data[a+1],b:i.data[a+2],a:i.data[a+3]}}},jt=i(7621),Mt=i.n(jt);const Ft=e=>Uint8Array.from(e),Nt=e=>{const t=Ft(e);if(0===t.length)return"";const i=Kt(t,"utf-8",!0);return void 0!==i?i:Kt(t,"shift_jis")??It(e)},It=e=>{const t=Ft(e);let i="";for(let a=0;a<t.length;a+=32768)i+=String.fromCharCode(...Array.from(t.slice(a,a+32768)));return i},Kt=(e,t,i=!1)=>{try{return new TextDecoder(t,{fatal:i}).decode(e)}catch(a){return}};const Ot=(e,t)=>{const i=t.toLowerCase().replace(".","");return e.files.filter((e=>At(e.name)===i))},At=e=>e.toLowerCase().split(".").slice(-1)[0];var Pt=class{readme="";palettes={};currentSet=0;currentPalette=0;constructor(e,t,i){this.filename=t,this.cnfFile=i;const a=Ot(e,"kcf"),s=Ot(e,"cnf"),n=Ot(e,"cel"),r=e.files.filter((e=>["txt","doc"].includes(At(e.name))));r.length>0&&(this.readme=Nt(r[0].content));const l=s.find((e=>e.name===i));if(!l)throw new Error(`Could not find CNF file: ${i}`);const o=Nt(l.content),c=e.files.filter((e=>e.name.toLowerCase().includes(".wav")));this.soundBank={},c.length>
10&&c.forEach((e=>{if(Y(),void 0==this.soundBank[e.name.toLowerCase()]){Ze.audioContext();const t=Uint8Array.from(e.content),i=new Audio,a=URL.createObjectURL(new Blob([t]));i.src=a,this.soundBank[e.name.toLowerCase()]=i}}));const m=Ot(e,"mid");if(m.length>0&&m.forEach((e=>{if(void 0==this.soundBank[e.name.toLowerCase()]){const t=It(e.content);this.soundBank[e.name.toLowerCase()]=t,qe.add(e.name.toLowerCase(),t)}})),this.config=new Ct(o),a.length>0){a.forEach(((e,t)=>{this.palettes[e.name.toLowerCase()]=new vt(e.content)}));const e=this.config.palettes[0].filename;this.palette=this.palettes[e]}else Y(),this.palette=null;const h=n.map((e=>{if(!this.palette)return new _t(e,null);{const t=this.config.layers.find((t=>t.filename===e.name.toLowerCase()))?.paletteNumber;if(void 0!==t){const i=this.config.palettes[t],a=this.palettes[i.filename];return new _t(e,a)}}}));let d={};h.filter((e=>void 0!==e)).forEach((e=>{d[e.filename]=e})),this.celData=d,this.celLayers=this.config.layers,this.backgroundColor=this.palette?Mt().fromRatio(this.palette.paletteData[0][0]):Mt()("black"),this.borderColor=this.palette?Mt().fromRatio(this.palette.paletteData[0][this.config.borderColor.index]):Mt()("black")}getObjectPosition(e,t){return this.config.getObjectPositionInSet(e,t)}getSetNumbers(){return Object.keys(this.config.sets).map((e=>Number.parseInt(e,10))).sort(((e,t)=>e-t))}getDefaultSetNumber(){return this.getSetNumbers()[0]??0}hasSet(e){return void 0!==this.config.sets[e]}normalizeSetNumber(e){return this.hasSet(e)?e:this.getDefaultSetNumber()}getObject(e,t){return this.config.sets[t]?.objects[e]}};const Dt=i(6653);class Tt{constructor(e,t,i){this.filename=t,this.content=e,this.backend=i,this.cnfs=this.getFilesByExtension("cnf")}static async open(e,t){try{const i=await Lt(e,t);return new Tt(i,t,"libarchive.js")}catch(i){return console.warn(`libarchive.js could not open ${t}; falling back to jslha.`,i),new Tt(Ht(e),t,"jslha")}}getCnfFileNames(){return this.cnfs.map((e=>e.name))}getFilesByExtension(e){const t=e.toLowerCase().replace(".","");return this.content.files.filter((e=>e.name.toLowerCase().split(".").slice(-1)[0]===t))}}const Ht=e=>({files:new Dt(e).files.filter((e=>!Rt(e.name))).map((e=>({name:Bt(e.name),content:e.content})))}),Lt=async(e,t)=>{const{Archive:a}="undefined"===typeof Worker?await import("libarchive.js/dist/libarchive-node.mjs"):await i.e(449).then(i.bind(i,8449));"undefined"!==typeof Worker&&a.init({workerUrl:"/libarchive/worker-bundle.js"});const s=await a.open(new File([e],t));try{await s.setLocale("C"),await s.extractFiles();const e=await s.getFilesArray();return{files:await Promise.all(e.filter((e=>e.file instanceof File)).map((async e=>{const t=await e.file.arrayBuffer();return{name:Bt(`${e.path||""}${e.file.name}`),content:new Uint8Array(t)}})))}}finally{await s.close()}},Bt=e=>e.replace(/\\/g,"/"),Rt=e=>Bt(e).endsWith("/");var Wt=Tt;var Gt=async(e,t)=>{const i=await Wt.open(e,t),a=i.getCnfFileNames();if(0===a.length)throw new Error(`No CNF file found in ${t}`);return{cnfNames:a,content:i.content,selectedCnf:1===a.length?a[0]:void 0}};const $t=()=>{const{activeFilterCount:e,clearAllHandler:t,currentDolls:i,metadata:s,onSelectHandler:n,onSortHandler:r,selectedCategories:l,selectedTags:o,showFilterHandler:c,showFilterMenu:m,sortType:h}=bt(z),[d]=(0,a.useState)(null===localStorage.getItem("welcomeModalDismissed")),{isMobile:u}=P(),[g,f]=(0,a.useState)(!1),[b,y]=(0,a.useState)(),{closeKissSet:k,error:v,fetchDoll:x,file:S,kissSet:C,loading:_,multipleCnfs:j,onFileDrop:F,onSelectCnf:N,cnf:I}=(({closeViewer:e,openViewer:t})=>{const[i,s]=(0,a.useState)(!1),[n,r]=(0,a.useState)(null),[l,o]=(0,a.useState)(""),[c,m]=(0,a.useState)(""),[h,d]=(0,a.useState)([]),[u,p]=(0,a.useState)(),[g,f]=(0,a.useState)([]),[w,b]=(0,a.useState)(),y=(0,a.useCallback)((async(e,t)=>{const i=await Gt(e,t);b(i.content),i.cnfNames.length>
11?d(i.cnfNames):i.selectedCnf&&(d([]),m(i.selectedCnf))}),[]),k=(0,a.useCallback)((async(i,a)=>{i.preventDefault(),s(!0),r(null),o(a),t();const n=(e=>e.split("/").slice(-1)[0])(a),l=((e,t)=>e.find((e=>e.filename.includes(t))))(g,n);if(l)return Y(),p(l),s(!1),void t();Date.now();try{const e=await fetch(a),t=await e.arrayBuffer();await y(t,n),Date.now(),Y()}catch(c){console.error(`Error loading ${a}`,c),r(c),s(!1),o(""),e()}}),[e,y,t,g]),v=(0,a.useCallback)((async i=>{i.preventDefault();const a=(e=>{if(!e.items)return e.files[0];for(let t=0;t<e.items.length;t++){const i=e.items[t];if("file"===i.kind)return i.getAsFile()??void 0}})(i.dataTransfer);if(!a)return;Date.now();s(!0),r(null),o(a.name),t();try{const e=await a.arrayBuffer();await y(e,a.name),Date.now(),Y(a.name)}catch(n){console.error(`Error loading ${a.name}`,n),s(!1),r(n),o(""),e()}}),[e,y,t]);return(0,a.useEffect)((()=>{if(c.length&&void 0!==w){try{const e=new Pt(w,l,c);p(e),f((t=>[...t,e]))}catch(e){console.error(`Error loading ${l} with .cnf ${c}`,e),r(e)}s(!1)}}),[w,c,l]),{closeKissSet:()=>{if(u){u.config.script.onEnd((e=>{Y()})),Y();const e=u?.config.script.timeouts;for(let t=0;t<e.length;t++)clearTimeout(e[t])}p(void 0),qe.pauseAll(),void 0!==u?.soundBank&&qe.remove(Object.keys(u?.soundBank)),m(""),d([]),s(!1),e()},error:n,fetchDoll:k,file:l,kissSet:u,loading:i,multipleCnfs:h,onFileDrop:v,onSelectCnf:e=>{m(e)},cnf:c}})({closeViewer:()=>{f(!1),document.body.style.overflow="auto"},openViewer:()=>{y(window.scrollY),f(!0)}}),K=(0,a.useRef)(null);return(0,a.useEffect)((()=>{u&&(g?(document.body.style.overflow="hidden",document.body.style.position="fixed",document.body.style.top=`-${b}px`):(document.body.style.overflow="auto",document.body.style.position="initial",document.body.style.top="undefined",setTimeout((()=>{b&&window.scrollTo(0,b)}),20)))}),[g,b]),a.createElement("div",{className:"App"},d&&a.createElement(A,null),a.createElement(w,{onFileDrop:F}),a.createElement(gt,{handleShowFilter:c,activeFilterCount:e}),m&&a.createElement(M,{metadata:s,selectedCategories:l,selectedTags:o,selectedSort:h,dollCount:i.length,onSelectHandler:n,showFilterHandler:c,onSortHandler:r,clearAllHandler:t}),v&&a.createElement(E,{error:v}),g&&a.createElement(rt,{cnf:I,file:S,isMobile:u,kissSet:C,loading:_,multipleCnfs:j,onClose:k,onSelectCnf:N,viewerRef:K}),a.createElement(p,{clickHandler:x,currentDolls:i}),a.createElement(ft.Z,null))};var Jt=i(9141);var Ut=function(){return a.createElement(a.Fragment,null,a.createElement(Jt.Z,null),a.createElement(p,{currentDolls:z}))};var Yt=function(){const[e,t]=(0,a.useState)(!1);return(0,a.useEffect)((()=>{t(!0)}),[]),e?a.createElement($t,null):a.createElement(Ut,null)}},2277:function(e,t,i){"use strict";i.d(t,{W:function(){return r}});var a=i(7294),s=i(1631),n=i.n(s);const r=({children:e,className:t})=>a.createElement("div",{className:`${n().Container} ${t}`},e)},5675:function(e,t,i){"use strict";var a=i(7294),s=i(9870),n=i.n(s),r=i(1664),l=i.n(r);t.Z=()=>a.createElement("footer",{className:n().Footer},a.createElement("div",{className:n().container},a.createElement("p",null,a.createElement("em",null,"kisekae.org")," is a browser-based KiSS viewer and intended for fun and nostalgia purposes only."),a.createElement("nav",null,a.createElement("ul",null,a.createElement("li",null,a.createElement(l(),{href:"/"},a.createElement("a",null," Home"))),a.createElement("li",null,a.createElement(l(),{href:"/updates"},a.createElement("a",null,"Updates"))),a.createElement("li",null,a.createElement(l(),{href:"/help"},a.createElement("a",null,"Help"))),a.createElement("li",null,a.createElement(l(),{href:"/info"},a.createElement("a",null,"Info"))),a.createElement("li",null,a.createElement(l(),{href:"mailto:[email protected]"},a.createElement("a",null,"Contact")))))))},9141:function(e,t,i){"use strict";var a=i(7294),s=i(2007),n=i.n(s),r=i(1664),l=i.n(r),o=i(1163);t.Z=({handleShowFilter:e,activeFilterCount:t})=>{const i=(0,o.useRouter)();return a.createElement("header",{className:n().Header},a.createElement("div",{className:n().container},a.createElement("h1",null,a.createElement(l(),{href:"/"},a.createElement("a",null,"kisekae.org"))),a.createElement("div",{className:n().tagline},"Kisekae set system (KiSS) viewer and gallery"),a.createElement("nav",null,a.createElement("ul",null,"/"===i.asPath&&a.createElement("li",{title:"Filter",onClick:e},void 0!==t&&t>0&&a.createElement("span",{className:n().ActiveFilterCount},t),a.createElement("i",{className:n().FilterIcon})," Filter"),"/"!==i.asPath&&a.createElement("li",null,a.createElement(l(),{href:"/"},a.createElement("a",null,a.createElement("i",{className:n().HomeIcon})," Home"))),a.createElement("li",null,a.createElement(l(),{href:"/updates"},a.createElement("a",null,a.createElement("i",{className:n().UpdateIcon})," ","Updates"))),a.createElement("li",null,a.createElement(l(),{href:"/help"},a.createElement("a",null,a.createElement("i",{className:n().HelpIcon})," Help"))),a.createElement("li",null,a.createElement(l(),{href:"/info"},a.createElement("a",null,a.createElement("i",{className:n().InfoIcon})," Info")))))))}},8689:function(e,t,i){"use strict";var a=i(5893);function s(e){const t=Object.assign({h4:"h4",p:"p",ul:"ul",li:"li",code:"code",strong:"strong",a:"a",img:"img"},e.components);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.h4,{children:"How do I use this site?"}),"\n",(0,a.jsx)(t.p,{children:"There are two ways to view KiSS dolls on this website:"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsx)(t.li,{children:"Click on one of the images below to load a set."}),"\n",(0,a.jsxs)(t.li,{children:["Drag and drop a ",(0,a.jsx)(t.code,{children:".lzh"})," file from your computer into the browser."]}
1),"\n"]}),"\n",(0,a.jsxs)(t.p,{children:[(0,a.jsx)(t.strong,{children:"Warning"})," Not all KiSS sets are supported or compatible with this viewer."]}),"\n",(0,a.jsx)(t.h4,{children:"Where can I find more KiSS sets/data?"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.a,{href:"http://otakuworld.com/kiss/",children:"OtakuWorld's Big KiSS Page"}),"."]}),"\n",(0,a.jsx)(t.li,{children:(0,a.jsx)(t.a,{href:"http://kisscafe.ephralon.de/",children:"KiSS Caf\xe9"})}),"\n",(0,a.jsx)(t.li,{children:(0,a.jsx)(t.a,{href:"https://archive.org/search.php?query=subject%3A%22kiss+data%22",children:"Internet Archive: KiSS data"})}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.a,{href:"http://kiss-wkp.com/",children:"World Kiss Project"})," - Japanese"]}),"\n"]}),"\n",(0,a.jsx)(t.p,{children:"Some artists are still active using other mediums, but may not have updated websites."}),"\n",(0,a.jsx)(t.h4,{children:"Chrome MIDI device prompt"}),"\n",(0,a.jsxs)(t.p,{children:[(0,a.jsx)(t.a,{href:"https://developer.chrome.com/blog/web-midi-permission-prompt",children:"Chrome now requires explicit permission"})," from users to access MIDI devices, which were more or less free to access in the past."]}),"\n",(0,a.jsxs)(t.p,{children:["KiSS data uses MIDI files for music (",(0,a.jsx)(t.a,{href:"https://otakuworld.com/kiss/kisshelp/DIRECTKISSMusic.htm",children:"1"}),"), but modern browsers do not support MIDI files out of the box. I use the ",(0,a.jsx)(t.a,{href:"https://github.com/jazz-soft/JZZ",children:"JZZ library"})," to play MIDIs, which starts up on page load currently."]}),"\n",(0,a.jsx)(t.p,{children:"So if you see this warning:"}),"\n",(0,a.jsx)(t.p,{children:(0,a.jsx)(t.img,{src:"/images/chrome_midi_dialog.png",alt:"Chrome MIDI API permission prompt"})}),"\n",(0,a.jsx)(t.p,{children:"I promise I'm not trying to control your computer through the ancient powers of MIDI synthesizers!"}),"\n",(0,a.jsx)(t.h4,{children:"Content issues or bugs"}),"\n",(0,a.jsxs)(t.p,{children:["If you have any questions about the content of this website, ",(0,a.jsx)(t.a,{href:"mailto:[email protected]",children:"contact support"}),"!"]})]})}t.Z=function(e={}){const{wrapper:t}=e.components||{};return t?(0,a.jsx)(t,Object.assign({},e,{children:(0,a.jsx)(s,e)})):s(e)}},4671:function(e,t,i){"use strict";var a=i(5893);function s(e){const t=Object.assign({h4:"h4",p:"p",strong:"strong",code:"code",ul:"ul",li:"li",a:"a"},e.components);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.h4,{children:"What is kisekae and KiSS?"}),"\n",(0,a.jsx)(t.p,{children:"Kisekae.org is a browser-based KiSS set viewer and collection of KiSS dolls."}),"\n",(0,a.jsxs)(t.p,{children:["Kisekae refers to the Japanese term \u2018kisekae ningyou\u2019 for \u201cdress-up dolls.\u201d KiSS refers to the ",(0,a.jsx)(t.strong,{children:"Ki"}),"sekae ",(0,a.jsx)(t.strong,{children:"S"}),"et ",(0,a.jsx)(t.strong,{children:"S"}),"ystem (abbreviated as KiSS), which was a somewhat popular way of creating and\ndistributing virtual paper dolls in the 1990s and early 2000s."]}),"\n",(0,a.jsxs)(t.p,{children:["A KiSS set is a virtual paper doll distributed in an ",(0,a.jsx)(t.code,{children:".lzh"})," archive file. Many KiSS sets are anime-inspired, particularly for\npopular series like Sailor Moon, Card Captor Sakura, and more. There are also a huge number of original characters."]}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsx)(t.li,{children:(0,a.jsx)(t.a,{href:"https://en.wikipedia.org/wiki/Kisekae_Set_System",children:"Wikipedia: Kisekae Set System"})}),"\n",(0,a.jsx)(t.li,{children:(0,a.jsx)(t.a,{href:"http://kisscafe.ephralon.de/",children:"KissCafe"})}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.a,{href:"http://otakuworld.com/kiss/help.htm",children:"OtakuWorld Help"}),"\n",(0,a.jsx)("br",{}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(t.h4,{children:"What features of the KiSS specification does this viewer support?"}),"\n",(0,a.jsxs)(t.p,{children:["The kisekae.org viewer supports the ",(0,a.jsx)(t.a,{href:"http://otakuworld.com/kiss/kisshelp/DIRECTKISSKISS_General_Specification.htm",children:"KISS General Specification"})," and portions of the ",(0,a.jsx)(t.a,{href:"http://otakuworld.com/kiss/kisshelp/DIRECTKISSFKiSS_Reference_Guide.htm",children:"FKiSS levels 1 and 2 specification"}),". Most of level 1 is suppored, with limited implementation of level 2. ",(0,a.jsx)(t.code,{children:".wav"})," and ",(0,a.jsx)(t.code,{children:".midi"})," files, most commonly used in KiSS data, are supported."]}),"\n",(0,a.jsx)("br",{})]})}t.Z=function(e={}){const{wrapper:t}=e.components||{};return t?(0,a.jsx)(t,Object.assign({},e,{children:(0,a.jsx)(s,e)})):s(e)}},6025:function(e,t,i){"use strict";var a=i(5893);function s(e){const t=Object.assign({h4:"h4",p:"p",ul:"ul",li:"li",a:"a",code:"code",em:"em",strong:"strong"},e.components);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.h4,{children:"July 3, 2026"}),"\n",(0,a.jsx)(t.p,{children:"It's been a minute! The latest updates are pretty much focused on the code base:"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:["I switched to using ",(0,a.jsx)(t.a,{href:"https://www.libarchive.org/",children:"libarchive"})," via WebAseembly for better handling of ",(0,a.jsx)(t.code,{children:".lzh"})," files. So far, I'm happy with the changes, but please let me know if you hit any issues!"]}),"\n",(0,a.jsx)(t.li,{children:"A lot of code refactoring to remove redundant paths, clean up, and organize the site"}),"\n"]}),"\n",(0,a.jsx)(t.h4,{children:"September 3, 2024"}),"\n",(0,a.jsxs)(t.p,{children:["Brat summer is over! But there are a couple of newish KiSS sets from ",(0,a.jsx)(t.a,{href:"https://sites.google.com/view/hugsnkisses/home",children:"sion"})," added:"]}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:["WeeKiSS ",(0,a.jsx)(t.code,{children:"wuvluv.lzh"})]}),"\n",(0,a.jsxs)(t.li,{children:["ashley ",(0,a.jsx)(t.code,{children:"sion_ash.lzh"})]}),"\n",(0,a.jsxs)(t.li,{children:["Pride month doll ",(0,a.jsx)(t.code,{children:"s_lgbt.lzh"})]}),"\n"]}),"\n",(0,a.jsx)(t.h4,{children:"May 8, 2024"}),"\n",(0,a.jsxs)(t.p,{children:["I am still on this mortal coil! However, I do not have a big update. There are one or tw
1o small corrections to some of the metadata, thanks to ",(0,a.jsx)(t.a,{href:"https://sites.google.com/view/hugsnkisses/home",children:"sion"}),", and you can cycle through sets via your number keys."]}),"\n",(0,a.jsx)(t.p,{children:"Currently working on:"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsx)(t.li,{children:"Swapping out lzh libraries for better support opening files"}),"\n",(0,a.jsxs)(t.li,{children:["Adding some new dolls (including some modern sets by ",(0,a.jsx)(t.em,{children:"sion"}),")"]}),"\n"]}),"\n",(0,a.jsx)(t.p,{children:"Want to do:"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsx)(t.li,{children:"Better handling of KiSS data with larger play fields/canvas sizes"}),"\n",(0,a.jsx)(t.li,{children:"Expanding FKiSS support"}),"\n"]}),"\n",(0,a.jsx)(t.h4,{children:"April 4, 2023"}),"\n",(0,a.jsx)(t.p,{children:"Good news everyone! I've added support for .wav files! You can now listen to the audio files that come with KiSS dolls.\nThe sound quality is not great, so I suggest lowering your volume and your expectations."}),"\n",(0,a.jsx)(t.p,{children:"Here are the dolls with sound:"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:["Misty by Kawaii fish ",(0,a.jsx)(t.code,{children:"mistykf2.lzh"})]}),"\n",(0,a.jsxs)(t.li,{children:["Turanga Leela by Medox ",(0,a.jsx)(t.code,{children:"tyd_me.lzh"})]}),"\n"]}),"\n",(0,a.jsx)(t.p,{children:"Here are the dolls with MIDI music:"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:["Trent Lane by Ashlleeh ",(0,a.jsx)(t.code,{children:"ash_trt.lzh"})]}),"\n",(0,a.jsxs)(t.li,{children:["Mad Hatter by Aragonite ",(0,a.jsx)(t.code,{children:"hatter.lzh"})]}),"\n",(0,a.jsxs)(t.li,{children:["Sirena by Carolita ",(0,a.jsx)(t.code,{children:"sirena.lzh"})]}),"\n",(0,a.jsxs)(t.li,{children:["Coraline by Key ",(0,a.jsx)(t.code,{children:"coralin.lzh"})]}),"\n"]}),"\n",(0,a.jsx)(t.h4,{children:"March 8, 2023"}),"\n",(0,a.jsx)(t.p,{children:"This update includes some tweaks to make this website more usable on mobile (but still, it's designed for desktop!):"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsx)(t.li,{children:"Fixed pointer position where scroll offset was not properly accounted for"}),"\n",(0,a.jsx)(t.li,{children:"Fixed drag and drop for touch devices"}),"\n",(0,a.jsx)(t.li,{children:"Added two-finger horizontal pan so you can pan on the canvas"}),"\n"]}),"\n",(0,a.jsx)(t.h4,{children:"March 4, 2023"}),"\n",(0,a.jsx)(t.p,{children:"Added MIDI support. Check it out in Trent Lane by Ashlleeh or Mad Hatter by Aragonite!"}),"\n",(0,a.jsx)(t.p,{children:"Still no support for .wav files though. Sorry!"}),"\n",(0,a.jsx)(t.h4,{children:"July 20, 2022"}),"\n",(0,a.jsx)(t.p,{children:"Okay, so it's been a while... but the viewer now has limited FKiSS2 support! FKiSS2 opens up a plethora of sets with extra\nbits and bobs like snap-to clothing and objects."}),"\n",(0,a.jsxs)(t.p,{children:["Also, there are a bunch of new dolls, including many from one of my faves, ",(0,a.jsx)(t.a,{href:"http://murphypop.com/",children:"Medox"}),"!"]}),"\n",(0,a.jsxs)(t.p,{children:[(0,a.jsx)(t.strong,{children:"Drag and drop"})," This is a not-so discoverable feature that you should check out!\nIf you have a KiSS file (",(0,a.jsx)(t.code,{children:".lzh"}),") on your computer/device, you can try viewing it on this website via drag and drop!\nIt may not work due to the lha/lzh library used for this website.\nSend me an ",(0,a.jsx)(t.a,{href:"mailto:[email protected]",children:"email"})," and I'll try to get it sorted for you."]}),"\n",(0,a.jsx)("br",{}),"\n",(0,a.jsx)(t.h4,{children:"May 4, 2022"}),"\n",(0,a.jsxs)(t.p,{children:["Added some of my fave 'gothy goth' dolls by ",(0,a.jsx)(t.a,{href:"http://www.angelfire.com/sd/SatorisKiSS/",children:"Satori"}),". \ud83d\udda4"]}),"\n",(0,a.jsx)("br",{}),"\n",(0,a.jsxs)(t.h4,{children:["April 21, 2022 Quick update! Added a couple of my fave dolls by Aragonite! \ud83d\udc9c"," "]}),"\n",(0,a.jsx)(t.p,{children:"I also added basic sorting by date and artist name."}),"\n",(0,a.jsx)("br",{}),"\n",(0,a.jsx)(t.h4,{children:"April 17, 2022 * You can now view read me files for KiSS dolls that have them!"}),"\n",(0,a.jsx)(t.p,{children:"Formatting and encoding, however, may be wonky for Japanese encoded sets. Sorry!"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:["Updated links to artist sites (if they still exist) * Slightly less terrible mobile\nexperience -- this still remains a ",(0,a.jsx)(t.em,{children:"desktop"})," website!"]}),"\n"]}),"\n",(0,a.jsxs)(t.p,{children:["If you have any questions, send me an ",(0,a.jsx)(t.a,{href:"mailto:[email protected]",children:"email"}),"!"]}),"\n",(0,a.jsx)("br",{}),"\n",(0,a.jsxs)(t.h4,{children:["March 31, 2022 Basic ",(0,a.jsx)(t.a,{href:"http://otakuworld.com/kiss/kisshelp/DIRECTKISSFKiSS_Reference_Guide.htm",children:"FKiSS1"})]}),"\n",(0,a.jsx)(t.p,{children:"support added. Simpler FKiSS sets should work, but more complex or advanced (like\nFKiSS2 or beyond) probably won't work."}),"\n",(0,a.jsx)("br",{}),"\n",(0,a.jsx)(t.h4,{children:"March 4, 2022 Initial test launch! Yay! This site is still under construction"}),"\n",(0,a.jsx)(t.p,{children:"and may not work quite right."})]})}t.Z=function(e={}){const{wrapper:t}=e.components||{};return t?(0,a.jsx)(t,Object.assign({},e,{children:(0,a.jsx)(s,e)})):s(e)}},8312:function(e,t,i){(window.__NEXT_P=window.__NEXT_P||[]).push(["/",function(){return i(3136)}])},1631:function(e){e.exports={Container:"Container_Container__bOia7"}},9870:function(e){e.exports={Footer:"Footer_Footer__976Jo",container:"Footer_container__b2mKX"}},2007:function(e){e.exports={Header:"Header_Header__CXhYv",container:"Header_container__jgFK_",tagline:"Header_tagline___ZJIk",FilterIcon:"Header_FilterIcon__FXsDX",HomeIcon:"Header_HomeIcon__qU0aj",HelpIcon:"Header_HelpIcon__VmZHV",UpdateIcon:"Header_UpdateIcon__ty_7g",InfoIcon:"Header_InfoIcon__WDA0P",ActiveFilterCount:"Header_ActiveFilterCount__Hwvrf",NavWindow:"Header_NavWindow__xBZv_",NavWindowBody:"Header_NavWindowBody__GetJM"}},8711:function(e){e.exports={Canvas:"Canvas_Canvas__5DYND",ViewerStatusBar:"Canvas_Vie
1werStatusBar__6MAo_",Mobile:"Canvas_Mobile__MzVGz",ViewerToolbar:"Canvas_ViewerToolbar__wYHB_",SelectedObject:"Canvas_SelectedObject__p0dQY",ObjectComment:"Canvas_ObjectComment__lINds",PointerPosition:"Canvas_PointerPosition__bG0r3",ObjectFix:"Canvas_ObjectFix__SdJ30",TouchControlsButton:"Canvas_TouchControlsButton__AZHnK"}},1666:function(e){e.exports={ContentWindow:"ContentWindow_ContentWindow__unSfW",WindowBody:"ContentWindow_WindowBody__0P5_5",Content:"ContentWindow_Content__LSR6d",Mobile:"ContentWindow_Mobile__AIO8T"}},1961:function(e){e.exports={DollItem:"DollItem_DollItem__3IDVv",image:"DollItem_image__6WAwV",metadata:"DollItem_metadata__L_j2H",filtering:"DollItem_filtering__rJRt2",tag:"DollItem_tag__R8oOO",category:"DollItem_category__BBA_G",overlay:"DollItem_overlay__9b_T5"}},9046:function(e){e.exports={DollMenu:"DollMenu_DollMenu__oNMYN"}},6638:function(e){e.exports={Filters:"Filters_Filters__U4UDc",container:"Filters_container__bIbWE",Filter:"Filters_Filter__mgXWO",FilterWrap:"Filters_FilterWrap__uGVmY",Selected:"Filters_Selected__b_u7v",Row:"Filters_Row__k5iMU"}},7608:function(e){e.exports={ErrorMessage:"ErrorMessage_ErrorMessage__HEFi5",icon:"ErrorMessage_icon__5tO1z","icon-small":"ErrorMessage_icon-small__77SMV"}},9230:function(e){e.exports={Loader:"Loader_Loader__p1O3c",LoaderText:"Loader_LoaderText___X_fO",ProgressBar:"Loader_ProgressBar__piYD7","status-bar-field":"Loader_status-bar-field__3azjP",progress:"Loader_progress__L3k_B",loading:"Loader_loading__SRmHg",TempToolbar:"Loader_TempToolbar__2CIwv"}},5263:function(e){e.exports={Modal:"Modal_Modal__WQtz0",window:"Modal_window__3RI8l",Viewer:"Modal_Viewer__wOGD2",Mobile:"Modal_Mobile__LQTpD"}},8895:function(e){e.exports={Toolbar:"ToolbarMenu_Toolbar__eSmWs",ToolbarMenu:"ToolbarMenu_ToolbarMenu__XPnHN",Selected:"ToolbarMenu_Selected__pTsrU"}},4589:function(e){e.exports={ToolbarMenuIcon:"ToolbarMenuIcon_ToolbarMenuIcon__LtnOJ",ReadMe:"ToolbarMenuIcon_ReadMe__nRLTh",ToolbarMenu:"ToolbarMenuIcon_ToolbarMenu__RFHzS"}},2924:function(e){e.exports={UploadDropZone:"UploadDropZone_UploadDropZone__L_Y3H",dragging:"UploadDropZone_dragging__w9eIz"}},3015:function(e){e.exports={Viewer:"ViewerModal_Viewer__hIP4P",TitleBar:"ViewerModal_TitleBar__MEVzt",MultipleCnfSelectMenu:"ViewerModal_MultipleCnfSelectMenu__ct9TG",Mobile:"ViewerModal_Mobile__F56Q1",TitleBarText:"ViewerModal_TitleBarText__FzONY"}},315:function(e){e.exports={WelcomeModal:"WelcomeModal_WelcomeModal__1Pa2D",Header:"WelcomeModal_Header__YyHyx",tagline:"WelcomeModal_tagline__f96TU"}},7480:function(e){e.exports={PopupWindow:"PopupWindow_PopupWindow__ZyJ0u"}}},function(e){e.O(0,[774,154,888,179],(function(){return t=8312,e(e.s=t);var t}));var t=e.O();_N_E=t}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.