From 0e024a009f72a79615b71a91f5a3d8afa0ee7e00 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Fri, 27 Feb 2015 01:35:41 -0500 Subject: [PATCH 01/89] move along, nothing to see here --- arvo/ames.hoon | 6 +- arvo/clay.hoon | 2628 ++++++++++++++++++++++++++--------- arvo/dill.hoon | 4 +- arvo/eyre.hoon | 6 +- arvo/ford.hoon | 242 +++- arvo/gall.hoon | 17 +- arvo/hoon.hoon | 67 +- arvo/zuse.hoon | 831 +++++------ main/app/cat/core.hook | 2 +- main/app/into/core.hook | 2 +- main/app/merge/core.hook | 30 + main/app/poke/core.hook | 2 +- main/app/reboot/core.hook | 2 +- main/app/shell/core.hook | 15 +- main/app/solid/core.hook | 12 - main/app/terminal/core.hook | 54 +- main/app/tree/core.hook | 2 +- main/mar/css/door.hook | 13 +- main/mar/eot/door.hook | 23 + main/mar/hook/door.hook | 20 +- main/mar/hoon/door.hook | 31 + main/mar/js/door.hook | 27 +- main/mar/json/door.hook | 14 +- main/mar/md/door.hook | 18 + main/mar/mime/door.hook | 11 +- main/mar/otf/door.hook | 23 + main/mar/styl/door.hook | 19 + main/mar/txt-diff/door.hook | 11 + main/mar/txt/door.hook | 82 +- main/mar/woff/door.hook | 23 + try/readme.md | 2 +- 31 files changed, 3065 insertions(+), 1174 deletions(-) create mode 100644 main/app/merge/core.hook create mode 100644 main/mar/eot/door.hook create mode 100644 main/mar/hoon/door.hook create mode 100644 main/mar/otf/door.hook create mode 100644 main/mar/styl/door.hook create mode 100644 main/mar/txt-diff/door.hook create mode 100644 main/mar/woff/door.hook diff --git a/arvo/ames.hoon b/arvo/ames.hoon index 034f5bca6..1010a61d8 100644 --- a/arvo/ames.hoon +++ b/arvo/ames.hoon @@ -1625,7 +1625,7 @@ :: ++ scry |= [fur=(unit (set monk)) ren=@tas who=ship syd=desk lot=coin tyl=path] - ^- (unit (unit (pair mark ,*))) + ^- (unit (unit cage)) ?~ tyl [~ ~] =+ hun=(slaw %p i.tyl) ?~ hun [~ ~] @@ -1637,13 +1637,13 @@ [%$ %ud @] %+ bind (perm who u.hun q.p.lot [syd t.tyl]) - |=(a=* [%noun a]) + |=(a=* [%noun !>(a)]) :: [%$ %da @] ?. =(now q.p.lot) ~ %+ bind (temp who u.hun [syd t.tyl]) - |=(a=* [%noun a]) + |=(a=* [%noun !>(a)]) == :: ++ stay fox diff --git a/arvo/clay.hoon b/arvo/clay.hoon index ce0c2c163..1e26c3c6a 100644 --- a/arvo/clay.hoon +++ b/arvo/clay.hoon @@ -1,27 +1,56 @@ !: :: clay (4c), revision control -!: +:: |= pit=vase => |% +++ bead ,[p=(set beam) q=gage] :: ford result +++ cane :: change set + $: new=(map path lobe) :: new files + can=(map path cage) :: diffs + old=(map path ,~) :: deleted files + == :: ++ cult (map duct rove) :: subscriptions -++ dojo ,[p=cult q=dome] :: domestic desk state +++ dojo :: domestic desk state + $: qyx=cult :: subscribers + dom=dome :: desk data + dok=(unit dork) :: outstanding diffs + mer=(map (pair ship desk) mery) :: outstanding merges + == :: ++ gift :: out result <-$ - $% [%ergo p=@p q=@tas r=@ud] :: version update + $% [%ergo p=@p q=@tas r=@ud s=(list ,[path (unit mime)])] + :: version update + [%mere p=(each (set path) (pair term (list tank)))] + :: merge result [%note p=@tD q=tank] :: debug message [%writ p=riot] :: response == :: +++ khan :: + $: fil=(unit (unit cage)) :: + dir=(map ,@ta khan) :: + == :: ++ kiss :: in request ->$ $% [%font p=@p q=@tas r=@p s=@tas] :: set upstream [%info p=@p q=@tas r=nori] :: internal edit - [%ingo p=@p q=@tas r=nori] :: internal noun edit [%init p=@p] :: report install - [%into p=@p q=@tas r=nori] :: external edit - [%invo p=@p q=@tas r=nori] :: external noun edit - [%merg p=@p q=@tas r=mizu] :: internal change + [%into p=@p q=@tas r=khan] :: external edit + [%merg p=@p q=@tas r=@p s=@tas t=germ] :: merge desks [%plug p=@p q=@tas r=@p s=@tas] :: unset upstream [%wart p=sock q=@tas r=path s=*] :: network request [%warp p=sock q=riff] :: file request == :: +++ mery :: + $: gem=germ :: strategy + cas=case :: ali's case + ali=yaki :: ali's commit + bob=yaki :: bob's commit + bas=yaki :: mergebase + dal=cane :: diff(bas,ali) + dob=cane :: diff(bas,bob) + new=yaki :: merge(dal,dob) + ank=ankh :: new state + erg=(map path ,?) :: ergoable changes + gon=(each (set path) (pair term (list tank))) :: return value + == :: ++ moot ,[p=case q=case r=path s=(map path lobe)] :: stored change range ++ move ,[p=duct q=(mold note gift)] :: local move ++ nako $: gar=(map ,@ud tako) :: new ids @@ -35,11 +64,15 @@ == == :: $: %c :: to %clay $% [%font p=@p q=@tas r=@p s=@tas] :: + [%info p=@p q=@tas r=nori] :: internal edit [%merg p=@p q=@tas r=mizu] :: [%warp p=sock q=riff] :: == == :: $: %d :: $% [%flog p=[%crud p=@tas q=(list tank)]] :: to %dill + == == :: + $: %f :: + $% [%exec p=@p q=(unit silk)] :: == == :: $: %t :: $% [%wait p=@da] :: @@ -52,6 +85,9 @@ == == :: $: %c :: by %clay $% [%writ p=riot] :: + == == :: + $: %f :: + $% [%made p=(each bead (list tank))] :: == == :: $: %t :: $% [%wake ~] :: timer activate @@ -59,6 +95,24 @@ $: @tas :: by any $% [%crud p=@tas q=(list tank)] :: == == == :: +++ silk :: construction layer + $& [p=silk q=silk] :: cons + $% [%bake p=mark q=beam r=path] :: local synthesis + [%boil p=mark q=beam r=path] :: general synthesis + [%call p=silk q=silk] :: slam + [%cast p=mark q=silk] :: translate + [%diff p=silk q=silk] :: diff + [%done p=(set beam) q=gage] :: literal + [%dude p=tank q=silk] :: error wrap + [%dune p=(set beam) q=(unit gage)] :: unit literal + [%join p=mark q=silk r=silk] :: merge + [%mute p=silk q=(list (pair wing silk))] :: mutant + [%pact p=silk q=silk] :: patch + [%reef ~] :: kernel reef + [%ride p=twig q=silk] :: silk thru twig + [%tabl p=(list (pair silk silk))] :: list + [%vale p=mark q=ship r=*] :: validate [our his] + == :: ++ raft :: filesystem $: fat=(map ship room) :: domestic hoy=(map ship rung) :: foreign @@ -74,13 +128,15 @@ qyx=cult :: subscribers ref=(unit rind) :: outgoing requests dom=dome :: revision state + dok=(unit dork) :: outstanding diffs + mer=(map (pair ship desk) mery) :: outstanding merges == :: ++ riff ,[p=desk q=(unit rave)] :: request/desist ++ rind :: request manager $: nix=@ud :: request index bom=(map ,@ud ,[p=duct q=rave]) :: outstanding fod=(map duct ,@ud) :: current requests - haw=(map mood (unit)) :: simple cache + haw=(map mood (unit cage)) :: simple cache == :: ++ room :: fs per ship $: hun=duct :: terminal duct @@ -90,657 +146,1977 @@ ++ rove (each mood moot) :: stored request ++ rung $: rus=(map desk rede) :: neighbor desks == :: +++ dork :: diff work + $: sot=(list ,[p=path q=misu]) :: + lon=(list path) :: + mim=(map path mime) :: + == :: -- => - :::::::::::::::::::::::::::::::::::::::::::::::::::::::: - :: section 4cA, filesystem logic :: - :: - :: - :: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: section 4cA, filesystem logic :: +:: +:: +:: +|% +++ de :: per desk + |= [now=@da hen=duct hun=duct hez=(unit duct)] + |= [[who=@p for=@p] syd=@ta rede ran=rang] + =* red +<+>- + =| yel=(list ,[p=duct q=gift]) + =| byn=(list ,[p=duct q=riot]) + =| reg=(list ,[p=duct q=gift]) + =| say=(list ,[p=duct q=path r=ship s=[p=@ud q=riff]]) + =| tag=(list ,[p=duct q=path r=note]) |% - ++ de :: per desk - |= [now=@da hun=duct hez=(unit duct)] - |= [[who=@p for=@p] syd=@ta rede ran=rang] - =* red +<+>- - =| yel=(list ,[p=duct q=gift]) - =| byn=(list ,[p=duct q=riot]) - =| vag=(list ,[p=duct q=gift]) - =| say=(list ,[p=duct q=path r=ship s=[p=@ud q=riff]]) - =| tag=(list ,[p=duct q=path c=note]) - |% - ++ abet - ^- [(list move) rede] - :_ red - ;: weld - %+ turn (flop yel) - |=([a=duct b=gift] [hun %give b]) - :: - %+ turn (flop byn) - |=([a=duct b=riot] [a %give [%writ b]]) - :: - %+ turn (flop vag) - |=([a=duct b=gift] [a %give b]) - :: - %+ turn (flop say) - |= [a=duct b=path c=ship d=[p=@ud q=riff]] - :- a - [%pass b %a %want [who c] [%q %re p.q.d (scot %ud p.d) ~] q.d] - :: - %+ turn (flop tag) - |=([a=duct b=path c=note] [a %pass b c]) - == + ++ abet + ^- [(list move) rede] + :_ red + ;: weld + %+ turn (flop yel) + |=([a=duct b=gift] [hun %give b]) :: - ++ aver :: read - |= mun=mood - ^- (unit (unit ,*)) - ?: &(=(p.mun %u) !=(p.q.mun now)) :: prevent bad things - ~& [%clay-fail p.q.mun %now now] - !! - =+ ezy=?~(ref ~ (~(get by haw.u.ref) mun)) - ?^ ezy ezy - =+ nao=(~(case-to-aeon ze lim dom ran) q.mun) - :: ~& [%aver-mun nao [%from syd lim q.mun]] - ?~(nao ~ [~ (~(read-at-aeon ze lim dom ran) u.nao mun)]) + %+ turn (flop byn) + |=([a=duct b=riot] [a %give [%writ b]]) :: - ++ balk :: read and send - |= [hen=duct yon=@ud mun=mood] - ^+ +> - =+ vid=(~(read-at-aeon ze lim dom ran) yon mun) - ?~ vid (blub hen) (blab hen mun u.vid) + %+ turn (flop reg) + |=([a=duct b=gift] [a %give b]) :: - ++ bait - |= [hen=duct tym=@da] - %_(+> tag :_(tag [hen /tyme %t %wait tym])) + %+ turn (flop say) + |= [a=duct b=path c=ship d=[p=@ud q=riff]] + :- a + [%pass b %a %want [who c] [%q %re p.q.d (scot %ud p.d) ~] q.d] :: - ++ best - |= [hen=duct tym=@da] - %_(+> tag :_(tag [hen /tyme %t %rest tym])) - :: - ++ blab :: ship result - |= [hen=duct mun=mood dat=*] - ^+ +> - +>(byn [[hen ~ [p.mun q.mun syd] r.mun dat] byn]) - :: - ++ bleb :: ship sequence - |= [hen=duct ins=@ud hip=nako] - ^+ +> - (blab hen [%w [%ud ins] ~] hip) - :: - ++ blub :: ship stop - |= hen=duct - %_(+> byn [[hen ~] byn]) - :: - ++ duce :: produce request - |= [hen=duct rov=rove] - ^+ +> - =. qyx (~(put by qyx) hen rov) - ?~ ref - (mabe rov (cury bait hen)) - |- ^+ +>+.$ :: XX why? - =+ rav=(reve rov) - =+ ^= vaw ^- rave - ?. ?=([%& %v *] rav) rav - [%| [%ud let.dom] `case`q.p.rav r.p.rav] - =+ inx=nix.u.ref - %= +>+.$ - say [[hen [(scot %ud inx) ~] for [inx syd ~ vaw]] say] - nix.u.ref +(nix.u.ref) - bom.u.ref (~(put by bom.u.ref) inx [hen vaw]) - fod.u.ref (~(put by fod.u.ref) hen inx) - == - :: - ++ ease :: release request - |= hen=duct - ^+ +> - ?~ ref - =+ rov=(~(got by qyx) hen) - =. qyx (~(del by qyx) hen) - (mabe rov (cury best hen)) + %+ turn (flop tag) + |=([a=duct b=path c=note] [a %pass b c]) + == + :: + ++ aver :: read + |= mun=mood + ^- (unit (unit cage)) + ?: &(=(p.mun %u) !=(p.q.mun now)) :: prevent bad things + ~& [%clay-fail p.q.mun %now now] + !! + =+ ezy=?~(ref ~ (~(get by haw.u.ref) mun)) + ?^ ezy ezy + =+ nao=(case-to-aeon:ze q.mun) + :: ~& [%aver-mun nao [%from syd lim q.mun]] + ?~(nao ~ [~ (read-at-aeon:ze u.nao mun)]) + :: + ++ balk :: read and send + |= [hen=duct yon=@ud mun=mood] + ^+ +> + =+ vid=(read-at-aeon:ze yon mun) + ?~ vid (blub hen) (blab hen mun u.vid) + :: + ++ bait + |= [hen=duct tym=@da] + %_(+> tag :_(tag [hen /tyme %t %wait tym])) + :: + ++ best + |= [hen=duct tym=@da] + %_(+> tag :_(tag [hen /tyme %t %rest tym])) + :: + ++ blab :: ship result + |= [hen=duct mun=mood dat=cage] + ^+ +> + +>(byn [[hen ~ [p.mun q.mun syd] r.mun dat] byn]) + :: + ++ bleb :: ship sequence + |= [hen=duct ins=@ud hip=nako] + ^+ +> + (blab hen [%w [%ud ins] ~] %nako !>(hip)) + :: + ++ blub :: ship stop + |= hen=duct + %_(+> byn [[hen ~] byn]) + :: + ++ duce :: produce request + |= rov=rove + ^+ +> + =. qyx (~(put by qyx) hen rov) + ?~ ref + (mabe rov (cury bait hen)) + |- ^+ +>+.$ :: XX why? + =+ rav=(reve rov) + =+ ^= vaw ^- rave + ?. ?=([%& %v *] rav) rav + [%| [%ud let.dom] `case`q.p.rav r.p.rav] + =+ inx=nix.u.ref + %= +>+.$ + say [[hen [(scot %ud inx) ~] for [inx syd ~ vaw]] say] + nix.u.ref +(nix.u.ref) + bom.u.ref (~(put by bom.u.ref) inx [hen vaw]) + fod.u.ref (~(put by fod.u.ref) hen inx) + == + :: + ++ ease :: release request + ^+ . + ?~ ref + =+ rov=(~(got by qyx) hen) =. qyx (~(del by qyx) hen) - |- ^+ +>+.$ - =+ nux=(~(get by fod.u.ref) hen) - ?~ nux +>+.$ - %= +>+.$ - say [[hen [(scot %ud u.nux) ~] for [u.nux syd ~]] say] - fod.u.ref (~(del by fod.u.ref) hen) - bom.u.ref (~(del by bom.u.ref) u.nux) - == + (mabe rov (cury best hen)) + =. qyx (~(del by qyx) hen) + |- ^+ +.$ + =+ nux=(~(get by fod.u.ref) hen) + ?~ nux +.$ + %= +.$ + say [[hen [(scot %ud u.nux) ~] for [u.nux syd ~]] say] + fod.u.ref (~(del by fod.u.ref) hen) + bom.u.ref (~(del by bom.u.ref) u.nux) + == + :: + ++ eave :: subscribe + |= rav=rave + ^+ +> + ?- -.rav + & + ?: &(=(p.p.rav %u) !=(p.q.p.rav now)) + ~& [%clay-fail p.q.p.rav %now now] + !! + =+ ver=(aver p.rav) + ?~ ver + (duce rav) + ?~ u.ver + (blub hen) + (blab hen p.rav u.u.ver) :: - ++ eave :: subscribe - |= [hen=duct rav=rave] - ^+ +> - ?- -.rav - & - ?: &(=(p.p.rav %u) !=(p.q.p.rav now)) - ~& [%clay-fail p.q.p.rav %now now] - !! - =+ ver=(aver p.rav) - ?~ ver - (duce hen rav) - ?~ u.ver - (blub hen) - (blab hen p.rav u.u.ver) + | + =+ nab=(case-to-aeon:ze p.p.rav) + ?~ nab + ?> =(~ (case-to-aeon:ze q.p.rav)) + (duce (rive rav)) + =+ huy=(case-to-aeon:ze q.p.rav) + ?: &(?=(^ huy) |((lth u.huy u.nab) &(=(0 u.huy) =(0 u.nab)))) + (blub hen) + =+ top=?~(huy let.dom u.huy) + =+ sar=(lobes-at-path:ze u.nab r.p.rav) + =+ ear=(lobes-at-path:ze top r.p.rav) + =. +>.$ + ?: =(sar ear) +>.$ + =+ fud=(make-nako:ze u.nab top) + (bleb hen u.nab fud) + ?^ huy + (blub hen) + =+ ^= ptr ^- case + [%ud +(let.dom)] + (duce `rove`[%| ptr q.p.rav r.p.rav ear]) + == + :: + ++ echa :: announce raw + |= [wen=@da mer=mizu] + ^+ +> + %= +> + reg ~& %merge-announce reg + :: ?~(hez reg :_(reg [u.hez [%ergo who syd let.dom]])) + :: yel [[hen %note '=' %leaf ~] yel] :: XX do better + == + :: + ++ echo :: announce changes + |= [wen=@da mim=(map path mime) lem=nori] + ^+ +> + %_ +>.$ + yel + =+ pre=`path`~[(scot %p for) syd (scot %ud let.dom)] + ?- -.lem + | :_ yel + [hen %note '=' %leaf :(weld (trip p.lem) " " (spud pre))] + & |- ^+ yel + ?~ q.p.lem yel + :_ $(q.p.lem t.q.p.lem) + :- hen + :+ %note + ?-(-.q.i.q.p.lem %del '-', %ins '+', %mut ':', %dif ';') + [%leaf (spud (weld pre p.i.q.p.lem))] + == + == + :: + ++ edit :: apply changes + |= [wen=@da lem=nori] + ^+ +> + ?: ?=(%| -.lem) + =^ hat +>.$ + (edit:ze wen lem) + ?~ hat + +>.$ + (echo:(checkout-ankh u.hat) wen ~ lem) + ?. =(~ dok) + ~& %already-applying-changes +> + =+ ^= sop + |= [a=path b=miso] + ^- ? + ?| ?=(%del -.b) + ?& ?=(%ins -.b) + ?=(%mime p.p.b) + =+ (slag (dec (lent a)) a) + ?| =([%hook ~] -) + =([%hoon ~] -) + == == == + =+ ^- lon=(list path) + (murn q.p.lem |=([a=path b=miso] ?:((sop a b) ~ (some a)))) + =+ ^- sot=(list ,[p=path q=misu]) + %+ murn q.p.lem + |=([a=path b=miso] ?.((sop a b) ~ (some [a ?<(?=(%mut -.b) b)]))) + =+ ^- mim=(map path mime) + %- mo + ^- (list ,[path mime]) + %+ murn q.p.lem + |= [a=path b=miso] + ?- -.b + %del ~ + %ins ?.(?=(%mime p.p.b) ~ (some a ((hard mime) q.q.p.b))) + %dif ~ + %mut ?.(?=(%mime p.q.b) ~ (some a ((hard mime) q.q.q.b))) + == + =. dok `[sot lon mim] + ?~ lon + (apply-edit wen) + =+ ^- los=(list ,[duct path note]) + %+ murn q.p.lem + |=([a=path b=miso] ?:((sop a b) ~ (some (silkify wen a b)))) + %_(+>.$ tag (welp los tag)) + :: + ++ silkify + |= [wen=@da pax=path mis=miso] + ^- [duct path note] + :- hen + ?+ -.mis !! + %mut + :- [%diffing (scot %p who) syd (scot %da wen) pax] + :^ %f %exec who :- ~ + ^- silk + =+ =+ (slag (dec (lent pax)) pax) + =+ ?~(- %$ i.-) + [%cast - [%done ~ q.mis]] + [%diff [%done ~ p.mis] -] + :: + %ins + :- [%casting (scot %p who) syd (scot %da wen) pax] + :^ %f %exec who :- ~ + ^- silk + =+ (slag (dec (lent pax)) pax) + =+ ?~(- %$ i.-) + [%cast - [%done ~ p.mis]] + == + :: + ++ patch + |= [pax=path bar=lobe] + ^- [duct path note] + :+ hen + [%patching (scot %p who) syd pax] + [%f %exec who ~ (lobe-to-silk:ze bar)] + :: + ++ apply-edit + |= wen=@da + ^+ +> + =+ ^= hat + (edit:ze wen %& *cart ?~(dok ~|(%no-changes !!) sot.u.dok)) + ?~ dok ~& %no-changes !! + ?^ lon.u.dok ~& %not-done-diffing !! + ?~ -.hat + ([echo(dok ~)]:.(+>.$ +.hat) wen mim.u.dok %& *cart sot.u.dok) + (checkout-ankh(lat.ran lat.ran.+.hat) u.-.hat) + :: + ++ take-cast + |= [wen=@da pax=path res=(each bead (list tank))] + ^+ +> + ?~ dok + ~& %clay-unexpected-made +>.$ + ?. (lien lon.u.dok |=(path =(+< pax))) + ~& %clay-strange-made +>.$ + ?: ?=(%| -.res) + %_ +>.$ + dok ~ + :: XX should be here + :: tag + :: %- welp :_ tag + :: ^- (list ,[duct path note]) + :: %+ murn lon.u.dok + :: |= a=path + :: ^- (unit ,[duct path note]) + :: ?: =(pax a) ~ + :: `[hen [%diffing (scot %p who) syd (scot %da wen) a] %f %exec who ~] :: - | - =+ nab=(~(case-to-aeon ze lim dom ran) p.p.rav) - ?~ nab - ?> =(~ (~(case-to-aeon ze lim dom ran) q.p.rav)) - (duce hen (rive rav)) - =+ huy=(~(case-to-aeon ze lim dom ran) q.p.rav) - ?: &(?=(^ huy) |((lth u.huy u.nab) &(=(0 u.huy) =(0 u.nab)))) - (blub hen) - =+ top=?~(huy let.dom u.huy) - =+ sar=(~(lobes-at-path ze lim dom ran) u.nab r.p.rav) - =+ ear=(~(lobes-at-path ze lim dom ran) top r.p.rav) - =. +>.$ - ?: =(sar ear) +>.$ - =+ fud=(~(make-nako ze lim dom ran) u.nab top) - (bleb hen u.nab fud) - ?^ huy - (blub hen) - =+ ^= ptr ^- case - [%ud +(let.dom)] - (duce hen `rove`[%| ptr q.p.rav r.p.rav ear]) - == - :: - ++ echa :: announce raw - |= [hen=duct wen=@da mer=mizu] - ^+ +> - %= +> - vag ?~(hez vag :_(vag [u.hez [%ergo who syd let.dom]])) - ::yel [[hen %note '=' %leaf ~] yel] :: XX do better - == - :: - ++ echo :: announce changes - |= [hen=duct wen=@da lem=nori] - ^+ +> - %= +> - vag ?~(hez vag :_(vag [u.hez [%ergo who syd let.dom]])) yel - =+ pre=`path`~[(scot %p for) syd (scot %ud let.dom)] - ?- -.lem - | :_ yel - [hen %note '=' %leaf :(weld (trip p.lem) " " (spud pre))] - & |- ^+ yel - ?~ q.q.lem yel - :_ $(q.q.lem t.q.q.lem) - :- hen - :+ %note - ?-(-.q.i.q.q.lem %del '-', %ins '+', %mut ':') - [%leaf (spud (weld pre p.i.q.q.lem))] - == + [[hen %note '!' %rose [" " "" ""] leaf/"clay diff failed" p.res] yel] == - :: - ++ edit :: apply changes - |= [wen=@da lem=nori] - ^+ +> - =+ axe=(~(edit ze lim dom ran) wen lem) - =+ `[l=@da d=dome r=rang]`+<.axe - +>.$(dom d, ran r) - :: - ++ edis :: apply subscription - |= nak=nako - ^+ +> - %= +> - hit.dom (~(uni by hit.dom) gar.nak) - let.dom let.nak - lat.ran %+ roll (~(tap in bar.nak) ~) - =< .(yeb lat.ran) - |= [sar=blob yeb=(map lobe blob)] - =+ zax=(blob-to-lobe sar) - %+ ~(put by yeb) zax sar - hut.ran %+ roll (~(tap in lar.nak) ~) - =< .(yeb hut.ran) - |= [sar=yaki yeb=(map tako yaki)] - %+ ~(put by yeb) r.sar sar + ?. ?=(@ p.q.p.res) ~| %bad-marc !! + =: lon.u.dok (skip lon.u.dok |=(path =(+< pax))) + sot.u.dok [[pax %ins q.p.res] sot.u.dok] + == + ?~ lon.u.dok + (apply-edit wen) + +>.$ + :: + ++ take-diff + |= [wen=@da pax=path res=(each bead (list tank))] + ^+ +> + ?~ dok + ~& %clay-unexpected-made +>.$ + ?. (lien lon.u.dok |=(path =(+< pax))) + ~& %clay-strange-made +>.$ + ?: ?=(%| -.res) + %_ +>.$ + dok ~ + :: tag + :: %- welp :_ tag + + :: ^- (list ,[duct path note]) + :: %+ murn lon.u.dok + :: |= a=path + :: ^- (unit ,[duct path note]) + :: ?: =(pax a) ~ + :: `[hen [%diffing (scot %p who) syd (scot %da wen) a] %f %exec who ~] + :: + yel + :_ yel + [hen %note '!' %rose [" " "" ""] leaf/"clay diff failed" >pax< p.res] == - :: - ++ exec :: change and update - |= [hen=duct wen=@da lem=nori] - ^+ +> - (echo:wake:(edit wen lem) hen wen lem) - :: - ++ exem :: execute merge - |= [hen=duct wen=@da mer=mizu] :: aka direct change - ?. (gte p.mer let.dom) !! :: no - =. +>.$ %= +>.$ - hut.ran (~(uni by hut.r.mer) hut.ran) - lat.ran (~(uni by lat.r.mer) lat.ran) - let.dom p.mer - hit.dom (~(uni by q.mer) hit.dom) - == - =+ ^= hed :: head commit - =< q - %- ~(got by hut.ran) - %- ~(got by hit.dom) - let.dom - =. ank.dom :: real checkout - (~(checkout-ankh ze lim dom ran) hed) - (echa:wake hen wen mer) :: notify or w/e - :: - ++ knit :: external change - |= [inx=@ud rot=riot] - ^+ +> - ?> ?=(^ ref) - |- ^+ +>+.$ - =+ ruv=(~(get by bom.u.ref) inx) - ?~ ruv +>+.$ - => ?. |(?=(~ rot) ?=(& -.q.u.ruv)) . - %_ . - bom.u.ref (~(del by bom.u.ref) inx) - fod.u.ref (~(del by fod.u.ref) p.u.ruv) - == - ?~ rot - =+ rav=`rave`q.u.ruv - %= +>+.$ - lim - ?.(&(?=(| -.rav) ?=(%da -.q.p.rav)) lim `@da`p.q.p.rav) - :: - haw.u.ref - ?. ?=(& -.rav) haw.u.ref - (~(put by haw.u.ref) p.rav ~) - == - ?< ?=(%v p.p.u.rot) - =. haw.u.ref - (~(put by haw.u.ref) [p.p.u.rot q.p.u.rot q.u.rot] ~ r.u.rot) - ?. ?=(%w p.p.u.rot) +>+.$ - |- ^+ +>+.^$ - =+ nez=[%w [%ud let.dom] ~] - =+ nex=(~(get by haw.u.ref) nez) - ?~ nex +>+.^$ - ?~ u.nex +>+.^$ :: should never happen - =. +>+.^$ - =+ roo=(edis ((hard nako) u.u.nex)) - ?>(?=(^ ref.roo) roo) - %= $ - haw.u.ref (~(del by haw.u.ref) nez) + ?. ?=(@ p.q.p.res) ~| %bad-marc !! + =: lon.u.dok (skip lon.u.dok |=(path =(+< pax))) + sot.u.dok ?: =(%null p.q.p.res) + sot.u.dok + [[pax %dif q.p.res] sot.u.dok] + == + ?~ lon.u.dok + (apply-edit wen) + +>.$ + :: + ++ take-patch + |= res=(each bead (list tank)) + ^+ +> + ?: ?=(%| -.res) + %_ +>.$ + dok ~ + yel + [[hen %note '!' %rose [" " "" ""] leaf/"clay patch failed" p.res] yel] == - :: - ++ mabe :: maybe fire function - |* [rov=rove fun=$+(@da _+>.^$)] - ^+ +>.$ - %- fall :_ +>.$ - %- bind :_ fun - ^- (unit ,@da) - ?- -.rov - %& - ?. ?=(%da -.q.p.rov) ~ - `p.q.p.rov - %| - =* mot p.rov - %+ hunt - ?. ?=(%da -.p.mot) ~ - ?.((lth now p.p.mot) ~ [~ p.p.mot]) - ?. ?=(%da -.q.mot) ~ - ?.((lth now p.q.mot) [~ now] [~ p.q.mot]) + =^ hat +>.$ + (edit:ze now %& *cart ?~(dok ~|(%no-changes !!) sot.u.dok)) + =. +>.$ wake + ?~ dok ~& %no-dok +>.$ + ?^ lon.u.dok ~& %not-done-diffing !! + => + %= . + +>.$ + ?< ?=(~ hat) + %^ echo :: :(checkout-ankh u.hat) + now + mim.u.dok + [%& *cart sot.u.dok] == - :: - ++ reve - |= rov=rove - ^- rave - ?: ?=(%& -.rov) rov - [%| p.p.rov q.p.rov r.p.rov] - :: - ++ rive - |= rav=[%| p=moat] - ^- rove - [%| p.p.rav q.p.rav r.p.rav ~] - :: - ++ sync - |= [hen=duct her=@p sud=@tas rot=riot] - ^+ +>.$ - ?~ rot - ~& "autosync from {} on {} to {} on {} stopped" - +>.$ - ?: ?=(%y p.p.u.rot) - %= +>.$ - yel - [[hen %note ';' %leaf "starting to sync desk {(trip syd)}..."] yel] - tag - :_ tag - :* hen /auto/(scot %p who)/[syd]/(scot %p her)/[sud]/v - %c %warp [who her] sud - `[%& %v q.p.u.rot /] - == + ?~ dok ~& %no-dok +>.$ + ?^ lon.u.dok ~& %not-done-diffing !! + =+ cay=q.p.res + ?@ p.cay ~| %patch-bad-marc !! + =+ ^= can + |- ^- (list ,[path cage]) + ?~ p.p.cay + ~ + :_ %_($ cay [[%tabl t.p.p.cay] (slot 3 q.cay)]) + ?. ?=(%path p.i.p.p.cay) + ~| %patch-strange-marc-a + !! + ?. ?=(@ q.i.p.p.cay) + ~| %patch-strange-marc-b + !! + =+ coy=(slot 2 q.cay) + ?@ q.coy + ~| %patch-strange-coy + !! + :- ((hard path) -.q.coy) + [q.i.p.p.cay (slot 3 coy)] + =. ank.dom (checkout-ankh:ze (mo can)) + ?~ hez +>.$(dok ~) + =+ ^= ceq + |= a=miso + ?| ?=(%del -.a) + &(?=(%ins -.a) ?=(%mime -.+.a)) + &(?=(%mut -.a) ?=(%mime -.+>.a)) == - ?> ?=(%v p.p.u.rot) - =+ der=((hard dome) r.u.rot) - =+ ^= lum - ^- (unit (unit mizu)) - %^ ~(construct-merge ze now dom ran) - ?:(=(0 let.dom) %init %meld) - who - :+ syd - `saba`[her sud [0 let.der] der] - now - =. tag - :_ tag - :* hen /auto/(scot %p who)/[syd]/(scot %p her)/[sud]/y - %c %warp [who her] sud - `[%& %y [%ud +(let.der)] /] + %_ +>.$ + dok ~ + tag :: ?~(hez reg :_(reg [u.hez [%ergo who syd let.dom]])) + :_ tag + :^ hen + [%ergoing (scot %p who) syd ~] + %f + :^ %exec who ~ :- %tabl + ^- (list (pair silk silk)) + %+ turn sot.u.dok + |= [a=path b=misu] + ^- (pair silk silk) + :- [%done ~ %path !>(a)] + ?: ?=(%del -.b) + [%done ~ %null !>(~)] + :^ %cast %mime %done + =+ (~(get by mim.u.dok) a) + `?^(- [%mime !>(u.-)] (need (read:ze %x [%ud let.dom] a))) + == + :: + ++ take-ergo + |= res=(each bead (list tank)) + ^+ +> + ?: ?=(%| -.res) + %_ +>.$ + yel + [[hen %note '!' %rose [" " "" ""] leaf/"clay ergo failed" p.res] yel] + == + ?~ hez ~& %no-sync-duct !! + =+ cay=q.p.res + ?@ p.cay ~| %patch-bad-marc !! + %= +>.$ + reg + :_ reg + :* u.hez %ergo who syd let.dom + |- ^- (list ,[path (unit mime)]) + ?~ p.p.cay + ~ + :_ %_($ cay [[%tabl t.p.p.cay] (slot 3 q.cay)]) + ?. ?=(%path p.i.p.p.cay) + ~| %ergo-strange-marc-a + !! + ?. ?=(@ q.i.p.p.cay) + ~| %ergo-strange-marc-b + !! + =+ coy=(slot 2 q.cay) + ?@ q.coy + ~| %ergo-strange-coy + !! + :- ((hard path) -.q.coy) + ?. ?=(%mime q.i.p.p.cay) + ~ + `((hard mime) q:(slot 3 coy)) + == + == + :: + ++ checkout-ankh + |= hat=(map path lobe) + ^+ +> + %_ +>.$ + tag + :_ tag + :^ hen + [%patching (scot %p who) syd ~] + %f + :^ %exec who ~ :- %tabl + ^- (list (pair silk silk)) + %+ turn (~(tap by hat)) + |= [a=path b=lobe] + ^- (pair silk silk) + :- [%done ~ %path !>(a)] + |- ^- silk + =+ bob=(~(got by lat.ran) b) + ?- -.bob + %direct [%done ~ q.bob] + %indirect [%done ~ q.bob] + %delta [%pact $(b q.bob) [%done ~ r.bob]] + == + == + :: + ++ edis :: apply subscription + |= nak=nako + ^+ +> + %= +> + hit.dom (~(uni by hit.dom) gar.nak) + let.dom let.nak + lat.ran %+ roll (~(tap in bar.nak) ~) + =< .(yeb lat.ran) + |= [sar=blob yeb=(map lobe blob)] + =+ zax=(blob-to-lobe sar) + %+ ~(put by yeb) zax sar + hut.ran %+ roll (~(tap in lar.nak) ~) + =< .(yeb hut.ran) + |= [sar=yaki yeb=(map tako yaki)] + %+ ~(put by yeb) r.sar sar + == + :: + ++ exec :: change and update + |= [wen=@da lem=nori] + ^+ +> + wake:(edit wen lem) + :: + ++ exem :: execute merge + |= [wen=@da her=@p sud=@tas gem=germ] :: aka direct change + !! + :: ?. (gte p.mer let.dom) !! :: no + :: =. +>.$ %= +>.$ + :: hut.ran (~(uni by hut.r.mer) hut.ran) + :: lat.ran (~(uni by lat.r.mer) lat.ran) + :: let.dom p.mer + :: hit.dom (~(uni by q.mer) hit.dom) + :: == + :: =+ ^= hed :: head commit + :: =< q + :: %- ~(got by hut.ran) + :: %- ~(got by hit.dom) + :: let.dom + :: (echa:wake:(checkout-ankh hed)) + :: + ++ knit :: external change + |= [inx=@ud rot=riot] + ^+ +> + ?> ?=(^ ref) + |- ^+ +>+.$ + =+ ruv=(~(get by bom.u.ref) inx) + ?~ ruv +>+.$ + => ?. |(?=(~ rot) ?=(& -.q.u.ruv)) . + %_ . + bom.u.ref (~(del by bom.u.ref) inx) + fod.u.ref (~(del by fod.u.ref) p.u.ruv) == - ?~ lum - ~& "autosync from {} on {} to {} on {} failed" - ~& "please merge manually" - +>.$ - ?~ u.lum - ~& "autosync from {} on {} to {} on {} up to date" - +>.$ + ?~ rot + =+ rav=`rave`q.u.ruv + %= +>+.$ + lim + ?.(&(?=(| -.rav) ?=(%da -.q.p.rav)) lim `@da`p.q.p.rav) + :: + haw.u.ref + ?. ?=(& -.rav) haw.u.ref + (~(put by haw.u.ref) p.rav ~) + == + ?< ?=(%v p.p.u.rot) + =. haw.u.ref + (~(put by haw.u.ref) [p.p.u.rot q.p.u.rot q.u.rot] ~ r.u.rot) + ?. ?=(%w p.p.u.rot) +>+.$ + |- ^+ +>+.^$ + =+ nez=[%w [%ud let.dom] ~] + =+ nex=(~(get by haw.u.ref) nez) + ?~ nex +>+.^$ + ?~ u.nex +>+.^$ :: should never happen + =. +>+.^$ + =+ roo=(edis ((hard nako) q.q.u.u.nex)) + ?>(?=(^ ref.roo) roo) + %= $ + haw.u.ref (~(del by haw.u.ref) nez) + == + :: + ++ mabe :: maybe fire function + |* [rov=rove fun=$+(@da _+>.^$)] + ^+ +>.$ + %- fall :_ +>.$ + %- bind :_ fun + ^- (unit ,@da) + ?- -.rov + %& + ?. ?=(%da -.q.p.rov) ~ + `p.q.p.rov + %| + =* mot p.rov + %+ hunt + ?. ?=(%da -.p.mot) ~ + ?.((lth now p.p.mot) ~ [~ p.p.mot]) + ?. ?=(%da -.q.mot) ~ + ?.((lth now p.q.mot) [~ now] [~ p.q.mot]) + == + :: + ++ reve + |= rov=rove + ^- rave + ?: ?=(%& -.rov) rov + [%| p.p.rov q.p.rov r.p.rov] + :: + ++ rive + |= rav=[%| p=moat] + ^- rove + [%| p.p.rav q.p.rav r.p.rav ~] + :: + ++ merge-desks + |= [her=@p sud=@tas gem=germ rot=riot] + ^+ +>.$ + ?~ rot + ~& "autosync from {} on {} to {} on {} stopped" + +>.$ + ?: ?=(%y p.p.u.rot) %= +>.$ yel - [[hen %note ';' %leaf "successfully synced desk {(trip syd)}..."] yel] + [[hen %note ';' %leaf "starting to sync desk {(trip syd)}..."] yel] tag :_ tag - :* hen /auto/(scot %p who)/[syd]/(scot %p her)/[sud]/merg - %c %merg who syd u.u.lum + :* hen /auto/(scot %p who)/[syd]/(scot %p her)/[sud]/v + %c %warp [who her] sud + `[%& %v q.p.u.rot /] == == + ?> ?=(%v p.p.u.rot) + =+ der=((hard dome) r.u.rot) + =+ ^= lum + ^- (unit (unit mizu)) + ~ + ::%^ construct-merge:ze + :: ?:(=(0 let.dom) %init %meld) + :: who + :::+ syd + :: `saba`[her sud [0 let.der] der] + ::now + ?~ lum + ~& "autosync from {} on {} to {} on {} failed" + ~& "please merge manually" + +>.$ + ?~ u.lum + ~& "autosync from {} on {} to {} on {} up to date" + +>.$ + %= +>.$ + yel + [[hen %note ';' %leaf "successfully synced desk {(trip syd)}..."] yel] + tag + :_ tag + :* hen /auto/(scot %p who)/[syd]/(scot %p her)/[sud]/merg + %c %merg who syd u.u.lum + == + == + :: + ++ wake :: update subscribers + ^+ . + =+ xiq=(~(tap by qyx) ~) + =| xaq=(list ,[p=duct q=rove]) + |- ^+ ..wake + ?~ xiq + ..wake(qyx (~(gas by *cult) xaq)) + ?- -.q.i.xiq + & + =+ cas=?~(ref ~ (~(get by haw.u.ref) `mood`p.q.i.xiq)) + ?^ cas + %= $ + xiq t.xiq + ..wake ?~ u.cas (blub p.i.xiq) + (blab p.i.xiq p.q.i.xiq u.u.cas) + == + =+ nao=(case-to-aeon:ze q.p.q.i.xiq) + ?~ nao $(xiq t.xiq, xaq [i.xiq xaq]) + $(xiq t.xiq, ..wake (balk p.i.xiq u.nao p.q.i.xiq)) :: - ++ wake :: update subscribers - ^+ . - =+ xiq=(~(tap by qyx) ~) - =| xaq=(list ,[p=duct q=rove]) - |- ^+ ..wake - ?~ xiq - ..wake(qyx (~(gas by *cult) xaq)) - ?- -.q.i.xiq - & - =+ cas=?~(ref ~ (~(get by haw.u.ref) `mood`p.q.i.xiq)) - ?^ cas - %= $ - xiq t.xiq - ..wake ?~ u.cas (blub p.i.xiq) - (blab p.i.xiq p.q.i.xiq u.u.cas) - == - =+ nao=(~(case-to-aeon ze lim dom ran) q.p.q.i.xiq) - ?~ nao $(xiq t.xiq, xaq [i.xiq xaq]) - $(xiq t.xiq, ..wake (balk p.i.xiq u.nao p.q.i.xiq)) - :: - | - =+ mot=`moot`p.q.i.xiq - =+ nab=(~(case-to-aeon ze lim dom ran) p.mot) - ?~ nab - $(xiq t.xiq, xaq [i.xiq xaq]) - =+ huy=(~(case-to-aeon ze lim dom ran) q.mot) - ?~ huy - =+ ptr=[%ud +(let.dom)] - %= $ - xiq t.xiq - xaq [[p.i.xiq [%| ptr q.mot r.mot s.mot]] xaq] - ..wake =+ ^= ear - (~(lobes-at-path ze lim dom ran) let.dom r.p.q.i.xiq) - ?: =(s.p.q.i.xiq ear) ..wake - =+ fud=(~(make-nako ze lim dom ran) u.nab let.dom) - (bleb p.i.xiq let.dom fud) - == + | + =+ mot=`moot`p.q.i.xiq + =+ nab=(case-to-aeon:ze p.mot) + ?~ nab + $(xiq t.xiq, xaq [i.xiq xaq]) + =+ huy=(case-to-aeon:ze q.mot) + ?~ huy + =+ ptr=[%ud +(let.dom)] %= $ xiq t.xiq - ..wake =- (blub:- p.i.xiq) - =+ ^= ear - (~(lobes-at-path ze lim dom ran) u.huy r.p.q.i.xiq) - ?: =(s.p.q.i.xiq ear) (blub p.i.xiq) - =+ fud=(~(make-nako ze lim dom ran) u.nab u.huy) - (bleb p.i.xiq +(u.nab) fud) + xaq [[p.i.xiq [%| ptr q.mot r.mot s.mot]] xaq] + ..wake =+ ^= ear + (lobes-at-path:ze let.dom r.p.q.i.xiq) + ?: =(s.p.q.i.xiq ear) ..wake + =+ fud=(make-nako:ze u.nab let.dom) + (bleb p.i.xiq let.dom fud) == + %= $ + xiq t.xiq + ..wake =- (blub:- p.i.xiq) + =+ ^= ear + (lobes-at-path:ze u.huy r.p.q.i.xiq) + ?: =(s.p.q.i.xiq ear) (blub p.i.xiq) + =+ fud=(make-nako:ze u.nab u.huy) + (bleb p.i.xiq +(u.nab) fud) == - -- - :: - ++ do - |= [now=@da [who=ship him=ship] syd=@tas ruf=raft] - =+ ^= rug ^- rung - =+ rug=(~(get by hoy.ruf) him) - ?^(rug u.rug *rung) - =+ ^= red ^- rede - =+ yit=(~(get by rus.rug) syd) - ?^(yit u.yit `rede`[~2000.1.1 ~ [~ *rind] *dome]) - ((de now ~ ~) [who him] syd red ran.ruf) - :: - ++ posh - |= [him=ship syd=desk red=rede ruf=raft] - ^- raft - =+ ^= rug ^- rung - =+ rug=(~(get by hoy.ruf) him) - ?^(rug u.rug *rung) - ruf(hoy (~(put by hoy.ruf) him rug(rus (~(put by rus.rug) syd red)))) - :: - ++ un :: domestic ship - |= [who=@p now=@da ruf=raft] - =+ ^= yar ^- room - =+ yar=(~(get by fat.ruf) who) - ?~(yar *room u.yar) + == + ++ ze |% - ++ abet ruf(fat (~(put by fat.ruf) who yar)) - ++ pish - |= [syd=@ta red=rede run=rang] - %_(+> dos.yar (~(put by dos.yar) syd [qyx.red dom.red]), ran.ruf run) + ++ aeon-to-tako ~(got by hit.dom) + ++ aeon-to-yaki (cork aeon-to-tako tako-to-yaki) + ++ lobe-to-blob ~(got by lat.ran) :: grab blob + ++ tako-to-yaki ~(got by hut.ran) + ++ lobe-to-silk + |= a=lobe + |- ^- silk + =+ bob=(~(got by lat.ran) a) + ?- -.bob + %direct [%done ~ q.bob] + %indirect [%done ~ q.bob] + %delta [%pact $(a q.bob) [%done ~ r.bob]] + == :: - ++ wake - =+ saz=(turn (~(tap by dos.yar) ~) |=([a=@tas b=*] a)) - =| moz=(list move) - =< [moz ..wake] - |- ^+ + - ?~ saz + - =+ sog=abet:wake:(di i.saz) - $(saz t.saz, moz (weld moz -.sog), ..wake (pish i.saz +.sog ran.ruf)) + ++ make-direct :: make blob + |= p=cage + ^- blob + [%direct (mug p) p] :: - ++ di - |= syd=@ta - =+ ^= saq ^- dojo - =+ saq=(~(get by dos.yar) syd) - ?~(saq *dojo u.saq) - ((de now hun.yar hez.yar) [who who] syd [now p.saq ~ q.saq] ran.ruf) + ++ make-delta :: make blob delta + |= [p=lobe q=cage] + ^- blob + =+ t=[%delta 0 p q] + =+ ^= has + %^ cat 7 (sham [%blob q.q.q]) + (sham [%lobe p]) + [%delta has p q] + :: + ++ make-yaki :: make yaki + |= [p=(list tako) q=(map path lobe) t=@da] + ^- yaki + =+ ^= has + %^ cat 7 (sham [%yaki (roll p add) q t]) + (sham [%tako (roll p add) q t]) + [p q has t] + :: + ++ apply-changes :: apply-changes:ze + |= lar=(list ,[p=path q=misu]) :: store changes + ^- (map path blob) + =+ ^= hat :: current state + ?: =(let.dom 0) :: initial commit + ~ :: has nothing + =< q + %- aeon-to-yaki + let.dom + =- =+ sar=(sa (turn lar |=([p=path *] p))) :: changed paths + %+ roll (~(tap by hat) ~) :: find unchanged + =< .(bat bar) + |= [[pat=path gar=lobe] bat=(map path blob)] + ?: (~(has in sar) pat) :: has update + bat + %+ ~(put by bat) pat + ~|((crip ) (lobe-to-blob gar)) :: use original + ^= bar ^- (map path blob) + %+ roll lar + |= [[pat=path mys=misu] bar=(map path blob)] + ^+ bar + ?- -.mys + %ins :: insert if not exist + ?: (~(has by bar) pat) !! :: + ?: (~(has by hat) pat) !! :: + %+ ~(put by bar) pat + %- make-direct + ?: &(?=(%mime -.p.mys) =([%hook ~] (slag (dec (lent pat)) pat))) + `cage`[%hook [%atom %t] +.+.q.q.p.mys] + ?: &(?=(%mime -.p.mys) =([%hoon ~] (slag (dec (lent pat)) pat))) + `cage`[%hoon [%atom %t] +.+.q.q.p.mys] + p.mys + %del :: delete if exists + ?. |((~(has by hat) pat) (~(has by bar) pat)) !! + (~(del by bar) pat) + %dif :: mutate, must exist + =+ ber=(~(get by bar) pat) :: XX typed + ?~ ber + =+ har=(~(get by hat) pat) + ?~ har !! + %+ ~(put by bar) pat + (make-delta u.har p.mys) + %+ ~(put by bar) pat + (make-delta p.u.ber p.mys) + == + :: + ++ as-arch + ^- arch + :+ p.ank.dom + ?~(q.ank.dom ~ [~ p.u.q.ank.dom]) + |- ^- (map ,@ta ,~) + ?~ r.ank.dom ~ + [[p.n.r.ank.dom ~] $(r.ank.dom l.r.ank.dom) $(r.ank.dom r.r.ank.dom)] + :: + ++ case-to-aeon :: case-to-aeon:ze + |= lok=case :: act count through + ^- (unit aeon) + ?- -.lok + %da + ?: (gth p.lok lim) ~ + |- ^- (unit aeon) + ?: =(0 let.dom) [~ 0] :: avoid underflow + ?: %+ gte p.lok + =< t + %- aeon-to-yaki + let.dom + [~ let.dom] + $(let.dom (dec let.dom)) + :: + %tas (~(get by lab.dom) p.lok) + %ud ?:((gth p.lok let.dom) ~ [~ p.lok]) + == + :: + ++ checkout-ankh + |= hat=(map path cage) + ^- ankh + %- cosh + %+ roll (~(tap by hat) ~) + |= [[pat=path zar=cage] ank=ankh] + ^- ankh + %- cosh + ?~ pat + ank(q [~ (sham q.q.zar) zar]) + =+ nak=(~(get by r.ank) i.pat) + %= ank + r %+ ~(put by r.ank) i.pat + $(pat t.pat, ank (fall nak *ankh)) + == + :: + ++ cosh + |= ank=ankh + %_ ank + p + ^- cash + %+ mix ?~(q.ank 0 p.u.q.ank) + =+ axe=1 + |- ^- cash + ?~ r.ank *@ + ;: mix + (shaf %dash (mix axe (shaf %dush (mix p.n.r.ank p.q.n.r.ank)))) + $(r.ank l.r.ank, axe (peg axe 2)) + $(r.ank r.r.ank, axe (peg axe 3)) + == + == + :: + ++ edit :: edit:ze + |= [wen=@da lem=nuri] :: edit + ^- [(unit (map path lobe)) _..ze] + ?- -.lem + & =^ yak lat.ran :: merge objects + %+ forge-yaki wen + ?: =(let.dom 0) :: initial import + [~ p.lem] + [(some r:(aeon-to-yaki let.dom)) p.lem] + ?. ?| =(0 let.dom) + !=((lent p.yak) 1) + !(equiv q.yak q:(aeon-to-yaki let.dom)) + == + `..ze :: silently ignore + =: let.dom +(let.dom) + hit.dom (~(put by hit.dom) +(let.dom) r.yak) + hut.ran (~(put by hut.ran) r.yak yak) + == + [`q.yak ..ze] + :: +>.$(ank (checkout-ankh q.yak)) + | ?< (~(has by lab.dom) p.lem) + [~ ..ze(lab.dom (~(put by lab.dom) p.lem let.dom))] + == + :: + ++ equiv :: test paths + |= [p=(map path lobe) q=(map path lobe)] + ^- ? + =- ?. qat %.n + %+ levy (~(tap by q) ~) + |= [pat=path lob=lobe] + (~(has by p) pat) + ^= qat + %+ levy (~(tap by p) ~) + |= [pat=path lob=lobe] + =+ zat=(~(get by q) pat) + ?~ zat %.n + =(u.zat lob) + :: =((lobe-to-cage u.zat) (lobe-to-cage lob)) + :: + ++ forge-nori :: forge-nori:ze + |= yak=yaki :: forge nori + ^- nori + !! + :: ?~ p.yak !! :: no parent, no diff + :: :+ %& *cart :: diff w/ 1st parent + :: (~(tap by (diff-yakis (tako-to-yaki i.p.yak) yak)) ~) + :: + ++ forge-yaki :: forge-yaki:ze + |= [wen=@da par=(unit tako) lem=suba] :: forge yaki + =+ ^= per + ?~ par ~ + ~[u.par] + =+ gar=(update-lat (apply-changes q.lem) lat.ran) + :- %^ make-yaki per +.gar wen :: from existing diff + -.gar :: fix lat + :: + ++ lobes-at-path :: lobes-at-path:ze + |= [yon=aeon pax=path] :: data at path + ^- (map path lobe) + ?: =(0 yon) ~ + %- mo + %+ skim + %. ~ + %~ tap by + =< q + %- aeon-to-yaki + yon + |= [p=path q=lobe] + ?| ?=(~ pax) + ?& !?=(~ p) + =(-.pax -.p) + $(p +.p, pax +.pax) + == == + :: + ++ make-nako :: gack a through b + |= [a=aeon b=aeon] + ^- [(map aeon tako) aeon (set yaki) (set blob)] + :^ hit.dom + let.dom + (sa `(list yaki)`(turn (~(tap by hut.ran)) |=([tako yaki] +<+))) + (sa `(list blob)`(turn (~(tap by lat.ran)) |=([lobe blob] +<+))) + :: + ++ query :: query:ze + |= ren=?(%u %v %x %y %z) :: endpoint query + ^- (unit cage) + ?- ren + %u [~ %rang !>(ran)] + %v [~ %dome !>(dom)] + %x ?~(q.ank.dom ~ [~ q.u.q.ank.dom]) + %y [~ %arch !>(as-arch)] + %z [~ %ankh !>(ank.dom)] + == + :: + ++ reachable-takos :: reachable + |= p=tako :: XX slow + ^- (set tako) + =+ y=(tako-to-yaki p) + =+ t=(~(put in *(set tako)) p) + %+ roll p.y + =< .(s t) + |= [q=tako s=(set tako)] + ?: (~(has in s) q) :: already done + s :: hence skip + (~(uni in s) ^$(p q)) :: otherwise traverse + :: + ++ read :: read:ze + |= mun=mood :: read at point + ^- (unit cage) + ?: ?=(%v p.mun) + [~ %dome !>(dom)] + ?: &(?=(%w p.mun) !?=(%ud -.q.mun)) + ?^(r.mun ~ [~ %aeon !>(let.dom)]) + ?: ?=(%w p.mun) + =+ ^= yak + %- aeon-to-yaki + let.dom + ?^(r.mun ~ [~ %w !>([t.yak (forge-nori yak)])]) + (query(ank.dom ank:(descend-path:(zu ank.dom) r.mun)) p.mun) + :: + ++ read-at-aeon :: read-at-aeon:ze + |= [yon=aeon mun=mood] :: seek and read + ^- (unit cage) + ?: &(?=(%w p.mun) !?=(%ud -.q.mun)) :: NB only for speed + ?^(r.mun ~ [~ %aeon !>(yon)]) + %+ biff + (rewind yon) + |= a=_+>.$ + (read:a mun) + :: + ++ rewind :: rewind:ze + |= yon=aeon :: rewind to aeon + ^- (unit ,_+>) + ?: =(let.dom yon) `+> + ?: (gth yon let.dom) !! :: don't have version + =+ hat=q:(aeon-to-yaki yon) + ?: (~(any by hat) |=(a=lobe ?=(%delta [-:(lobe-to-blob a)]))) + ~ + =+ ^- (map path cage) + %- ~(run by hat) + |= a=lobe + =+ (lobe-to-blob a) + ?-(-.- %direct q.-, %indirect q.-, %delta !!) + `+>.$(ank.dom (checkout-ankh -), let.dom yon) + :: + ++ update-lat :: update-lat:ze + |= [lag=(map path blob) sta=(map lobe blob)] :: fix lat + ^- [(map lobe blob) (map path lobe)] + %+ roll (~(tap by lag) ~) + =< .(lut sta) + |= [[pat=path bar=blob] [lut=(map lobe blob) gar=(map path lobe)]] + ?~ (~(has by lut) p.bar) + [lut (~(put by gar) pat p.bar)] + :- (~(put by lut) p.bar bar) + (~(put by gar) pat p.bar) + :: + ++ zu :: filesystem + |= ank=ankh :: filesystem state + =| ram=path :: reverse path into + |% + ++ descend :: descend + |= lol=@ta + ^+ +> + =+ you=(~(get by r.ank) lol) + +>.$(ram [lol ram], ank ?~(you [*cash ~ ~] u.you)) + :: + ++ descend-path :: descend recursively + |= way=path + ^+ +> + ?~(way +> $(way t.way, +> (descend i.way))) + -- + :: + ++ me :: merge ali into bob + |= ali=(pair ship desk) :: from + =+ bob=`(pair ship desk)`[who syd] :: to + =+ dat=(fall (~(get by mer) ali) *mery) :: merge data + =| don=? :: keep going + |% + ++ abet + ^+ ..me + ?~ don + ..me(mer (~(put by mer) ali dat)) + ..me(mer (~(del by mer) ali), reg :_(reg [hen %mere gon.dat])) + :: + ++ route + |= [sat=term res=(each riot (each bead (list tank)))] + ^+ +>.$ + ?+ sat ~|((crip <[%bad-stage sat]>) !!) + %ali %- fetched-ali ?> ?=(%& -.res) p.res + %diff-ali %- diffed-ali ?> ?=(%| -.res) p.res + %diff-bob %- diffed-bob ?> ?=(%| -.res) p.res + %merge %- merged ?> ?=(%| -.res) p.res + %checkout %- checked-out ?> ?=(%| -.res) p.res + %ergo %- ergoed ?> ?=(%| -.res) p.res + == + :: + ++ start + |= gem=germ + ^+ +> + ?: (~(has by mer) ali) + (error:he %already-merging ~) + ?: &(=(0 let.dom) !?=(%init gem)) + (error:he %no-bob-desk ~) + =. gem.dat gem + =. cas.dat [%da now] + ?: ?=(%init gem.dat) + fetch-ali + =+ (~(get by hit.dom) let.dom) + ?~ - + (error:he %no-bob--version ~) + =+ (~(get by hut.ran) u.-) + ?~ - + (error:he %no-bob-commit ~) + fetch-ali(bob.dat u.-) + :: + ++ fetch-ali + ^+ . + =- %_(+ tag [- tag]) + :* hen [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %ali ~] + %c %warp [p.bob p.ali] q.ali + `[%& %v cas.dat /] + == + :: + ++ fetched-ali + |= rot=riot + ^+ +> + ?~ rot + (error:he %bad-fetch-ali ~) + =+ ^= dum + %- (hard ,[ank=* let=@ud hit=(map ,@ud tako) lab=(map ,@tas ,@ud)]) + q.q.r.u.rot + ?: =(0 let.dum) + (error:he %no-ali-desk ~) + =+ (~(get by hit.dum) let.dum) + ?~ - + (error:he %no-ali-version ~) + =+ (~(get by hut.ran) u.-) + ?~ - + (error:he %no-ali-commit ~) + =. ali.dat u.- + |- + ?- gem.dat + %init + ?. =(let.dom 0) + (error:he %bad-init-merge ~) + =. new.dat ali.dat + =. hut.ran (~(put by hut.ran) r.new.dat new.dat) + =. erg.dat (~(run by q.ali.dat) |=(lobe %&)) + checkout + :: + %fine + ?: =(r.ali.dat r.bob.dat) + (done:he ~) + ?: (~(has in (reachable-takos r.bob.dat)) r.ali.dat) + (done:he ~) + ?. (~(has in (reachable-takos r.ali.dat)) r.bob.dat) + (error:he %bad-fine-merge ~) + =. new.dat ali.dat + =. erg.dat + %- ~(uni by `(map path ,?)`(~(run by q.bob.dat) |=(lobe %|))) + `(map path ,?)`(~(run by q.ali.dat) |=(lobe %&)) + checkout + :: + %this + ?: =(r.ali.dat r.bob.dat) + (done:he ~) + ?: (~(has in (reachable-takos r.bob.dat)) r.ali.dat) + (done:he ~) + =. new.dat (make-yaki [r.ali.dat r.bob.dat ~] q.bob.dat now) + =. hut.ran (~(put by hut.ran) r.new.dat new.dat) + =. erg.dat ~ + checkout + :: + %that + ?: =(r.ali.dat r.bob.dat) + (done:he ~) + ?: (~(has in (reachable-takos r.bob.dat)) r.ali.dat) + (done:he ~) + =. new.dat (make-yaki [r.ali.dat r.bob.dat ~] q.ali.dat now) + =. hut.ran (~(put by hut.ran) r.new.dat new.dat) + =. erg.dat + %- ~(uni by `(map path ,?)`(~(run by q.bob.dat) |=(lobe %|))) + `(map path ,?)`(~(run by q.ali.dat) |=(lobe %&)) + checkout + :: + ?(%meet %mate %meld) + ?: =(r.ali.dat r.bob.dat) + (done:he ~) + ?: (~(has in (reachable-takos r.bob.dat)) r.ali.dat) + (done:he ~) + ?: (~(has in (reachable-takos r.ali.dat)) r.bob.dat) + $(gem.dat %fine) + =+ r=(find-merge-points:he ali.dat bob.dat) + ?~ r + (error:he %merge-no-merge-base ~) + ?. ?=([* ~ ~] r) + =+ (lent (~(tap in `(set yaki)`r))) + (error:he %merge-criss-cross >[-]< ~) + =. bas.dat n.r + diff-ali + == + :: + ++ diff-bas + |= [nam=term yak=yaki] + ^+ +> + =- %_(+>.$ tag [- tag]) + :* hen + =+ (cat 3 %diff- nam) + [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali - ~] + %f %exec p.bob ~ %tabl + ^- (list (pair silk silk)) + %+ murn (~(tap by q.bas.dat)) + |= [pax=path lob=lobe] + ^- (unit (pair silk silk)) + =+ (~(get by q.yak) pax) + ?~ - + ~ + ?: =(lob u.-) + ~ + :- ~ + :- [%done ~ %path !>(pax)] + [%diff (lobe-to-silk lob) (lobe-to-silk u.-)] + == + :: + ++ diff-ali + ^+ . + (diff-bas %ali ali.dat) + :: + ++ diffed-ali + |= res=(each bead (list tank)) + ^+ +> + ?: ?=(%| -.res) + (error:he %diff-ali-bad-made leaf/"merge diff ali failed" p.res) + =+ cay=q.p.res + ?@ p.cay + (error:he %diff-ali-bad-marc >p.cay< ~) + =| can=(map path cage) + => + |- ^+ + + ?~ p.p.cay + +.$(can ~) + =+ tal=%_($ cay [[%tabl t.p.p.cay] (slot 3 q.cay)]) + ?: ?=(%| -.gon.dat.tal) + tal + ?. ?=(%path p.i.p.p.cay) + +.$(+>.$ (error:he %diff-ali-strange-marc-a >p.i.p.p.cay< ~)) + ?. ?=(@ q.i.p.p.cay) + +.$(+>.$ (error:he %diff-ali-strange-marc-b >q.i.p.p.cay< ~)) + =+ coy=(slot 2 q.cay) + ?@ q.coy + +.$(+>.$ (error:he %diff-ali-strange-coy ~)) + %_ +.$ + can + %+ ~(put by can:tal) + ((hard path) -.q.coy) + [q.i.p.p.cay (slot 3 coy)] + == + ?: ?=(%| -.gon.dat) + +>.$ + =. new.dal.dat + %- mo + %+ skip (~(tap by q.ali.dat)) + |= [pax=path lob=lobe] + (~(has by q.bas.dat) pax) + =. can.dal.dat can + =. old.dal.dat + %- mo ^- (list ,[path ~]) + %+ murn (~(tap by q.bas.dat)) + |= [pax=path lob=lobe] + ?. =(~ (~(get by q.ali.dat) pax)) + ~ + (some pax ~) + diff-bob + :: + ++ diff-bob + ^+ . + (diff-bas %bob bob.dat) + :: + ++ diffed-bob + |= res=(each bead (list tank)) + ^+ +> + ?: ?=(%| -.res) + (error:he %diff-bob-bad-made leaf/"merge diff bob failed" p.res) + =+ cay=q.p.res + ?@ p.cay + (error:he %diff-bob-bad-marc >p.cay< ~) + =| can=(map path cage) + => + |- ^+ + + ?~ p.p.cay + +.$(can ~) + =+ tal=%_($ cay [[%tabl t.p.p.cay] (slot 3 q.cay)]) + ?: ?=(%| -.gon.dat.tal) + tal + ?. ?=(%path p.i.p.p.cay) + +.$(+>.$ (error:he %diff-bob-strange-marc-a >p.i.p.p.cay< ~)) + ?. ?=(@ q.i.p.p.cay) + +.$(+>.$ (error:he %diff-bob-strange-marc-b >q.i.p.p.cay< ~)) + =+ coy=(slot 2 q.cay) + ?@ q.coy + +.$(+>.$ (error:he %diff-bob-strange-coy ~)) + %_ +.$ + can + %+ ~(put by can:tal) + ((hard path) -.q.coy) + [q.i.p.p.cay (slot 3 coy)] + == + ?: ?=(%| -.gon.dat) + +>.$ + =. new.dob.dat + %- mo + %+ skip (~(tap by q.bob.dat)) + |= [pax=path lob=lobe] + (~(has by q.bas.dat) pax) + =. can.dob.dat can + =. old.dob.dat + %- mo ^- (list ,[path ~]) + %+ murn (~(tap by q.bas.dat)) + |= [pax=path lob=lobe] + ?. =(~ (~(get by q.bob.dat) pax)) + ~ + (some pax ~) + merge + :: + ++ merge + ^+ . + |- ^+ +.$ + ?+ gem.dat ~| %merge-weird-gem !! + %meet + =+ ^= bof + %- %~ int by + %- ~(uni by `(map path ,*)`new.dal.dat) + %- ~(uni by `(map path ,*)`can.dal.dat) + `(map path ,*)`old.dal.dat + %- ~(uni by `(map path ,*)`new.dob.dat) + %- ~(uni by `(map path ,*)`can.dob.dat) + `(map path ,*)`old.dob.dat + ?^ bof + (error:he %meet-conflict >(~(run by `(map path ,*)`bof) ,_~)< ~) + =+ ^- old=(map path lobe) + %+ roll (~(tap by (~(uni by old.dal.dat) old.dob.dat))) + =< .(old q.bas.dat) + |= [[pax=path ~] old=(map path lobe)] + (~(del by old) pax) + =^ hat lat.ran + ^- [(map path lobe) (map lobe blob)] + %+ roll (~(tap by (~(uni by can.dal.dat) can.dob.dat))) + =< .(lat lat.ran) + |= [[pax=path cay=cage] hat=(map path lobe) lat=(map lobe blob)] + =+ ^= bol + =+ (~(get by q.bas.dat) pax) + ?~ - + ~| %meet-strange-diff-no-base + !! + (make-delta u.- cay) + [(~(put by hat) pax p.bol) (~(put by lat) p.bol bol)] + =. hat + %- ~(uni by old) + %- ~(uni by new.dal.dat) + %- ~(uni by new.dob.dat) + hat + =+ ^- del=(map path ,?) + (~(run by (~(uni by old.dal.dat) old.dob.dat)) |=(~ %|)) + =. new.dat + (make-yaki [r.ali.dat r.bob.dat ~] hat now) + =. hut.ran (~(put by hut.ran) r.new.dat new.dat) + =. erg.dat %- ~(uni by del) + `(map path ,?)`(~(run by hat) |=(lobe %&)) + checkout + :: + ?(%mate %meld) + =+ ^= bof + %- %~ int by + %- ~(uni by `(map path ,*)`new.dal.dat) + %- ~(uni by `(map path ,*)`can.dal.dat) + `(map path ,*)`old.dal.dat + %- ~(uni by `(map path ,*)`new.dob.dat) + %- ~(uni by `(map path ,*)`can.dob.dat) + `(map path ,*)`old.dob.dat + ?~ bof + $(gem.dat %meet) + =- %_(+.$ tag [- tag]) + :* hen + [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %merge ~] + %f %exec p.bob ~ %tabl + ^- (list (pair silk silk)) + %+ turn (~(tap by (~(int by can.dal.dat) can.dob.dat))) + |= [pax=path *] + ^- (pair silk silk) + =+ cal=(~(got by can.dal.dat) pax) + =+ cob=(~(got by can.dob.dat) pax) + =+ ^= for + =+ (slag (dec (lent pax)) pax) + ?~(- %$ i.-) + :- [%done ~ %path !>(pax)] + [%join for [%done ~ cal] [%done ~ cob]] + == + == + :: + ++ merged + |= res=(each bead (list tank)) + ^+ +> + ?: ?=(%| -.res) + (error:he %merge-bad-made leaf/"merging failed" p.res) + =+ cay=q.p.res + ?@ p.cay + (error:he %merge-bad-marc >p.cay< ~) + =| bof=(map path (unit cage)) + => + |- ^+ + + ?~ p.p.cay + +.$(bof ~) + =+ tal=%_($ cay [[%tabl t.p.p.cay] (slot 3 q.cay)]) + ?: ?=(%| -.gon.dat.tal) + tal + ?. ?=(%path p.i.p.p.cay) + +.$(+>.$ (error:he %merge-strange-marc-a >p.i.p.p.cay< ~)) + ?. ?=(@ q.i.p.p.cay) + +.$(+>.$ (error:he %merge-strange-marc-b >q.i.p.p.cay< ~)) + =+ coy=(slot 2 q.cay) + ?@ q.coy + +.$(+>.$ (error:he %merge-strange-coy ~)) + %_ +.$ + bof + %+ ~(put by bof:tal) + ((hard path) -.q.coy) + ?: ?=(%null q.i.p.p.cay) + ~ + `[q.i.p.p.cay (slot 3 coy)] + == + ?: ?=(%| -.gon.dat) + +>.$ + =+ ^- con=(map path ,*) :: 2-change conflict + %- mo + %+ skim (~(tap by bof)) + |=([pax=path cay=(unit cage)] ?=(~ cay)) + =+ ^- cas=(map path lobe) :: conflict base + %- ~(urn by con) + |= [pax=path *] + (~(got by q.bas.dat) pax) + =. con :: add/del conflict + %- ~(uni by con) + %- mo ^- (list ,[path *]) + %+ skim (~(tap by old.dal.dat)) + |= [pax=path ~] + ?: (~(has by new.dob.dat) pax) + ~| %strange-add-and-del + !! + (~(has by can.dob.dat) pax) + =. con :: add/del conflict + %- ~(uni by con) + %- mo ^- (list ,[path *]) + %+ skim (~(tap by old.dob.dat)) + |= [pax=path ~] + ?: (~(has by new.dal.dat) pax) + ~| %strange-del-and-add + !! + (~(has by can.dal.dat) pax) + =. con :: add/add conflict + %- ~(uni by con) + %- mo ^- (list ,[path *]) + %+ skip (~(tap by (~(int by new.dal.dat) new.dob.dat))) + |= [pax=path *] + =((~(got by new.dal.dat) pax) (~(got by new.dob.dat) pax)) + ?: &(?=(%mate gem.dat) ?=(^ con)) + =+ (turn (~(tap by `(map path ,*)`con)) |=([path *] >[+<-]<)) + (error:he %mate-conflict -) + =+ ^- old=(map path lobe) :: oldies but goodies + %+ roll (~(tap by (~(uni by old.dal.dat) old.dob.dat))) + =< .(old q.bas.dat) + |= [[pax=path ~] old=(map path lobe)] + (~(del by old) pax) + =+ ^- can=(map path cage) :: content changes + %- ~(uni by can.dal.dat) + %- ~(uni by can.dob.dat) + %- mo + ^- (list (pair path cage)) + %+ murn (~(tap by bof)) + |= [pax=path cay=(unit cage)] + ^- (unit (pair path cage)) + ?~ cay + ~ + `[pax u.cay] + =^ hat lat.ran :: new content + ^- [(map path lobe) (map lobe blob)] + %+ roll (~(tap by can)) + =< .(lat lat.ran) + |= [[pax=path cay=cage] hat=(map path lobe) lat=(map lobe blob)] + =+ ^= bol + =+ (~(get by q.bas.dat) pax) + ?~ - + ~| %mate-strange-diff-no-base + !! + (make-delta u.- cay) + [(~(put by hat) pax p.bol) (~(put by lat) p.bol bol)] + =. hat :: all the content + %- ~(uni by old) + %- ~(uni by new.dal.dat) + %- ~(uni by new.dob.dat) + %- ~(uni by hat) + cas + =+ ^- del=(map path ,?) + (~(run by (~(uni by old.dal.dat) old.dob.dat)) |=(~ %|)) + =. gon.dat [%& (sa (turn (~(tap by con)) |=([path *] +<-)))] + =. new.dat + (make-yaki [r.ali.dat r.bob.dat ~] hat now) + =. hut.ran (~(put by hut.ran) r.new.dat new.dat) + =. erg.dat %- ~(uni by del) + `(map path ,?)`(~(run by hat) |=(lobe %&)) + checkout + :: + ++ checkout + ^+ . + =- %_(+ tag [- tag]) + :* hen + [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %checkout ~] + %f %exec p.bob ~ %tabl + ^- (list (pair silk silk)) + %+ turn (~(tap by q.new.dat)) + |= [a=path b=lobe] + ^- (pair silk silk) + [[%done ~ %path !>(a)] (lobe-to-silk b)] + == + :: + ++ checked-out + |= res=(each bead (list tank)) + ^+ +> + ?: ?=(%| -.res) + (error:he %checkout-bad-made leaf/"merge checkout failed" p.res) + =+ cay=q.p.res + ?@ p.cay + (error:he %patch-bad-marc >p.cay< ~) + =| can=(list ,[path cage]) + => + |- ^+ + + ?~ p.p.cay + +.$(can ~) + =+ tal=%_($ cay [[%tabl t.p.p.cay] (slot 3 q.cay)]) + ?: ?=(%| -.gon.dat.tal) + tal + ?. ?=(%path p.i.p.p.cay) + +.$(+>.$ (error:he %patch-strange-marc-a >p.i.p.p.cay< ~)) + ?. ?=(@ q.i.p.p.cay) + +.$(+>.$ (error:he %patch-strange-marc-b >q.i.p.p.cay< ~)) + =+ coy=(slot 2 q.cay) + ?@ q.coy + +.$(+>.$ (error:he %patch-strange-coy ~)) + %_ +.$ + can + :_ can:tal + :- ((hard path) -.q.coy) + [q.i.p.p.cay (slot 3 coy)] + == + ?: ?=(%| -.gon.dat) + +>.$ + =. let.dom +(let.dom) + =. hit.dom (~(put by hit.dom) let.dom r.new.dat) + =. ank.dat (checkout-ankh:ze (mo can)) + =. ank.dom ank.dat + ?~ hez + (done:he ~) + ergo + :: + ++ ergo + ^+ . + =- %_(+ tag [- tag]) + =+ zez=ze(ank.dom ank.dat) + :* hen + [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %ergo ~] + %f %exec p.bob ~ %tabl + ^- (list (pair silk silk)) + %+ turn (~(tap by erg.dat)) + |= [a=path b=?] + ^- (pair silk silk) + :- [%done ~ %path !>(a)] + ?. b + [%done ~ %null !>(~)] + :^ %cast %mime %done + `(need (read:zez %x [%ud let.dom] a)) + == + :: + ++ ergoed + |= res=(each bead (list tank)) + ^+ +> + ?: ?=(%| -.res) + (error:he %ergo-bad-made leaf/"merge ergo failed" p.res) + =+ cay=q.p.res + ?@ p.cay ~| %patch-bad-marc !! + =| can=(list ,[path (unit mime)]) + => + |- ^+ + + ?~ p.p.cay + +.$(can ~) + =+ tal=%_($ cay [[%tabl t.p.p.cay] (slot 3 q.cay)]) + ?: ?=(%| -.gon.dat.tal) + tal + ?. ?=(%path p.i.p.p.cay) + +.$(+>.$ (error:he %patch-strange-marc-a >p.i.p.p.cay< ~)) + ?. ?=(@ q.i.p.p.cay) + +.$(+>.$ (error:he %patch-strange-marc-b >p.i.p.p.cay< ~)) + =+ coy=(slot 2 q.cay) + ?@ q.coy + +.$(+>.$ (error:he %patch-strange-coy ~)) + %_ +.$ + can + :_ can:tal + :- ((hard path) -.q.coy) + ?. ?=(%mime q.i.p.p.cay) + ~ + `((hard mime) q:(slot 3 coy)) + == + ?~ hez + (error:he %ergo-no-hez ~) + ?: ?=(%| -.gon.dat) + +>.$ + %= +>.$ + don %| + reg [[u.hez %ergo who syd let.dom can] reg] + == + :: + ++ he + |% + ++ done + |= con=(set path) + ^+ ..he + ..he(don |, gon.dat [%& con]) + ++ error + |= [err=term tan=(list tank)] + ^+ ..he + ..he(don |, gon.dat [%| err >ali< >bob< tan]) + :: + ++ find-merge-points + |= [p=yaki q=yaki] :: maybe need jet + ^- (set yaki) + %- reduce-merge-points + =+ r=(reachable-takos r.p) + |- ^- (set yaki) + ?: (~(has in r) r.q) (~(put in *(set yaki)) q) + %+ roll p.q + |= [t=tako s=(set yaki)] + ?: (~(has in r) t) + (~(put in s) (tako-to-yaki t)) :: found + (~(uni in s) ^$(q (tako-to-yaki t))) :: traverse + :: + ++ reduce-merge-points + |= unk=(set yaki) :: maybe need jet + =| gud=(set yaki) + =+ ^= zar + ^- (map tako (set tako)) + %+ roll (~(tap in unk)) + |= [yak=yaki qar=(map tako (set tako))] + (~(put by qar) r.yak (reachable-takos r.yak)) + |- + ^- (set yaki) + ?~ unk gud + =+ bun=(~(del in `(set yaki)`unk) n.unk) + ?: %+ levy (~(tap by (~(uni in gud) bun)) ~) + |= yak=yaki + !(~(has in (~(got by zar) r.yak)) r.n.unk) + :: I'm pretty sure this is just wrong, but given + :: the relative intelligence levels of me and Jared, + :: I'm going to keep it here for a little bit + :: ?: %+ roll (~(tap by (~(uni in gud) bun)) ~) + :: |= [tak=yaki god=?] :: only good + unknown + :: ^- ? + :: ?. god god + :: (~(has in (~(got by zar) r.tak)) n.unk) + :: Also, I'd be curious how often this actually + :: elminates merge points + $(gud (~(put in gud) n.unk), unk bun) + $(unk bun) + -- + -- -- -- - :::::::::::::::::::::::::::::::::::::::::::::::::::::::: - :: section 4cA, filesystem vane :: - :: :: - =| :: instrument state - $: %0 :: vane version - ruf=raft :: revision tree - == :: - |= [now=@da eny=@ ski=sled] :: activate - ^? :: opaque core - |% :: - ++ call :: handle request - |= $: hen=duct - hic=(hypo (hobo kiss)) - == - => %= . :: XX temporary - q.hic - ^- kiss - ?: ?=(%soft -.q.hic) - ((hard kiss) p.q.hic) - ?: (~(nest ut -:!>(*kiss)) | p.hic) q.hic - ~& [%clay-call-flub (,@tas `*`-.q.hic)] - ((hard kiss) q.hic) - == - ^- [p=(list move) q=_..^$] - ?- -.q.hic - %init - :_ ..^$(fat.ruf (~(put by fat.ruf) p.q.hic [hen ~ ~])) - =+ bos=(sein p.q.hic) - ~& [%bos bos p.q.hic] - ?: =(bos p.q.hic) ~ - ^- (list move) - %+ turn (limo ~[%main %arvo %try]) - |= syd=@tas - [hen %pass / %c %font p.q.hic syd bos syd] - :: - %font - ?: (~(has by sor.ruf) +.q.hic) `..^$ - :_ ..^$(sor.ruf (~(put by sor.ruf) +.q.hic hen)) - :~ :* hen %pass - /auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic]/y - %c %warp [p.q.hic r.q.hic] s.q.hic - `[%& %y [%da now] /] - == - == - :: - ?(%info %into) - ?: =(%$ q.q.hic) - ?. ?=(%into -.q.hic) [~ ..^$] - =+ yar=(need (~(get by fat.ruf) p.q.hic)) - [~ ..^$(fat.ruf (~(put by fat.ruf) p.q.hic yar(hez [~ hen])))] - =^ mos ruf - =+ une=(un p.q.hic now ruf) - =+ ^= zat - (exec:(di:wake:une q.q.hic) hen now r.q.hic) - =+ zot=abet.zat - :- -.zot - =. une (pish:une q.q.hic +.zot ran.zat) - abet:une(hez.yar ?.(=(%into -.q.hic) hez.yar.une [~ hen])) - [mos ..^$] - :: - ?(%ingo %invo) :: not yet used - ?: =(%$ q.q.hic) - ?. ?=(%invo -.q.hic) [~ ..^$] - =+ yar=(need (~(get by fat.ruf) p.q.hic)) - [~ ..^$(fat.ruf (~(put by fat.ruf) p.q.hic yar(hez [~ hen])))] - =^ mos ruf - =+ une=(un p.q.hic now ruf) - =+ ^= zat - (exec:(di:wake:une q.q.hic) hen now r.q.hic) - =+ zot=abet:zat - :- -.zot - =. une (pish:une q.q.hic +.zot ran.zat) - abet:une(hez.yar ?.(=(%invo -.q.hic) hez.yar.une [~ hen])) - [mos ..^$] - :: - %merg :: direct state up - =^ mos ruf - =+ une=(un p.q.hic now ruf) - =+ ^= zat - (exem:(di:wake:une q.q.hic) hen now r.q.hic) - =+ zot=abet.zat - :- -.zot - =. une (pish:une q.q.hic +.zot ran.zat) - abet:une(hez.yar ?.(=(%into -.q.hic) hez.yar.une [~ hen])) - [mos ..^$] - :: - %plug - ?. (~(has by sor.ruf) +.q.hic) `..^$ - :_ ..^$(sor.ruf (~(del by sor.ruf) +.q.hic)) - =+ hyn=(~(got by sor.ruf) +.q.hic) - :~ :* hyn %pass - /auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic]/y - %c %warp [p.q.hic r.q.hic] s.q.hic ~ - == - :* hyn %pass - /auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic]/v - %c %warp [p.q.hic r.q.hic] s.q.hic ~ - == - == - :: - %warp - =^ mos ruf - ?: =(p.p.q.hic q.p.q.hic) - =+ une=(un p.p.q.hic now ruf) - =+ wex=(di:une p.q.q.hic) - =+ ^= wao - ?~ q.q.q.hic - (ease:wex hen) - (eave:wex hen u.q.q.q.hic) - =+ ^= woo - abet:wao - [-.woo abet:(pish:une p.q.q.hic +.woo ran.wao)] - =+ wex=(do now p.q.hic p.q.q.hic ruf) - =+ ^= woo - ?~ q.q.q.hic - abet:(ease:wex hen) - abet:(eave:wex hen u.q.q.q.hic) - [-.woo (posh q.p.q.hic p.q.q.hic +.woo ruf)] - [mos ..^$] - :: - %wart - ?> ?=(%re q.q.hic) - =+ ryf=((hard riff) s.q.hic) - :_ ..^$ - :~ :- hen - :^ %pass [(scot %p p.p.q.hic) (scot %p q.p.q.hic) r.q.hic] - %c - [%warp [p.p.q.hic p.p.q.hic] ryf] - == +:: +++ do + |= [now=@da hen=duct [who=ship him=ship] syd=@tas ruf=raft] + =+ ^= rug ^- rung + =+ rug=(~(get by hoy.ruf) him) + ?^(rug u.rug *rung) + =+ ^= red ^- rede + =+ yit=(~(get by rus.rug) syd) + ?^(yit u.yit `rede`[~2000.1.1 ~ [~ *rind] *dome ~ ~]) + ((de now hen ~ ~) [who him] syd red ran.ruf) +:: +++ posh + |= [him=ship syd=desk red=rede ruf=raft] + ^- raft + =+ ^= rug ^- rung + =+ rug=(~(get by hoy.ruf) him) + ?^(rug u.rug *rung) + ruf(hoy (~(put by hoy.ruf) him rug(rus (~(put by rus.rug) syd red)))) +:: +++ un :: domestic ship + |= [who=@p now=@da hen=duct ruf=raft] + =+ ^= yar ^- room + =+ yar=(~(get by fat.ruf) who) + ?~(yar *room u.yar) + |% + ++ abet ruf(fat (~(put by fat.ruf) who yar)) + ++ pish + |= [syd=@ta red=rede run=rang] + %_ +> + ran.ruf run + dos.yar + (~(put by dos.yar) syd [qyx.red dom.red dok.red mer.red]) == :: - ++ doze - |= [now=@da hen=duct] - ^- (unit ,@da) - ~ + ++ wake + =+ saz=(turn (~(tap by dos.yar) ~) |=([a=@tas b=*] a)) + =| moz=(list move) + =< [moz ..wake] + |- ^+ + + ?~ saz + + =+ sog=abet:wake:(di i.saz) + $(saz t.saz, moz (weld moz -.sog), ..wake (pish i.saz +.sog ran.ruf)) :: - ++ load - |= old=[%0 ruf=raft] - ^+ ..^$ - ..^$(ruf ruf.old) - :: - ++ scry :: inspect - |= [fur=(unit (set monk)) ren=@tas his=ship syd=desk lot=coin tyl=path] - ^- (unit (unit (pair mark ,*))) - =+ got=(~(has by fat.ruf) his) - =+ luk=?.(?=(%$ -.lot) ~ ((soft case) p.lot)) - ?~ luk [~ ~] - ?: =(%$ ren) - [~ ~] - =+ run=((soft care) ren) - ?~ run [~ ~] - %+ bind - %. [u.run u.luk tyl] - =< aver - ?: got - (di:(un his now ruf) syd) - (do now [his his] syd ruf) - |=(a=(unit) (bind a |=(b=* [%noun b]))) - :: - ++ stay [%0 ruf] - ++ take :: accept response - |= [tea=wire hen=duct hin=(hypo sign)] - ^- [p=(list move) q=_..^$] - ?: ?=([%auto @ @ @ @ ?(%y %v) ~] tea) - ?> ?=(%writ -.+.q.hin) - =+ our=(slav %p i.t.tea) - =* sud i.t.t.tea - =+ her=(slav %p i.t.t.t.tea) - =* syd i.t.t.t.t.tea - =+ une=(un our now ruf) - =+ wex=(di:une syd) - =+ wao=(sync:wex hen her sud p.q.hin) - =+ woo=abet:wao - [-.woo ..^$(ruf abet:(pish:une syd +.woo ran.wao))] - ?- -.+.q.hin - %crud - [[[hen %slip %d %flog +.q.hin] ~] ..^$] - :: - %waft - ?> ?=([@ @ ~] tea) - =+ syd=(need (slaw %tas i.tea)) - =+ inx=(need (slaw %ud i.t.tea)) - =+ ^= zat - =< wake - (knit:(do now p.+.q.hin syd ruf) [inx ((hard riot) q.+.q.hin)]) - =^ mos ruf - =+ zot=abet.zat - [-.zot (posh q.p.+.q.hin syd +.zot ruf)] - [mos ..^$(ran.ruf ran.zat)] :: merge in new obj - :: - %wake - =+ dal=(turn (~(tap by fat.ruf) ~) |=([a=@p b=room] a)) - =| mos=(list move) - |- ^- [p=(list move) q=_..^^$] - ?~ dal [mos ..^^$] - =+ une=(un i.dal now ruf) - =^ som une wake:une - $(dal t.dal, ruf abet:une, mos (weld som mos)) - :: - %writ - ?> ?=([@ @ *] tea) - =+ our=(need (slaw %p i.tea)) - =+ him=(need (slaw %p i.t.tea)) - :_ ..^$ - :~ :- hen - [%pass ~ %a [%want [our him] [%r %re %c t.t.tea] p.+.q.hin]] - == - :: - %went - ?: =(%good q.+.q.hin) [~ ..^$] - ~& [%clay-lost p.+.q.hin tea] - [~ ..^$] - == + ++ di + |= syd=@ta + =+ ^= saq ^- dojo + =+ saq=(~(get by dos.yar) syd) + ?~(saq *dojo u.saq) + %^ (de now hen hun.yar hez.yar) + [who who] + syd + [[now qyx.saq ~ dom.saq dok.saq mer.saq] ran.ruf] -- +-- +:::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: section 4cA, filesystem vane :: +:: :: +=| :: instrument state + $: %0 :: vane version + ruf=raft :: revision tree + == :: +|= [now=@da eny=@ ski=sled] :: activate +^? :: opaque core +|% :: +++ call :: handle request + |= $: hen=duct + hic=(hypo (hobo kiss)) + == + => %= . :: XX temporary + q.hic + ^- kiss + ?: ?=(%soft -.q.hic) + =+ + ~|([%bad-soft (,@t -.p.q.hic)] ((soft kiss) p.q.hic)) + ?~ - + ~& [%bad-softing (,@t -.p.q.hic)] !! + u.- + ?: (~(nest ut -:!>(*kiss)) | p.hic) q.hic + ~& [%clay-call-flub (,@tas `*`-.q.hic)] + ((hard kiss) q.hic) + == + ^- [p=(list move) q=_..^$] + ?- -.q.hic + %font + ?: (~(has by sor.ruf) +.q.hic) `..^$ + :_ ..^$(sor.ruf (~(put by sor.ruf) +.q.hic hen)) + :: XX pass %merg and handle response + :~ :* hen %pass + /auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic]/y + %c %warp [p.q.hic r.q.hic] s.q.hic + `[%& %y [%da now] /] + == + == + :: + %init + :_ ..^$(fat.ruf (~(put by fat.ruf) p.q.hic [hen ~ ~])) + =+ bos=(sein p.q.hic) + ~& [%bos bos p.q.hic] + ?: =(bos p.q.hic) ~ + ^- (list move) + %+ turn (limo ~[%main %arvo %try]) + |= syd=@tas + [hen %pass / %c %font p.q.hic syd bos syd] + :: + %info + ?: =(%$ q.q.hic) + [~ ..^$] + =^ mos ruf + =+ une=(un p.q.hic now hen ruf) + =+ ^= zat + (exec:(di:wake:une q.q.hic) now r.q.hic) + =+ zot=abet.zat + :- -.zot + =. une (pish:une q.q.hic +.zot ran.zat) + abet:une + [mos ..^$] + :: + %into + =+ yar=(~(got by fat.ruf) p.q.hic) + :_ ..^$(fat.ruf (~(put by fat.ruf) p.q.hic yar(hez [~ hen]))) + ^- (list move) + ?: =(%$ q.q.hic) + ~ + =+ dos=(~(get by dos.yar) q.q.hic) + ?: &(?=(^ dos) !=(0 +>-.+<.+.dos)) :: ank.s.u.dos + ?: =(ank.dom.u.dos q.q.hic) + ~ + :_ ~ + :* hen %slip %c %info p.q.hic q.q.hic %& + (khan-to-soba `ank.dom.u.dos `r.q.hic) + == + =+ cos=(khan-to-soba ~ `r.q.hic) + =+ ^- [one=(list ,[path miso]) two=(list ,[path miso])] + %+ skid q.cos + |= [a=path b=miso] + ?& ?=(%ins -.b) + ?=(%mime p.p.b) + =+ (slag (dec (lent a)) a) + ?| =([%hook ~] -) + =([%hoon ~] -) + == == + :~ [hen %slip %c %info p.q.hic q.q.hic %& p.cos one] + [hen %slip %c %info p.q.hic q.q.hic %& p.cos two] + == + :: + %merg :: direct state up + ?: =(%$ q.q.hic) + [~ ..^$] + =^ mos ruf + =+ une=(un p.q.hic now hen ruf) + =+ ^= zat + abet:(start:(me:ze:(di:wake:une q.q.hic) r.q.hic s.q.hic) t.q.hic) + =+ zot=abet.zat + :- -.zot + =. une (pish:une q.q.hic +.zot ran.zat) + abet:une + [mos ..^$] + :: + %plug + ?. (~(has by sor.ruf) +.q.hic) `..^$ + :_ ..^$(sor.ruf (~(del by sor.ruf) +.q.hic)) + =+ hyn=(~(got by sor.ruf) +.q.hic) + :~ :* hyn %pass + /auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic]/y + %c %warp [p.q.hic r.q.hic] s.q.hic ~ + == + :* hyn %pass + /auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic]/v + %c %warp [p.q.hic r.q.hic] s.q.hic ~ + == + == + :: + %warp + =^ mos ruf + ?: =(p.p.q.hic q.p.q.hic) + =+ une=(un p.p.q.hic now hen ruf) + =+ wex=(di:une p.q.q.hic) + =+ ^= wao + ?~ q.q.q.hic + ease:wex + (eave:wex u.q.q.q.hic) + =+ ^= woo + abet:wao + [-.woo abet:(pish:une p.q.q.hic +.woo ran.wao)] + =+ wex=(do now hen p.q.hic p.q.q.hic ruf) + =+ ^= woo + ?~ q.q.q.hic + abet:ease:wex + abet:(eave:wex u.q.q.q.hic) + [-.woo (posh q.p.q.hic p.q.q.hic +.woo ruf)] + [mos ..^$] + :: + %wart + ?> ?=(%re q.q.hic) + =+ ryf=((hard riff) s.q.hic) + :_ ..^$ + :~ :- hen + :^ %pass [(scot %p p.p.q.hic) (scot %p q.p.q.hic) r.q.hic] + %c + [%warp [p.p.q.hic p.p.q.hic] ryf] + == + == +:: +++ doze + |= [now=@da hen=duct] + ^- (unit ,@da) + ~ +:: +++ load + |= old=[%0 ruf=raft] + ^+ ..^$ + ..^$(ruf ruf.old) +:: +++ scry :: inspect + |= [fur=(unit (set monk)) ren=@tas his=ship syd=desk lot=coin tyl=path] + ^- (unit (unit cage)) + =+ got=(~(has by fat.ruf) his) + =+ luk=?.(?=(%$ -.lot) ~ ((soft case) p.lot)) + ?~ luk [~ ~] + ?: =(%$ ren) + [~ ~] + =+ run=((soft care) ren) + ?~ run [~ ~] + %. [u.run u.luk tyl] + =< aver + ?: got + (di:(un his now ~ ruf) syd) + (do now ~ [his his] syd ruf) +:: +++ stay [%0 ruf] +++ take :: accept response + |= [tea=wire hen=duct hin=(hypo sign)] + ^- [p=(list move) q=_..^$] + ?: ?=([%merge @ @ @ @ @ ~] tea) + ?> ?=(?(%writ %made) +<.q.hin) + =+ our=(slav %p i.t.tea) + =* syd i.t.t.tea + =+ her=(slav %p i.t.t.t.tea) + =* sud i.t.t.t.t.tea + =* sat i.t.t.t.t.t.tea + =+ une=(un our now hen ruf) + =+ wex=(di:une syd) + =+ dat=?-(+<.q.hin %writ [%& p.q.hin], %made [%| p.q.hin]) + =+ wao=abet:(route:(me:ze:wex her sud) sat dat) + =+ woo=abet:wao + [-.woo ..^$(ruf abet:(pish:une syd +.woo ran.wao))] + ?- -.+.q.hin + %crud + [[[hen %slip %d %flog +.q.hin] ~] ..^$] + :: + %made + ?~ tea !! + ?+ -.tea !! + %casting + ?> ?=([@ @ @ *] t.tea) + =+ who=(slav %p i.t.tea) + =+ syd=(slav %tas i.t.t.tea) + =+ wen=(slav %da i.t.t.t.tea) + =^ mos ruf + =+ une=(un who now hen ruf) + =+ ^= zat + (take-cast:(di:wake:une syd) wen t.t.t.t.tea p.q.hin) + =+ zot=abet.zat + [-.zot abet:(pish:une syd +.zot ran.zat)] + [mos ..^$] + :: + %diffing + ?> ?=([@ @ @ *] t.tea) + =+ who=(slav %p i.t.tea) + =+ syd=(slav %tas i.t.t.tea) + =+ wen=(slav %da i.t.t.t.tea) + =^ mos ruf + =+ une=(un who now hen ruf) + =+ ^= zat + (take-diff:(di:wake:une syd) wen t.t.t.t.tea p.q.hin) + =+ zot=abet.zat + [-.zot abet:(pish:une syd +.zot ran.zat)] + [mos ..^$] + :: + %patching + ?> ?=([@ @ ~] t.tea) + =+ who=(slav %p i.t.tea) + =+ syd=(slav %tas i.t.t.tea) + =^ mos ruf + ?: (~(has by fat.ruf) who) + =+ une=(un who now hen ruf) + =+ ^= zat + (take-patch:(di:wake:une syd) p.q.hin) + =+ zot=abet.zat + [-.zot abet:(pish:une syd +.zot ran.zat)] + =+ zax=(do now hen [who who] syd ruf) + =+ ^= zat + (take-patch:zax p.q.hin) + =+ zot=abet.zat + [-.zot (posh who syd +.zot ruf)] + [mos ..^$] + :: + %ergoing + ?> ?=([@ @ ~] t.tea) + =+ who=(slav %p i.t.tea) + =+ syd=(slav %tas i.t.t.tea) + =^ mos ruf + =+ une=(un who now hen ruf) + =+ ^= zat + (take-ergo:(di:wake:une syd) p.q.hin) + =+ zot=abet.zat + [-.zot abet:(pish:une syd +.zot ran.zat)] + [mos ..^$] + == + :: + %waft + ?> ?=([@ @ ~] tea) + =+ syd=(need (slaw %tas i.tea)) + =+ inx=(need (slaw %ud i.t.tea)) + =+ ^= zat + =< wake + (knit:(do now hen p.+.q.hin syd ruf) [inx ((hard riot) q.+.q.hin)]) + =^ mos ruf + =+ zot=abet.zat + [-.zot (posh q.p.+.q.hin syd +.zot ruf)] + [mos ..^$(ran.ruf ran.zat)] :: merge in new obj + :: + %wake + =+ dal=(turn (~(tap by fat.ruf) ~) |=([a=@p b=room] a)) + =| mos=(list move) + |- ^- [p=(list move) q=_..^^$] + ?~ dal [mos ..^^$] + =+ une=(un i.dal now hen ruf) + =^ som une wake:une + $(dal t.dal, ruf abet:une, mos (weld som mos)) + :: + %writ + ?> ?=([@ @ *] tea) + =+ our=(need (slaw %p i.tea)) + =+ him=(need (slaw %p i.t.tea)) + :_ ..^$ + :~ :- hen + [%pass ~ %a [%want [our him] [%r %re %c t.t.tea] p.+.q.hin]] + == + :: + %went + ?: =(%good q.+.q.hin) [~ ..^$] + ~& [%clay-lost p.+.q.hin tea] + [~ ..^$] + == +++ khan-to-soba + |= [ank=(unit ankh) kan=(unit khan)] + ^- soba + :- *cart + =| pax=path + |- ^- (list ,[p=path q=miso]) + ?~ ank + ?~ kan + ~ + =+ =+ (~(tap by dir.u.kan)) + |-(?~(+< ~ (weld ^$(pax [p.i pax], kan `q.i) $(+< t)))) + ?~ fil.u.kan + - + ?~ u.fil.u.kan + - + [[(flop pax) %ins u.u.fil.u.kan] -] + ?~ kan + =+ =+ (~(tap by r.u.ank)) + |-(?~(+< ~ (weld ^$(pax [p.i pax], ank `q.i) $(+< t)))) + ?~ q.u.ank + - + [[(flop pax) %del q.u.q.u.ank] -] + =+ %+ weld + =+ (~(tap by r.u.ank)) + |- ^- (list ,[p=path q=miso]) + ?~ +< ~ + %- weld :_ $(+< t) + ^$(pax [p.i pax], ank `q.i, kan (~(get by dir.u.kan) p.i)) + =+ (~(tap by dir.u.kan)) + |- ^- (list ,[p=path q=miso]) + ?~ +< ~ + ?: (~(has by r.u.ank) p.i) $(+< t) + %- weld :_ $(+< t) + ^$(pax [p.i pax], kan `q.i, ank ~) + ?~ q.u.ank + ?~ fil.u.kan + - + ?~ u.fil.u.kan + - + [[(flop pax) %ins u.u.fil.u.kan] -] + ?~ fil.u.kan + - + ?~ u.fil.u.kan + [[(flop pax) %del q.u.q.u.ank] -] + [[(flop pax) %mut q.u.q.u.ank u.u.fil.u.kan] -] +-- diff --git a/arvo/dill.hoon b/arvo/dill.hoon index cf5c95535..9d8d3822e 100644 --- a/arvo/dill.hoon +++ b/arvo/dill.hoon @@ -742,8 +742,8 @@ :: ++ scry |= [fur=(unit (set monk)) ren=@tas his=ship syd=desk lot=coin tyl=path] - ^- (unit (unit (pair mark ,*))) - [~ ~ [%tank >dug<]] + ^- (unit (unit cage)) + [~ ~ [%tank !>(>dug<)]] :: ++ stay [%1 our def dug] ++ take :: process move diff --git a/arvo/eyre.hoon b/arvo/eyre.hoon index d2123c80c..355fa08b1 100644 --- a/arvo/eyre.hoon +++ b/arvo/eyre.hoon @@ -4,7 +4,7 @@ |= pit=vase => =~ |% :: interfaces -++ bead ,[p=(set beam) q=cage] :: computed result +++ bead ,[p=(set beam) q=gage] :: computed result ++ chop ,[p=@ud q=@da] :: see ++ gift :: out result <-$ $% [%thou p=httr] :: raw http response @@ -455,6 +455,7 @@ ?- -.p.+.sih %& =* mab t.t.t.t.tea + ?> ?=(@ p.q.p.p.sih) %= +>.$ mow :_ mow @@ -1889,6 +1890,7 @@ =+ rul=(earn pul.p.som.pip) =+ ruf=(earn (erle our pul.p.som.pip(q.q /pul, r ~))) =+ sus=?~(foy.p.som.pip ses q.u.foy.p.som.pip) + ~& auth-request/secret=`cord`lass =+ ham=(noon our sus whu.p.som.pip rul ruf) [~ pip(pez [%fin %ham ham])] ?. =(lass u.pus.p.som.pip) @@ -1967,7 +1969,7 @@ :+ 500 ~[content-type/'text/html'] [~ (tact (poxo mad))] - & [%fin (lofa mog (lopo q.p.p.pez.pip))] + & [%fin (lofa mog (lopo [?>(?=(@ p) .)]:q.p.p.pez.pip))] == == :: diff --git a/arvo/ford.hoon b/arvo/ford.hoon index a9dc0497b..37d10c082 100644 --- a/arvo/ford.hoon +++ b/arvo/ford.hoon @@ -7,7 +7,7 @@ :: structures |% :: -++ bead ,[p=(set beam) q=cage] :: computed result +++ bead ,[p=(set beam) q=gage] :: computed result ++ gift :: out result <-$ $% [%made p=(each bead (list tank))] :: computed result == :: @@ -70,13 +70,17 @@ [%boil p=mark q=beam r=path] :: general synthesis [%call p=silk q=silk] :: slam [%cast p=mark q=silk] :: translate - [%done p=(set beam) q=cage] :: literal + [%diff p=silk q=silk] :: diff + [%done p=(set beam) q=gage] :: literal [%dude p=tank q=silk] :: error wrap - [%dune p=(set beam) q=(unit cage)] :: unit literal + [%dune p=(set beam) q=(unit gage)] :: unit literal + [%join p=mark q=silk r=silk] :: merge [%mute p=silk q=(list (pair wing silk))] :: mutant + [%pact p=silk q=silk] :: patch [%plan p=beam q=spur r=hood] :: structured assembly [%reef ~] :: kernel reef [%ride p=twig q=silk] :: silk thru twig + [%tabl p=(list (pair silk silk))] :: list [%vale p=mark q=ship r=*] :: validate [our his] == :: -- :: @@ -114,7 +118,7 @@ dep=(set beam) :: dependencies == :: ++ calx :: concrete cache line - $% [%hood p=calm q=(pair beam cage) r=hood] :: compile + $% [%hood p=calm q=(pair beam gage) r=hood] :: compile [%slit p=calm q=[p=type q=type] r=type] :: slam type [%slim p=calm q=[p=type q=twig] r=(pair type nock)]:: mint [%slap p=calm q=[p=vase q=twig] r=vase] :: compute @@ -156,8 +160,8 @@ ^- cafe :: [(grom p.a p.b) (grum q.a q.b)] :: :: :: -++ faun |=([a=cafe b=vase] (fine a `cage`noun/b)) :: vase to cage -++ feel |=([a=cafe b=cage] (fine a q.b)) :: cage to vase +++ faun |=([a=cafe b=vase] (fine a `gage`noun/b)) :: vase to gage +++ feel |=([a=cafe b=gage] (fine a q.b)) :: gage to vase ++ fest |*([a=cafe b=*] (fine a [~ u=b])) :: bolt to unit ++ fine |* [a=cafe b=*] :: bolt from data [p=`cafe`a q=[%0 p=*(set beam) q=b]] :: @@ -190,7 +194,7 @@ == :: $: now=@da :: event date eny=@ :: unique entropy - ska=$+(* (unit (unit))) :: system namespace + ska=sled :: system namespace == :: mow=(list move) :: pending actions == :: @@ -383,6 +387,52 @@ ^+ +> %_(+> jav.bay q.cof) :: + ++ diff :: diff + |= [cof=cafe kas=silk kos=silk] + ^- (bolt gage) + %. [cof kas kos] + ;~ cope + ;~ coax + |=([cof=cafe p=silk q=silk] (make cof p)) + |=([cof=cafe p=silk q=silk] (make cof q)) + == + |= [cof=cafe cay=gage coy=gage] + ?. &(?=(@ p.cay) ?=(@ p.coy)) + (flaw cof leaf/"bad diff marc" ~) + ?. =(p.cay p.coy) + %+ flaw cof :_ ~ + leaf/"diff on data of different marks: {(trip p.cay)} {(trip p.coy)}" + ?: =(q.q.cay q.q.coy) + (fine cof %null [%atom %n] ~) + %+ cope (fang cof p.cay [our %main %da now]) + |= [cof=cafe pro=vase] + ?. (slab %grad p.pro) + (flaw cof leaf/"no ++grad" ~) + =+ gar=(slap pro [%cnzy %grad]) + ?. (slab %form p.gar) + ?. (slab %sted p.gar) + (flaw cof leaf/"no ++form:grad nor ++sted:grad" ~) + =+ for=((soft ,@tas) q:(slap gar [%cnzy %sted])) + ?~ for + (flaw cof leaf/"bad ++sted:grad" ~) + %^ make cof %diff + :- [%cast u.for [%done ~ cay]] + [%cast u.for [%done ~ coy]] + ?. (slab %diff p.gar) + (flaw cof leaf/"no ++diff:grad" ~) + %+ cope (keel cof pro [[%& 6]~ q.cay]~) + |= [cof=cafe pox=vase] + %+ cope + %^ maul cof + (slap (slap pox [%cnzy %grad]) [%cnzy %diff]) + q.coy + |= [cof=cafe dif=vase] + =+ for=((soft ,@tas) q:(slap gar [%cnzy %form])) + ?~ for + (flaw cof leaf/"bad ++form:grad" ~) + (fine cof u.for dif) + == + :: ++ exit :: stateless exec ^- (unit gift) =+ bot=(make [~ jav.bay] kas) @@ -418,10 +468,10 @@ ^- (bolt hood) %+ cool |.(leaf/"ford: fade {<[(tope bem)]>}") %+ cope (make cof [%bake for bem ~]) - |= [cof=cafe cay=cage] + |= [cof=cafe cay=gage] %+ (clef %hood) (fine cof bem cay) - ^- (burg (pair beam cage) hood) - |= [cof=cafe bum=beam cay=cage] + ^- (burg (pair beam gage) hood) + |= [cof=cafe bum=beam cay=gage] =+ rul=(fair bem) ?. ?=(@ q.q.cay) (flaw cof ~) @@ -438,7 +488,7 @@ :_ pax ?: &(=(p.bek our) =(q.bek %main)) bek =+ oak=[our %main %da now] - ?: ?=([~ ~ *] (ska %cy (tope [oak pax]))) + ?: ?=([~ ~ *] (ska ~ %cy [oak pax])) oak bek (cope (fade cof %hook bem) abut:(meow bem ~)) @@ -590,20 +640,65 @@ -- -- :: + ++ join + |= [cof=cafe for=mark kas=silk kos=silk] + ^- (bolt gage) + %. [cof kas kos] + ;~ cope + ;~ coax + |=([cof=cafe p=silk q=silk] (make cof p)) + |=([cof=cafe p=silk q=silk] (make cof q)) + == + |= [cof=cafe cay=gage coy=gage] + ?. &(?=(@ p.cay) ?=(@ p.coy)) + (flaw cof leaf/"bad join marc: {} {}" ~) + %+ cope (fang cof for [our %main %da now]) + |= [cof=cafe pro=vase] + ?. (slab %grad p.pro) + (flaw cof leaf/"no ++grad" ~) + =+ gar=(slap pro [%cnzy %grad]) + ?. (slab %form p.gar) + ?. (slab %sted p.gar) + (flaw cof leaf/"no ++form:grad nor ++sted:grad" ~) + =+ too=((soft ,@tas) q:(slap gar [%cnzy %sted])) + ?~ too + (flaw cof leaf/"bad ++sted:grad" ~) + (make cof %join u.too [%done ~ cay] [%done ~ coy]) + =+ fom=((soft ,@tas) q:(slap gar [%cnzy %form])) + ?~ fom + (flaw cof leaf/"bad ++form:grad" ~) + ?. &(=(u.fom p.cay) =(u.fom p.coy)) + %+ flaw cof :_ :_ ~ + leaf/"join on data of bad marks: {(trip p.cay)} {(trip p.coy)}" + leaf/"expected mark {(trip u.fom)}" + ?: =(q.q.cay q.q.coy) + (fine cof cay) + ?. (slab %join p.gar) + (flaw cof leaf/"no ++join:grad" ~) + %+ cope + %^ maul cof + (slap (slap pro [%cnzy %grad]) [%cnzy %join]) + (slop q.cay q.coy) + |= [cof=cafe dif=vase] + ?@ q.dif + (fine cof %null dif) + (fine cof u.fom (slot 3 dif)) + == + :: ++ kale :: mutate |= [cof=cafe kas=silk muy=(list (pair wing silk))] - ^- (bolt cage) + ^- (bolt gage) %+ cope |- ^- (bolt (list (pair wing vase))) ?~ muy (fine cof ~) %+ cope (make cof q.i.muy) - |= [cof=cafe cay=cage] + |= [cof=cafe cay=gage] %+ cope ^$(muy t.muy) |= [cof=cafe rex=(list (pair wing vase))] (fine cof [[p.i.muy q.cay] rex]) |= [cof=cafe yom=(list (pair wing vase))] %+ cope (make cof kas) - |= [cof=cafe cay=cage] + |= [cof=cafe cay=gage] %+ cope (keel cof q.cay yom) |= [cof=cafe vax=vase] (fine cof p.cay vax) @@ -667,9 +762,9 @@ |= [cof=cafe bem=beam] ^- (bolt beam) ?: ?=(%ud -.r.bem) (fine cof bem) - =+ von=(ska %cw (tope bem(s ~))) + =+ von=(ska ~ %cw bem(s ~)) ?~ von [p=cof q=[%1 [%w bem ~] ~ ~]] - (fine cof bem(r [%ud ((hard ,@) (need u.von))])) + (fine cof bem(r [%ud ((hard ,@) +.+:(need u.von))])) :: ++ lave :: validate |= [cof=cafe for=mark his=ship som=*] @@ -692,19 +787,19 @@ ++ lend :: load arch |= [cof=cafe bem=beam] ^- (bolt arch) - =+ von=(ska %cy (tope bem)) + =+ von=(ska ~ %cy bem) ?~ von [p=cof q=[%1 [%y bem ~] ~ ~]] - (fine cof ((hard arch) (need u.von))) + (fine cof ((hard arch) q.q:(need u.von))) :: ++ liar :: load vase |= [cof=cafe bem=beam] ^- (bolt vase) - =+ von=(ska %cx (tope bem)) + =+ von=(ska ~ %cx bem) ?~ von [p=*cafe q=[%1 [[%x bem ~] ~ ~]]] ?~ u.von - (flaw cof (smyt (tope bem)) ~) - (fine cof ?^(u.u.von [%cell %noun %noun] [%atom %$]) u.u.von) + (flaw cof leaf/"file unavailable" (smyt (tope bem)) ~) + (fine cof q.u.u.von) :: ++ lily :: translation targets |= [cof=cafe for=mark bek=beak] @@ -738,7 +833,7 @@ ?~ wuy (fine cof ~) ?> ?=(^ u.wuy) %+ cope (make cof %bake i.u.wuy bem arg) - |= [cof=cafe hoc=cage] + |= [cof=cafe hoc=gage] %+ cope (lope cof i.u.wuy t.u.wuy -.bem q.hoc) |= [cof=cafe vax=vase] (fine cof ~ vax) @@ -751,7 +846,7 @@ |= [cof=cafe vux=(unit vase)] ?^ vux (fine cof u.vux) ?~ s.mob - (flaw cof (smyt (tope bem)) ~) + (flaw cof leaf/"beam unavailable" (smyt (tope bem)) ~) ^$(s.mob t.s.mob, mer [i.s.mob mer]) :: ++ link :: translate @@ -834,12 +929,12 @@ ^- (bolt vase) %+ cope (mail cof p.vax gen) |= [cof=cafe typ=type fol=nock] - %+ (coup cof) (mock [q.vax fol] (mole ska)) + %+ (coup cof) (mock [q.vax fol] (mole (slod ska))) |=(val=* `vase`[typ val]) :: ++ make :: reduce silk |= [cof=cafe kas=silk] - ^- (bolt cage) + ^- (bolt gage) :: ~& [%make -.kas] ?- -.kas ^ @@ -850,7 +945,7 @@ |=([cof=cafe p=silk q=silk] ^$(cof cof, kas q.kas)) == :: - |= [cof=cafe bor=cage heg=cage] ^- (bolt cage) + |= [cof=cafe bor=gage heg=gage] ^- (bolt gage) [p=cof q=[%0 ~ [%$ (slop q.bor q.heg)]]] == :: @@ -859,7 +954,7 @@ %+ cope (lima cof p.kas q.kas r.kas) |= [cof=cafe vux=(unit vase)] ?~ vux - (flaw cof (smyt (tope q.kas)) ~) + (flaw cof leaf/"bake failed" (smyt (tope q.kas)) ~) (fine cof [p.kas u.vux]) :: %boil @@ -868,7 +963,7 @@ |= [cof=cafe bem=beam] %+ cope (lime cof p.kas bem r.kas) |= [cof=cafe vax=vase] - (fine cof `cage`[p.kas vax]) + (fine cof `gage`[p.kas vax]) :: %call %+ cool |.(leaf/"ford: call {<`@p`(mug kas)>}") @@ -879,7 +974,7 @@ |=([cof=cafe p=silk q=silk] ^$(cof cof, kas q)) == :: - |= [cof=cafe gat=cage sam=cage] + |= [cof=cafe gat=gage sam=gage] (maul cof q.gat q.sam) :: |= [cof=cafe vax=vase] @@ -889,18 +984,36 @@ %cast %+ cool |.(leaf/"ford: cast {}") %+ cope $(kas q.kas) - |= [cof=cafe cay=cage] + |= [cof=cafe cay=gage] + ^- (bolt gage) + %+ cool |.(leaf/"ford: casting {} to {}") + ?. ?=(@ p.cay) + (flaw cof leaf/"bad cast marc" ~) %+ cope (link cof p.kas p.cay [our %main %da now] q.cay) |= [cof=cafe vax=vase] (fine cof [p.kas vax]) + :: + %diff + %+ cool |.(leaf/"ford: diff {<`@p`(mug p.kas)>} {<`@p`(mug q.kas)>}") + (diff cof p.kas q.kas) :: %done [cof %0 p.kas q.kas] %dude (cool |.(p.kas) $(kas q.kas)) %dune ?~ q.kas [cof [%2 [%leaf "no data"]~]] $(kas [%done p.kas u.q.kas]) + :: + %join + %+ cool + |. + leaf/"ford: join {} {<`@p`(mug q.kas)>} {<`@p`(mug r.kas)>}" + (join cof p.kas q.kas r.kas) :: %mute (kale cof p.kas q.kas) + %pact + %+ cool |.(leaf/"ford: pact {<`@p`(mug p.kas)>} {<`@p`(mug q.kas)>}") + (pact cof p.kas q.kas) + :: %plan %+ cope (abut:(meow p.kas q.kas) cof r.kas) |= [cof=cafe vax=vase] @@ -910,10 +1023,24 @@ %ride %+ cool |.(leaf/"ford: ride {<`@p`(mug kas)>}") %+ cope $(kas q.kas) - |= [cof=cafe cay=cage] + |= [cof=cafe cay=gage] %+ cope (maim cof q.cay p.kas) |= [cof=cafe vax=vase] (fine cof %noun vax) + :: + %tabl + %+ cope + |- ^- (bolt (pair (list (pair marc marc)) vase)) + ?~ p.kas (fine cof ~ *vase) + %+ cope (make cof p.i.p.kas) + |= [cof=cafe key=gage] + %+ cope (make cof q.i.p.kas) + |= [cof=cafe val=gage] + %+ cope ^^$(p.kas t.p.kas) + |= [cof=cafe rex=(list (pair marc marc)) rey=vase] + (fine cof [[p.key p.val] rex] (slop (slop q.key q.val) rey)) + |= [cof=cafe rex=(list (pair marc marc)) rey=vase] + (fine cof [%tabl rex] rey) :: %vale %+ cool |.(leaf/"ford: vale {} {} {<`@p`(mug r.kas)>}") @@ -938,7 +1065,7 @@ ^- (bolt vase) %+ cope (malt cof p.gat p.sam) |= [cof=cafe typ=type] - %+ (coup cof) (mong [q.gat q.sam] (mole ska)) + %+ (coup cof) (mong [q.gat q.sam] (mole (slod ska))) |=(val=* `vase`[typ val]) :: ++ meow :: assemble @@ -1220,6 +1347,49 @@ == -- :: + ++ pact :: patch + |= [cof=cafe kas=silk kos=silk] + ^- (bolt gage) + %. [cof kas kos] + ;~ cope + ;~ coax + |=([cof=cafe p=silk q=silk] (make cof p)) + |=([cof=cafe p=silk q=silk] (make cof q)) + == + |= [cof=cafe cay=gage coy=gage] + ?. &(?=(@ p.cay) ?=(@ p.coy)) + (flaw cof leaf/"bad pact marc" ~) + %+ cope (fang cof p.cay [our %main %da now]) + |= [cof=cafe pro=vase] + ?. (slab %grad p.pro) + (flaw cof leaf/"no ++grad" ~) + =+ gar=(slap pro [%cnzy %grad]) + ?. (slab %form p.gar) + ?. (slab %sted p.gar) + (flaw cof leaf/"no ++form:grad nor ++sted:grad" ~) + =+ for=((soft ,@tas) q:(slap gar [%cnzy %sted])) + ?~ for + (flaw cof leaf/"bad ++sted:grad" ~) + (make cof %cast p.cay %pact [%cast u.for [%done ~ cay]] [%done ~ coy]) + =+ for=((soft ,@tas) q:(slap gar [%cnzy %form])) + ?~ for + (flaw cof leaf/"bad ++form:grad" ~) + ?. =(u.for p.coy) + %+ flaw cof :_ ~ + =< leaf/"pact on data with wrong form: {-} {+<} {+>}" + [(trip p.cay) (trip u.for) (trip p.coy)] + ?. (slab %pact p.gar) + (flaw cof leaf/"no ++pact:grad" ~) + %+ cope (keel cof pro [[%& 6]~ q.cay]~) + |= [cof=cafe pox=vase] + %+ cope + %^ maul cof + (slap (slap pox [%cnzy %grad]) [%cnzy %pact]) + q.coy + |= [cof=cafe pat=vase] + (fine cof p.cay pat) + == + :: ++ resp |= [tik=@ud rot=riot] ^+ ..zo @@ -1243,7 +1413,6 @@ |= [hen=duct hic=(hypo (hobo kiss))] ^- [p=(list move) q=_..^$] => .(q.hic ?.(?=(%soft -.q.hic) q.hic ((hard kiss) p.q.hic))) - =+ ska=(slod ski) =+ ^= our ^- @p ?- -.q.hic %exec p.q.hic @@ -1252,7 +1421,7 @@ =+ buy=(~(get by pol.lex) our) ?~(buy *baby u.buy) =^ mos bay - abet:(~(apex za [[our hen] [now eny ska] ~] bay) q.q.hic) + abet:(~(apex za [[our hen] [now eny ski] ~] bay) q.q.hic) [mos ..^$(pol (~(put by pol) our bay))] :: ++ doze @@ -1279,7 +1448,7 @@ :: ++ scry |= [fur=(unit (set monk)) ren=@tas who=ship syd=desk lot=coin tyl=path] - ^- (unit (unit (pair mark ,*))) + ^- (unit (unit cage)) [~ ~] :: ++ stay :: save w/o cache @@ -1288,7 +1457,6 @@ ++ take :: response |= [tea=wire hen=duct hin=(hypo sign)] ^- [p=(list move) q=_..^$] - =+ ska=(slod ski) ?> ?=([@ @ @ ~] tea) =+ :* our=(need (slaw %p i.tea)) num=(need (slaw %ud i.t.tea)) @@ -1296,6 +1464,6 @@ == =+ bay=(~(got by pol.lex) our) =^ mos bay - abet:(~(axon za [[our hen] [now eny ska] ~] bay) num tik q.hin) + abet:(~(axon za [[our hen] [now eny ski] ~] bay) num tik q.hin) [mos ..^$(pol (~(put by pol) our bay))] -- diff --git a/arvo/gall.hoon b/arvo/gall.hoon index bc4c3dd4f..a67a57fc0 100644 --- a/arvo/gall.hoon +++ b/arvo/gall.hoon @@ -8,7 +8,7 @@ $: %0 :: state version pol=(map ship mast) :: apps by ship == :: -++ bead ,[p=(set beam) q=cage] :: computed result +++ bead ,[p=(set beam) q=gage] :: computed result ++ bone ,@ud :: opaque duct ++ gift :: out result <-$ $% [%back p=?] :: %mess ack good/bad @@ -287,7 +287,7 @@ lot=coin tyl=path == - ^- (unit (unit (pair mark ,*))) + ^- (unit (unit cage)) =+ ^= vew ^- lens :: XX future scry %. :- use :- [who syd ((hard case) p.lot)] @@ -305,7 +305,7 @@ %y y.vew %z z.vew == - |=(a=(unit) (bind a |=(b=* [%noun b]))) + |=(a=(unit) (bind a |=(b=* [%noun !>(b)]))) :: ++ doze |= [now=@da hen=duct] @@ -392,7 +392,8 @@ [%give %crud %gasp-crud p.p.+.sih] :: %& - =+ cay=`cage`q.p.p.+.sih + =+ cay=`gage`q.p.p.+.sih + ?. ?=(@ p.cay) ~| %bad-marc !! ?+ -.pax !! %d [%give (best %rush cay)] %f [%give (best %rust cay)] @@ -417,7 +418,8 @@ :_ ~ :- hen ?- -.p.+.sih %| [%give %mean ~ %ford-fail p.p.+.sih] - %& [%pass [%r pax] %g %mess [our imp] you `cage`q.p.p.+.sih] + %& ?. ?=(@ p.q.p.p.+.sih) ~| %bad-marc !! + [%pass [%r pax] %g %mess [our imp] you `cage`q.p.p.+.sih] == :: %g @@ -822,7 +824,8 @@ ^- [(unit cage) _+>] ?> ?=(%f -.sih) ?- -.p.+.sih - & [`q.p.p.+.sih +>.$] + & ?. ?=(@ p.q.p.p.+.sih) ~| %bad-marc !! + [`q.p.p.+.sih +>.$] | [~ (give %crud %murk-made p.p.+.sih)] == :: @@ -929,7 +932,7 @@ :: %w :: autoboot ?> ?=([%drug @ @ ~] t.pax) - =+ :* sin=((hard ,[%c %writ p=riot]) q.hin) + =+ :* sin=((hard ,[%c %writ p=(unit)]) q.hin) our=(need (slaw %p i.t.t.pax)) syd=(need ((sand %tas) i.t.t.t.pax)) == diff --git a/arvo/hoon.hoon b/arvo/hoon.hoon index 016ecd343..6405afca6 100644 --- a/arvo/hoon.hoon +++ b/arvo/hoon.hoon @@ -50,7 +50,7 @@ [std=term kel=@] :: kelvin version [ven=term pro=term kel=@] :: vendor and product [ven=term pro=term ver=@ kel=@] :: all of the above - == + == :: ++ clue ,[p=chum q=nock r=(list (pair term nock))] :: battery definition ++ coil $: p=?(%gold %iron %lead %zinc) :: core type q=type :: @@ -272,7 +272,7 @@ [%smdt p=twig q=tusk] :: [%smdq p=(list beer)] :: assemble string [%smsg p=twig q=tusk] :: gonads - [%smsm p=tile q=twig] :: make sure q is a p + [%smsm p=twig q=twig] :: make sure q is a p :: :::::: compositions [%tsbr p=tile q=twig] :: push bunt: =+(_p q) [%tscl p=tram q=twig] :: p changes, then q @@ -401,7 +401,7 @@ ++ wall (list tape) :: text lines (no \n) ++ wain (list cord) :: text lines (no \n) ++ wing (list limb) :: -++ wine $| ?(%noun %path %type %void %wall %wool %yarn) +++ wine $| ?(%noun %path %tank %void %wall %wool %yarn) $% [%atom p=term] :: [%core p=(list ,@ta) q=wine] :: [%face p=term q=wine] :: @@ -639,7 +639,7 @@ :: ++ need :: demand |* a=(unit) - ?~ a !! + ?~ a ~|(%need !!) u.a :: ++ some :: lift (pure) @@ -1955,8 +1955,8 @@ |= a=(tree ,[p=* q=*]) ?~ a & - ?& ?~(l.a & ?&((vor p.n.a p.n.l.a) (hor p.n.l.a p.n.a))) - ?~(r.a & ?&((vor p.n.a p.n.r.a) (hor p.n.a p.n.r.a))) + ?& ?~(l.a & ?&((vor p.n.a p.n.l.a) (gor p.n.l.a p.n.a))) + ?~(r.a & ?&((vor p.n.a p.n.r.a) (gor p.n.a p.n.r.a))) == :: ++ ja :: jar engine @@ -2088,12 +2088,12 @@ ?: (vor p.n.a p.n.b) ?: =(p.n.b p.n.a) [n.b $(a l.a, b l.b) $(a r.a, b r.b)] - ?: (hor p.n.b p.n.a) + ?: (gor p.n.b p.n.a) %- uni(+< $(a l.a, b [n.b l.b ~])) $(b r.b) %- uni(+< $(a r.a, b [n.b ~ r.b])) $(b l.b) ?: =(p.n.a p.n.b) [n.b $(b l.b, a l.a) $(b r.b, a r.a)] - ?: (hor p.n.a p.n.b) + ?: (gor p.n.a p.n.b) %- uni(+< $(b l.b, a [n.a l.a ~])) $(a r.a) %- uni(+< $(b r.b, a [n.a ~ r.a])) $(a l.a) :: @@ -2166,12 +2166,12 @@ ?: (vor p.n.a p.n.b) ?: =(p.n.b p.n.a) [n.b $(a l.a, b l.b) $(a r.a, b r.b)] - ?: (hor p.n.b p.n.a) + ?: (gor p.n.b p.n.a) $(a [n.a $(a l.a, b [n.b l.b ~]) r.a], b r.b) $(a [n.a l.a $(a r.a, b [n.b ~ r.b])], b l.b) ?: =(p.n.a p.n.b) [n.b $(b l.b, a l.a) $(b r.b, a r.a)] - ?: (hor p.n.a p.n.b) + ?: (gor p.n.a p.n.b) $(b [n.b $(b l.b, a [n.a l.a ~]) r.b], a r.a) $(b [n.b l.b $(b r.b, a [n.a ~ r.a])], a l.a) :: @@ -3326,7 +3326,7 @@ :: %f ?: =(& q.p.lot) - ['.' 'y' rex] + ['.' 'm' 'o' 's' 't' 'a' 's' 's' 'u' 'r' 'r' 'e' 'd' 'l' 'y' rex] ?:(=(| q.p.lot) ['.' 'n' rex] (z-co q.p.lot)) :: %n ['~' rex] @@ -6662,8 +6662,7 @@ :: [%smsm *] :: ;; :+ %tsgr [%ktts %v ~ 1] :: => v=. - :+ %tsls :+ %ktts %a :: =+ ^= a - [%tsgr [%cnzy %v] [%bccm p.gen]] :: =>(v ,{p.gen}) + :+ %tsls [%ktts %a [%tsgr [%cnzy %v] p.gen]] :: =+ a==>(v {p.gen}) :+ %tsls [%ktts %b [%tsgr [%cnzy %v] q.gen]] :: =+ b==>(v {q.gen}) :+ %tsls :: =+ c=(a b) [%ktts %c [%cnhp [%cnzy %a] [%cnzy %b] ~]] :: @@ -7012,7 +7011,7 @@ ?- q.ham %noun [%leaf '*' ~] %path [%leaf '/' ~] - %type [%leaf '#' 't' ~] + %tank [%leaf '*' 't' ~] %void [%leaf '#' ~] %wool [%leaf '*' '"' '"' ~] %wall [%leaf '*' '\'' '\'' ~] @@ -7090,12 +7089,9 @@ ?> ?=(@ -.lum) [[%leaf (rip 3 -.lum)] $(lum +.lum)] :: - %type - =+ cis=(type lum) - ?. =(lum cis) ~ - :^ ~ %palm - [~ ~ ~ ~] - [[%leaf '#' 't' '/' ~] duck(sut cis) ~] + %tank + =+ cis=(tank lum) + ?.(=(lum cis) ~ [~ cis]) :: %wall :- ~ @@ -7362,8 +7358,6 @@ [p.yad [%face p.sut q.yad]] :: [%fork *] - ?: =(p.sut fork/[cube/[%noun atom/%tas]]^[cube/[%void atom/%tas]]) - [dex %type] :: XX proper print =+ hin=$(sut p.sut) =+ yon=$(dex p.hin, sut q.sut) :- p.yon @@ -8952,7 +8946,7 @@ =+ rev=(plex b) ?~ rev ~ %- some - :+ %smsm a + :+ %smsm ~(clam al a) [%dtkt %dtzz %$ %cx u.rev] ;~(plug hill rood) == @@ -9200,7 +9194,7 @@ :~ [':' (rune col %smcl expi)] ['.' (rune dot %smdt expi)] ['~' (rune sig %smsg expi)] - [';' (rune sem %smsm expo)] + [';' (rune sem %smsm expb)] == == :- '=' @@ -9751,6 +9745,7 @@ == :: ++ curd ,[p=@tas q=*] :: typeless card ++ duct (list wire) :: causal history +++ gage (pair marc vase) :: structured cage ++ hide :: standard app state $: $: our=ship :: owner/operator app=term :: app identity @@ -9780,6 +9775,10 @@ ++ y *(unit (unit arch)) :: directory ++ z *(unit (unit cage)) :: current subtree -- :: +++ marc :: structured mark + $| mark :: plain mark + $% [%tabl p=(list (pair marc marc))] :: map + == :: ++ mark ,@tas :: content type ++ mill (each vase milt) :: vase/metavase ++ milt ,[p=* q=*] :: metavase @@ -9799,6 +9798,8 @@ ++ ship ,@p :: network identity ++ sled $+ [(unit (set monk)) term beam] :: namespace function (unit (unit cage)) :: +++ slad $+ [(unit (set monk)) term beam] :: undertyped + (unit (unit (cask ,*))) :: ++ slut $+(* (unit (unit))) :: old namespace ++ vile :: reflexive constants $: typ=type :: -:!>(*type) @@ -9809,7 +9810,7 @@ ++ wire path :: event pretext ::::: hacks ++ slod - |= sed=sled + |= sed=slad ^- slut |= raw=* =+ pux=((soft path) raw) @@ -9830,7 +9831,7 @@ =+ bop=(sed ~ ron bed) ?~ bop ~ ?~ u.bop [~ ~] - [~ ~ q.q.u.u.bop] + [~ ~ +.q.u.u.bop] :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: section 3bE, Arvo core :: :: @@ -9848,7 +9849,7 @@ +>.$(q.sew (slam (slap syg [%cnzy %load]) (slap rig [%cnzy %stay]))) :: ++ wink :: deploy - |= [now=@da eny=@ ski=sled] + |= [now=@da eny=@ ski=slad] =+ rig=(slym q.sew +<) :: activate vane ~% %wink +>+> ~ |% @@ -9995,7 +9996,7 @@ ren=care bed=beam == - ^- (unit (unit cage)) + ^- (unit (unit (cask ,*))) :: ~& [%arvo-scry ren bed] =+ ^= old :* fur @@ -10005,12 +10006,12 @@ `coin`[%$ r.bed] (flop s.bed) == - ^- (unit (unit cage)) + ^- (unit (unit (cask ,*))) =+ pro=(slym (slap rig [%cnzy %scry]) old) ?~ q.pro ~ ?~ +.q.pro [~ ~] =+ dat=(slot 7 pro) - [~ ~ (mark q.dat) (slot 3 dat)] + [~ ~ (mark -.q.dat) +.q.dat] :: ++ soar :: scrub vane |= sev=vase @@ -10070,13 +10071,13 @@ |= [vil=vile eny=@ bud=vase niz=(pair worm (list ,[p=@tas q=vase]))] |_ now=@da ++ beck - ^- sled + ^- slad |= [fur=(unit (set monk)) ron=term bed=beam] - ^- (unit (unit cage)) + ^- (unit (unit (cask ,*))) => .(fur ?^(fur fur `[[%& p.bed] ~ ~])) :: XX heinous =+ lal=(end 3 1 ron) =+ ren=(care (rsh 3 1 ron)) - |- ^- (unit (unit cage)) + |- ^- (unit (unit (cask ,*))) ?~ q.niz ~ ?. =(lal p.i.q.niz) $(q.niz t.q.niz) %- scry:(wink:(vent lal vil bud p.niz q.i.q.niz) now (shax now) ..^$) diff --git a/arvo/zuse.hoon b/arvo/zuse.hoon index f83b44d1c..599220c64 100644 --- a/arvo/zuse.hoon +++ b/arvo/zuse.hoon @@ -2,6 +2,7 @@ :: zuse (3), standard library (tang) :: ~% %zuse + ~ +!: |% :::::::::::::::::::::::::::::::::::::::::::::::::::::: :: :::: chapter 3b, Arvo libraries :::: @@ -1023,7 +1024,8 @@ ?- -.mis %del [%ins p.mis] %ins [%del p.mis] - %mut [%mut (limp p.mis)] + %dif [%dif p.mis] :: XX incorrect + %mut [%mut q.mis p.mis] == :: ++ cosh :: locally rehash @@ -1035,7 +1037,7 @@ ^- soba :- [p.ank p.bus] %- flop - myz:(change-tree:(zu ank) %c bus) + myz:(change-tree:(zu ank) bus) :: ++ loth |= pat=(map path ,*) @@ -1052,10 +1054,11 @@ ++ blob-to-lobe :: p.blob |= p=blob ^- lobe - ?- -.p - %delta p.p - %direct p.p - %indirect p.p + => p + ?- - + %delta p + %direct p + %indirect p == :: ++ ze !: @@ -1072,64 +1075,60 @@ :: ++ tako-to-yaki ~(got by hut) :: grab yaki ++ lobe-to-blob ~(got by lat) :: grab blob - ++ lobe-to-noun :: grab blob - |= p=lobe :: ^- * - %- blob-to-noun + ++ lobe-to-cage :: grab blob + |= p=lobe :: ^- maybe cage + ^- (each cage ,*) + %- blob-to-cage (lobe-to-blob p) :: ++ make-direct :: make blob - |= [p=* q=umph] + |= [p=cage] ^- blob - [%direct (mug p) p q] + [%direct (mug p.p q.q.p) p] :: ++ make-delta :: make blob delta - |= [p=lobe q=udon] + |= [p=lobe q=cage] ^- blob - =+ t=[%delta 0 p q] - =+ z=(blob-to-noun t) =+ ^= has - %^ cat 7 (sham [%blob z]) - (sham [%lobe z]) + %^ cat 7 (sham [%blob p.q q.q.q]) + (sham [%lobe p]) [%delta has p q] :: - ++ blob-to-umph :: blob umph [prep] - |= p=blob :: used in merge - ^- umph - ?- -.p - %delta p.r.p - %direct r.p - %indirect p.r.p - == + ++ bulb-to-cage + |= p=bulb + ^- cage + ?-(-.p %direct q.p, %indirect q.p) :: - ++ blob-to-noun :: grab blob + ++ blob-to-cage |= p=blob - ?- -.p - %delta (lump r.p (lobe-to-noun q.p)) - %direct q.p - %indirect q.p + :: ^- (each cage ,[cage this]) + ?- -.p + %direct [%& q.p] + %indirect [%& q.p] + %delta [%| r.p $(p (lobe-to-blob q.p))] == :: :: - :: ++ diff-yakis :: fundamental diff |= [p=yaki q=yaki] ^- (map path miso) - %+ roll (~(tap in (luth q.p q.q)) ~) - |= [pat=path yeb=(map path miso)] - =+ leb=(~(get by q.p) pat) - =+ lob=(~(get by q.q) pat) - ?~ leb (~(put by yeb) pat [%ins (lobe-to-noun (need lob))]) - ?~ lob (~(put by yeb) pat [%del (lobe-to-noun (need leb))]) - ?: =(u.leb u.lob) yeb - =+ veq=(lobe-to-blob u.leb) - =+ voq=(lobe-to-blob u.lob) - %+ ~(put by yeb) pat - :- %mut - ?: &(?=(%delta -.voq) =(u.leb q.voq)) :: avoid diff - r.voq - =+ zeq=(blob-to-noun veq) - =+ zoq=(blob-to-noun voq) - ((diff (blob-to-umph (lobe-to-blob u.leb))) zeq zoq) + !! + :: %+ roll (~(tap in (luth q.p q.q)) ~) + :: |= [pat=path yeb=(map path miso)] + :: =+ leb=(~(get by q.p) pat) + :: =+ lob=(~(get by q.q) pat) + :: ?~ leb (~(put by yeb) pat [%ins (lobe-to-cage (need lob))]) + :: ?~ lob (~(put by yeb) pat [%del (lobe-to-cage (need leb))]) + :: ?: =(u.leb u.lob) yeb + :: =+ veq=(lobe-to-blob u.leb) + :: =+ voq=(lobe-to-blob u.lob) + :: %+ ~(put by yeb) pat + :: :- %dif + :: ?: &(?=(%delta -.voq) =(u.leb q.voq)) :: avoid diff + :: r.voq + :: =+ zeq=(blob-to-noun veq) + :: =+ zoq=(blob-to-noun voq) + :: ((diff (blob-to-umph (lobe-to-blob u.leb))) zeq zoq) :: ++ lobes-at-path :: lobes-at-path:ze |= [yon=aeon pax=path] :: data at path @@ -1259,21 +1258,31 @@ :::::::::::::::::::::::::::::::::::::::::::::::::::::::: ++ query :: query:ze |= ren=?(%u %v %x %y %z) :: endpoint query - ^- (unit ,*) + ^- (unit cage) ?- ren - %u [~ `rang`+<+>.query] - %v [~ `dome`+<+<.query] + %u [~ %rang !>(`rang`+<+>.query)] + %v [~ %dome !>(`dome`+<+<.query)] %x ?~(q.ank ~ [~ q.u.q.ank]) - %y [~ as-arch] - %z [~ ank] + %y [~ %arch !>(as-arch)] + %z [~ %ankh !>(ank)] == :: ++ rewind :: rewind:ze |= yon=aeon :: rewind to aeon - ^+ +> - ?: =(let yon) +> + ^- (unit ,_+>) + ?: =(let yon) `+> ?: (gth yon let) !! :: don't have version - +>(ank (checkout-ankh q:(aeon-to-yaki yon)), let yon) + =+ hat=q:(aeon-to-yaki yon) + ?: (~(any by hat) |=(a=lobe ?=(%delta [-:(lobe-to-blob a)]))) + ~ + =+ ^- (map path bulb) + %- ~(run by hat) + |= a=lobe + ^- bulb + =+ (lobe-to-blob a) + ?< ?=(%delta -.-) + - + `+>.$(ank (checkout-ankh -), let yon) :: :::: ++ update-lat :: update-lat:ze @@ -1287,7 +1296,7 @@ (~(put by gar) pat p.bar) :: ++ apply-changes :: apply-changes:ze - |= lar=(list ,[p=path q=miso]) :: store changes + |= lar=(list ,[p=path q=misu]) :: store changes ^- (map path blob) =+ ^= hat :: current state ?: =(let 0) :: initial commit @@ -1303,18 +1312,24 @@ (~(put by bat) pat (lobe-to-blob gar)) :: use original ^= bar ^- (map path blob) %+ roll lar - |= [[pat=path mys=miso] bar=(map path blob)] + |= [[pat=path mys=misu] bar=(map path blob)] ^+ bar ?- -.mys %ins :: insert if not exist ?: (~(has by bar) pat) !! :: ?: (~(has by hat) pat) !! :: - (~(put by bar) pat (make-direct p.mys %c)) :: TODO content type? + %+ ~(put by bar) pat + %- make-direct + ?: &(?=(%mime -.p.mys) =([%hook ~] (slag (dec (lent pat)) pat))) + `cage`[%hook [%atom %t] +.+.q.q.p.mys] + ?: &(?=(%mime -.p.mys) =([%hoon ~] (slag (dec (lent pat)) pat))) + `cage`[%hoon [%atom %t] +.+.q.q.p.mys] + p.mys %del :: delete if exists ?. |((~(has by hat) pat) (~(has by bar) pat)) !! (~(del by bar) pat) - %mut :: mutate, must exist - =+ ber=(~(get by bar) pat) + %dif :: mutate, must exist + =+ ber=(~(get by bar) pat) :: XX typed ?~ ber =+ har=(~(get by hat) pat) ?~ har !! @@ -1323,17 +1338,18 @@ %+ ~(put by bar) pat (make-delta p.u.ber p.mys) == + :: ++ checkout-ankh :: checkout-ankh:ze - |= hat=(map path lobe) :: checkout commit + |= hat=(map path bulb) :: checkout commit ^- ankh %- cosh %+ roll (~(tap by hat) ~) - |= [[pat=path bar=lobe] ank=ankh] + |= [[pat=path bar=bulb] ank=ankh] ^- ankh %- cosh ?~ pat - =+ zar=(lobe-to-noun bar) - ank(q [~ (sham zar) zar]) + =+ zar=(bulb-to-cage bar) + ank(q [~ (sham q.q.zar) zar]) =+ nak=(~(get by r.ank) i.pat) %= ank r %+ ~(put by r.ank) i.pat @@ -1341,7 +1357,7 @@ == :: ++ forge-yaki :: forge-yaki:ze - |= [wen=@da par=(unit tako) lem=soba] :: forge yaki + |= [wen=@da par=(unit tako) lem=suba] :: forge yaki =+ ^= per ?~ par ~ ~[u.par] @@ -1539,283 +1555,285 @@ == == == - ++ qeal :: merge p,q - |* [us=[ship desk] th=[ship desk] pat=path p=miso q=miso r=(list) con=?] - ^- miso :: in case of conflict - ~| %qeal-fail - ?> ?=(%mut -.p) - ?> ?=(%mut -.q) - ?> ?=(%c -.q.p.p) - ?> ?=(%c -.q.p.q) - =+ s=(clean p.q.p.p) - =+ t=(clean p.q.p.q) - :- %mut - :- %c :: todo is this p.p.p? - :- %c - |- ^- (urge) - ::?~ s ?: (qual t) t - :: ~| %qail-conflict !! - ::?~ t ?: (qual s) s - :: ~| %qail-conflict !! - ?~ s t - ?~ t s - ?- -.i.s - %& - ?- -.i.t - %& - ?: =(p.i.s p.i.t) - [i.s $(s t.s, t t.t, r (slag p.i.s r))] - ?: (gth p.i.s p.i.t) - [i.t $(t t.t, p.i.s (sub p.i.s p.i.t), r (slag p.i.t r))] - [i.s $(s t.s, p.i.t (sub p.i.t p.i.s), r (slag p.i.s r))] - %| - ?: =(p.i.s (lent p.i.t)) - [i.t $(s t.s, t t.t, r (slag p.i.s r))] - ?: (gth p.i.s (lent p.i.t)) - :- i.t - $(t t.t, p.i.s (sub p.i.s (lent p.i.t)), r (slag (lent p.i.t) r)) - ?. con ~| %quil-conflict !! :: conflict - ~& [%quil-conflict-soft pat] - =+ mar=(match-conflict us th s t r) - [[%| p.mar] $(s p.q.mar, t q.q.mar, r r.q.mar)] - == - %| - ?- -.i.t - %| - ?. con ~| %quil-conflict !! - ~& [%quil-conflict-soft pat] - =+ mar=(match-conflict us th s t r) - [[%| p.mar] $(s p.q.mar, t q.q.mar, r r.q.mar)] - %& - ?: =(p.i.t (lent p.i.s)) - [i.s $(s t.s, t t.t, r (slag p.i.t r))] - ?: (gth p.i.t (lent p.i.s)) - :- i.s - $(s t.s, p.i.t (sub p.i.t (lent p.i.s)), r (slag (lent p.i.s) r)) - ?. con ~| %quil-conflict !! - ~& [%quil-conflict-soft pat] - =+ mar=(match-conflict us th s t r) - [[%| p.mar] $(s p.q.mar, t q.q.mar, r r.q.mar)] - == - == - ++ quil :: merge p,q - |= $: us=[ship desk] - th=[ship desk] - pat=path - p=(unit miso) - q=(unit miso) - r=(unit (list)) - con=? - == - ^- (unit miso) - ?~ p q :: trivial - ?~ q p :: trivial - ?- -.u.p - %ins ?> ?=(%ins -.u.q) - ?. con !! - %- some - :- %ins - %- role - %- annotate - :- us - :- th - :- (lore ((hard ,@) p.u.p)) - :- (lore ((hard ,@) p.u.q)) - ~ - %del p - %mut ?> ?=(%mut -.u.q) - %- some - %^ qeal us th - :^ pat u.p u.q :: merge p,q - :- %- need r - con - == - :: - ++ meld :: merge p,q from r - |= [p=yaki q=yaki r=yaki con=? us=[ship desk] th=[ship desk]] - ^- (map path blob) - =+ s=(diff-yakis r p) - =+ t=(diff-yakis r q) - =+ lut=(luth s t) - %- |= res=(map path blob) :: add old - ^- (map path blob) - %- ~(uni by res) - %- mo - %+ turn - %+ skip (~(tap by q.r) ~) :: loop through old - |= [pat=path bar=lobe] ^- ? - (~(has in lut) pat) :: skip updated - |= [pat=path bar=lobe] ^- [path blob] - [pat (lobe-to-blob bar)] :: lookup objects - %+ roll (~(tap in (luth s t)) ~) - |= [pat=path res=(map path blob)] - =+ ^= v - %- need - %^ quil us th - :- pat - :+ (~(get by s) pat) - (~(get by t) pat) - :_ con - %- %- lift lore - %- %- lift %- hard ,@ :: for %c - %- %- lift lobe-to-noun - %- ~(get by q.r) - pat - ?- -.v - %del res :: no longer exists - %ins :: new file - %+ ~(put by res) pat - %+ make-direct p.v %c :: TODO content type? - %mut :: patch from r - %+ ~(put by res) pat - %- make-direct - :_ %c - %+ lump p.v - %- lobe-to-noun - %- ~(got by q.r) pat - == - :: - :: merge types - :: - ++ mate :: merge p,q - |= con=? :: %mate, %meld - |= [p=yaki q=yaki us=[ship desk] th=[ship desk]] - ^- (map path blob) - =+ r=(~(tap in (find-merge-points p q)) ~) - ?~ r - ~|(%mate-no-ancestor !!) - ?: =(1 (lent r)) - (meld p q i.r con us th) - ~|(%mate-criss-cross !!) - :: - ++ keep :: %this - |= [p=yaki q=yaki [ship desk] [ship desk]] - ^- (map path blob) - %+ roll (~(tap by q.p) ~) - |= [[pat=path lob=lobe] zar=(map path blob)] - ^- (map path blob) - (~(put by zar) pat (lobe-to-blob lob)) - :: - ++ drop :: %that - |= [p=yaki q=yaki r=[ship desk] s=[ship desk]] - ^- (map path blob) - (keep q p r s) - :: - ++ forge :: %forge - |= [p=yaki q=yaki s=[ship desk] t=[ship desk]] - ^- (map path blob) - =+ r=(~(tap in (find-merge-points p q)) ~) - ?~ r - ~|(%forge-no-ancestor !!) - %- |= [r=yaki lut=(map lobe blob) hat=(map tako yaki)] - =. lat lut - =. hut hat - (meld p q r & s t) :: fake merge - %+ roll t.r :: fake ancestor - |= [par=yaki [for=_i.r lut=_lat hat=_hut]] - =. lat lut - =+ ^= far - ^- (map path lobe) - %- ~(urn by (forge par for s t)) - |= [k=path v=blob] (blob-to-lobe v) - =+ u=(make-yaki [r.par r.for ~] far `@da`0) :: fake yaki - :- u - :_ (~(put by hat) r.u u) - =< - - %- update-lat - :_ ~ - %- ~(urn by q.u) - |= [path k=lobe] - (lobe-to-blob k) - :: - :: actual merge - :: - ++ merge - |= [us=[ship desk] th=[ship desk]] - |= [p=yaki q=yaki r=@da s=$+([yaki yaki [ship desk] [ship desk]] (map path blob))] - ^- [yaki (map path blob)] - =+ u=(s p q us th) - =+ ^= t - ^- (map path lobe) - %+ roll (~(tap by u) ~) - |= [[pat=path bar=blob] yeb=(map path lobe)] - (~(put by yeb) pat (blob-to-lobe bar)) - :_ u - (make-yaki [r.p r.q ~] t r) - :: - ++ strategy :: merge strategy - |= gem=?(%meld %mate %that %this) - ?- gem - %meld (mate %.y) - %mate (mate %.n) - %this keep - %that drop - == - :: - ++ construct-merge :: construct-merge:ze - |= [gem=germ who=ship des=desk sab=saba now=@da] :: construct merge - ^- (unit (unit mizu)) :::::: - =+ for=s.sab :: foreign dome - =+ mer=(merge [who des] [p.sab q.sab]) - ?- gem - %init :: force fine - ?. =(let 0) :: hell no - !! - =+ hot=(~(put by *(map aeon tako)) 1 (~(got by hit.for) let.for)) - [~ [~ [1 hot hut lat]]] :: trivial - %fine - =+ der=(~(got by hit.for) let.for) - =+ owr=(~(got by hit) let) - ?: =(der owr) - [~ ~] - ?: (~(has in (reachable-takos owr)) der) - [~ ~] - ?. (~(has in (reachable-takos der)) owr) - ~ :: not a fast forward - ~& [%merge-fine p.sab q.sab] - [~ [~ [+(let) (~(put by hit) +(let) der) hut lat]]] - ?(%mate %that %this %meld) - =+ foreign-head=(tako-to-yaki (~(got by hit.for) let.for)) - =+ our-head=(tako-to-yaki (~(got by hit) let)) - ?: =(r.foreign-head r.our-head) - [~ ~] :: up to date - ?: (~(has in (reachable-takos r.our-head)) r.foreign-head) - [~ ~] :: up to date - ?: ?& |(=(gem %mate) =(gem %meld)) - (~(has in (reachable-takos r.foreign-head)) r.our-head) - == - $(gem %fine) :: use fast forward - =+ gar=(mer our-head foreign-head now (strategy gem)) - =+ yak=-.gar - =+ hek=+.gar - =. lat -:(update-lat hek ~) :: add new blobs - =. hut (~(put by *(map tako yaki)) r.yak yak) - =. let +(let) - =. hit (~(put by *(map aeon tako)) let r.yak) - [~ [~ [let hit hut lat]]] - == + :: ++ qeal :: merge p,q + :: |* [us=[ship desk] th=[ship desk] pat=path p=miso q=miso r=(list) con=?] + :: ^- miso :: in case of conflict + :: ~| %qeal-fail + :: ?> ?=(%dif -.p) + :: ?> ?=(%dif -.q) + :: ?> ?=(%c -.q.p.p) + :: ?> ?=(%c -.q.p.q) + :: =+ s=(clean p.q.p.p) + :: =+ t=(clean p.q.p.q) + :: :- %dif + :: :- %c :: todo is this p.p.p? + :: :- %c + :: |- ^- (urge) + :: ::?~ s ?: (qual t) t + :: :: ~| %qail-conflict !! + :: ::?~ t ?: (qual s) s + :: :: ~| %qail-conflict !! + :: ?~ s t + :: ?~ t s + :: ?- -.i.s + :: %& + :: ?- -.i.t + :: %& + :: ?: =(p.i.s p.i.t) + :: [i.s $(s t.s, t t.t, r (slag p.i.s r))] + :: ?: (gth p.i.s p.i.t) + :: [i.t $(t t.t, p.i.s (sub p.i.s p.i.t), r (slag p.i.t r))] + :: [i.s $(s t.s, p.i.t (sub p.i.t p.i.s), r (slag p.i.s r))] + :: %| + :: ?: =(p.i.s (lent p.i.t)) + :: [i.t $(s t.s, t t.t, r (slag p.i.s r))] + :: ?: (gth p.i.s (lent p.i.t)) + :: :- i.t + :: $(t t.t, p.i.s (sub p.i.s (lent p.i.t)), r (slag (lent p.i.t) r)) + :: ?. con ~| %quil-conflict !! :: conflict + :: ~& [%quil-conflict-soft pat] + :: =+ mar=(match-conflict us th s t r) + :: [[%| p.mar] $(s p.q.mar, t q.q.mar, r r.q.mar)] + :: == + :: %| + :: ?- -.i.t + :: %| + :: ?. con ~| %quil-conflict !! + :: ~& [%quil-conflict-soft pat] + :: =+ mar=(match-conflict us th s t r) + :: [[%| p.mar] $(s p.q.mar, t q.q.mar, r r.q.mar)] + :: %& + :: ?: =(p.i.t (lent p.i.s)) + :: [i.s $(s t.s, t t.t, r (slag p.i.t r))] + :: ?: (gth p.i.t (lent p.i.s)) + :: :- i.s + :: $(s t.s, p.i.t (sub p.i.t (lent p.i.s)), r (slag (lent p.i.s) r)) + :: ?. con ~| %quil-conflict !! + :: ~& [%quil-conflict-soft pat] + :: =+ mar=(match-conflict us th s t r) + :: [[%| p.mar] $(s p.q.mar, t q.q.mar, r r.q.mar)] + :: == + :: == + :: ++ quil :: merge p,q + :: |= $: us=[ship desk] + :: th=[ship desk] + :: pat=path + :: p=(unit miso) + :: q=(unit miso) + :: r=(unit (list)) + :: con=? + :: == + :: ^- (unit miso) + :: ?~ p q :: trivial + :: ?~ q p :: trivial + :: ?- -.u.p + :: %ins ?> ?=(%ins -.u.q) + :: ?. con !! + :: %- some + :: :- %ins + :: %- role + :: %- annotate + :: :- us + :: :- th + :: :- (lore ((hard ,@) p.u.p)) + :: :- (lore ((hard ,@) p.u.q)) + :: ~ + :: %del p + :: %dif ?> ?=(%dif -.u.q) + :: %- some + :: %^ qeal us th + :: :^ pat u.p u.q :: merge p,q + :: :- %- need r + :: con + :: == + :: :: + :: ++ meld :: merge p,q from r + :: |= [p=yaki q=yaki r=yaki con=? us=[ship desk] th=[ship desk]] + :: ^- (map path blob) + :: =+ s=(diff-yakis r p) + :: =+ t=(diff-yakis r q) + :: =+ lut=(luth s t) + :: %- |= res=(map path blob) :: add old + :: ^- (map path blob) + :: %- ~(uni by res) + :: %- mo + :: %+ turn + :: %+ skip (~(tap by q.r) ~) :: loop through old + :: |= [pat=path bar=lobe] ^- ? + :: (~(has in lut) pat) :: skip updated + :: |= [pat=path bar=lobe] ^- [path blob] + :: [pat (lobe-to-blob bar)] :: lookup objects + :: %+ roll (~(tap in (luth s t)) ~) + :: |= [pat=path res=(map path blob)] + :: =+ ^= v + :: %- need + :: %^ quil us th + :: :- pat + :: :+ (~(get by s) pat) + :: (~(get by t) pat) + :: :_ con + :: %- %- lift lore + :: %- %- lift %- hard ,@ :: for %c + :: %- %- lift lobe-to-cage + :: %- ~(get by q.r) + :: pat + :: ?- -.v + :: %del res :: no longer exists + :: %ins :: new file + :: %+ ~(put by res) pat + :: (make-direct p.v) + :: %dif :: patch from r + :: %+ ~(put by res) pat + :: %- make-direct + :: %+ lump p.v + :: %- lobe-to-cage + :: %- ~(got by q.r) pat + :: == + :: :: + :: :: merge types + :: :: + :: ++ mate :: merge p,q + :: |= con=? :: %mate, %meld + :: |= [p=yaki q=yaki us=[ship desk] th=[ship desk]] + :: ^- (map path blob) + :: =+ r=(~(tap in (find-merge-points p q)) ~) + :: ?~ r + :: ~|(%mate-no-ancestor !!) + :: ?: =(1 (lent r)) + :: (meld p q i.r con us th) + :: ~|(%mate-criss-cross !!) + :: :: + :: ++ keep :: %this + :: |= [p=yaki q=yaki [ship desk] [ship desk]] + :: ^- (map path blob) + :: %+ roll (~(tap by q.p) ~) + :: |= [[pat=path lob=lobe] zar=(map path blob)] + :: ^- (map path blob) + :: (~(put by zar) pat (lobe-to-blob lob)) + :: :: + :: ++ drop :: %that + :: |= [p=yaki q=yaki r=[ship desk] s=[ship desk]] + :: ^- (map path blob) + :: (keep q p r s) + :: :: + :: ++ forge :: %forge + :: |= [p=yaki q=yaki s=[ship desk] t=[ship desk]] + :: ^- (map path blob) + :: =+ r=(~(tap in (find-merge-points p q)) ~) + :: ?~ r + :: ~|(%forge-no-ancestor !!) + :: %- |= [r=yaki lut=(map lobe blob) hat=(map tako yaki)] + :: =. lat lut + :: =. hut hat + :: (meld p q r & s t) :: fake merge + :: %+ roll t.r :: fake ancestor + :: |= [par=yaki [for=_i.r lut=_lat hat=_hut]] + :: =. lat lut + :: =+ ^= far + :: ^- (map path lobe) + :: %- ~(urn by (forge par for s t)) + :: |= [k=path v=blob] (blob-to-lobe v) + :: =+ u=(make-yaki [r.par r.for ~] far `@da`0) :: fake yaki + :: :- u + :: :_ (~(put by hat) r.u u) + :: =< - + :: %- update-lat + :: :_ ~ + :: %- ~(urn by q.u) + :: |= [path k=lobe] + :: (lobe-to-blob k) + :: :: + :: :: actual merge + :: :: + :: ++ merge + :: |= [us=[ship desk] th=[ship desk]] + :: |= [p=yaki q=yaki r=@da s=$+([yaki yaki [ship desk] [ship desk]] (map path blob))] + :: ^- [yaki (map path blob)] + :: =+ u=(s p q us th) + :: =+ ^= t + :: ^- (map path lobe) + :: %+ roll (~(tap by u) ~) + :: |= [[pat=path bar=blob] yeb=(map path lobe)] + :: (~(put by yeb) pat (blob-to-lobe bar)) + :: :_ u + :: (make-yaki [r.p r.q ~] t r) + :: :: + :: ++ strategy :: merge strategy + :: |= gem=?(%meld %mate %that %this) + :: ?- gem + :: %meld (mate %.y) + :: %mate (mate %.n) + :: %this keep + :: %that drop + :: == + :: :: + :: ++ construct-merge :: construct-merge:ze + :: |= [gem=germ who=ship des=desk sab=saba now=@da] :: construct merge + :: ^- (unit (unit mizu)) :::::: + :: =+ for=s.sab :: foreign dome + :: =+ mer=(merge [who des] [p.sab q.sab]) + :: ?- gem + :: %init :: force fine + :: ?. =(let 0) :: hell no + :: !! + :: =+ hot=(~(put by *(map aeon tako)) 1 (~(got by hit.for) let.for)) + :: [~ [~ [1 hot hut lat]]] :: trivial + :: %fine + :: =+ der=(~(got by hit.for) let.for) + :: =+ owr=(~(got by hit) let) + :: ?: =(der owr) + :: [~ ~] + :: ?: (~(has in (reachable-takos owr)) der) + :: [~ ~] + :: ?. (~(has in (reachable-takos der)) owr) + :: ~ :: not a fast forward + :: ~& [%merge-fine p.sab q.sab] + :: [~ [~ [+(let) (~(put by hit) +(let) der) hut lat]]] + :: ?(%mate %that %this %meld) + :: =+ foreign-head=(tako-to-yaki (~(got by hit.for) let.for)) + :: =+ our-head=(tako-to-yaki (~(got by hit) let)) + :: ?: =(r.foreign-head r.our-head) + :: [~ ~] :: up to date + :: ?: (~(has in (reachable-takos r.our-head)) r.foreign-head) + :: [~ ~] :: up to date + :: ?: ?& |(=(gem %mate) =(gem %meld)) + :: (~(has in (reachable-takos r.foreign-head)) r.our-head) + :: == + :: $(gem %fine) :: use fast forward + :: =+ gar=(mer our-head foreign-head now (strategy gem)) + :: =+ yak=-.gar + :: =+ hek=+.gar + :: =. lat -:(update-lat hek ~) :: add new blobs + :: =. hut (~(put by *(map tako yaki)) r.yak yak) + :: =. let +(let) + :: =. hit (~(put by *(map aeon tako)) let r.yak) + :: [~ [~ [let hit hut lat]]] + :: == :: ++ read :: read:ze |= mun=mood :: read at point - ^- (unit) + ^- (unit cage) ?: ?=(%v p.mun) - [~ `dome`+<+<.read] + [~ %dome !>(`dome`+<+<.read)] ?: &(?=(%w p.mun) !?=(%ud -.q.mun)) - ?^(r.mun ~ [~ let]) + ?^(r.mun ~ [~ %aeon !>(let)]) ?: ?=(%w p.mun) =+ ^= yak %- aeon-to-yaki let - ?^(r.mun ~ [~ [t.yak (forge-nori yak)]]) + ?^(r.mun ~ [~ %w !>([t.yak (forge-nori yak)])]) ::?> ?=(^ hit) ?^(r.mun ~ [~ i.hit]) :: what do?? need [@da nori] (query(ank ank:(descend-path:(zu ank) r.mun)) p.mun) :: ++ read-at-aeon :: read-at-aeon:ze |= [yon=aeon mun=mood] :: seek and read - ^- (unit) + ^- (unit cage) ?: &(?=(%w p.mun) !?=(%ud -.q.mun)) :: NB only for speed - ?^(r.mun ~ [~ yon]) - (read:(rewind yon) mun) + ?^(r.mun ~ [~ %aeon !>(yon)]) + %+ biff + (rewind yon) + |= a=_+>.$ + (read:a mun) :: ++ equiv :: test paths |= [p=(map path lobe) q=(map path lobe)] @@ -1829,28 +1847,29 @@ |= [pat=path lob=lobe] =+ zat=(~(get by q) pat) ?~ zat %.n - =((lobe-to-noun u.zat) (lobe-to-noun lob)) + =((lobe-to-cage u.zat) (lobe-to-cage lob)) :: ++ edit :: edit:ze - |= [wen=@da lem=nori] :: edit - ^+ +> + |= [wen=@da lem=nuri] :: edit + ^- [(unit (map path lobe)) _+>] ?- -.lem & =^ yak lat :: merge objects %+ forge-yaki wen ?: =(let 0) :: initial import - [~ q.lem] - [(some r:(aeon-to-yaki let)) q.lem] + [~ p.lem] + [(some r:(aeon-to-yaki let)) p.lem] ?. ?| =(0 let) !=((lent p.yak) 1) !(equiv q.yak q:(aeon-to-yaki let)) == - +>.$ :: silently ignore + `+>.$ :: silently ignore =: let +(let) hit (~(put by hit) +(let) r.yak) hut (~(put by hut) r.yak yak) == - +>.$(ank (checkout-ankh q.yak)) - | +>.$(lab ?<((~(has by lab) p.lem) (~(put by lab) p.lem let))) + [`q.yak +>.$] + :: +>.$(ank (checkout-ankh q.yak)) + | [~ +>.$(lab ?<((~(has by lab) p.lem) (~(put by lab) p.lem let)))] == -- :: @@ -1902,7 +1921,7 @@ ?~(way +> $(way t.way, +> (descend i.way))) :: ++ overwrite :: write over - |= [pum=umph val=(unit ,[p=cash q=*])] + |= val=(unit ,[p=cash q=cage]) ^+ +> ?~ q.ank ?~ val +> @@ -1910,12 +1929,12 @@ ?~ val (push-change %del q.u.q.ank) ?: =(q.u.val q.u.q.ank) +> - (push-change %mut ((diff pum) q.u.q.ank q.u.val)) + (push-change %mut q.u.q.ank q.u.val) :: ++ change-tree :: modify tree - |= [pum=umph bus=ankh] + |= bus=ankh ^+ +> - =. +> (overwrite pum q.bus) + =. +> (overwrite q.bus) =+ [yeg=(~(tap by r.ank) ~) gey=(~(tap by r.bus) ~)] =. +>.$ |- ^+ +>.^$ @@ -1935,60 +1954,58 @@ =. +.^$ rm-r:(descend p.i.dyr) $(dyr t.dyr) :: - ++ drum :: apply effect - |= [pax=path mis=miso] :: XX unused (++dune) - ^+ +> - ?^ pax - update-hash:(ascend:$(pax t.pax, +> (descend i.pax)) i.pax ank) - ~| %clay-fail - ?- -.mis - %del - ?> &(?=(^ q.ank) =(q.u.q.ank p.mis)) - +>.$(p.ank (mix p.u.q.ank p.ank), q.ank ~) - :: - %ins - ?> ?=(~ q.ank) - =+ sam=(sham p.mis) - +>.$(p.ank (mix sam p.ank), q.ank [~ sam p.mis]) - :: - %mut - ?> ?=(^ q.ank) - =+ nex=(lump p.mis q.u.q.ank) - =+ sam=(sham nex) - +>.$(p.ank :(mix sam p.u.q.ank p.ank), q.ank [~ sam nex]) - == - :: - ++ dune :: apply - |- ^+ + :: XX unused (++durn) - ?~ myz + - => .(+ (drum p.i.myz q.i.myz)) - $(myz ?>(?=(^ myz) t.myz)) - :: - ++ durn :: apply forward - |= nyp=soba :: XX unused - ^+ +> - ?: =([0 0] p.nyp) - dune(myz q.nyp) - => ?: =(p.ank p.p.nyp) . - ~& [%durn-in-wrong p.ank p.p.nyp] - . - =. +> dune(myz q.nyp) - => ?: =(p.ank q.p.nyp) . - ~& [%durn-out-wrong p.ank q.p.nyp] - . - +> + ::++ drum :: apply effect + :: |= [pax=path mis=miso] :: XX unused (++dune) + :: ^+ +> + :: ?^ pax + :: update-hash:(ascend:$(pax t.pax, +> (descend i.pax)) i.pax ank) + :: ~| %clay-fail + :: ?- -.mis + :: %del + :: ?> &(?=(^ q.ank) =(q.u.q.ank p.mis)) + :: +>.$(p.ank (mix p.u.q.ank p.ank), q.ank ~) + :: :: + :: %ins + :: ?> ?=(~ q.ank) + :: =+ sam=(sham p.mis) + :: +>.$(p.ank (mix sam p.ank), q.ank [~ sam p.mis]) + :: :: + :: %dif + :: ?> ?=(^ q.ank) + :: =+ nex=(lump p.mis q.u.q.ank) + :: =+ sam=(sham nex) + :: +>.$(p.ank :(mix sam p.u.q.ank p.ank), q.ank [~ sam nex]) + :: == + :::: + ::++ dune :: apply + :: |- ^+ + :: XX unused (++durn) + :: ?~ myz + + :: => .(+ (drum p.i.myz q.i.myz)) + :: $(myz ?>(?=(^ myz) t.myz)) + :::: + ::++ durn :: apply forward + :: |= nyp=soba :: XX unused + :: ^+ +> + :: ?: =([0 0] p.nyp) + :: dune(myz q.nyp) + :: => ?: =(p.ank p.p.nyp) . + :: ~& [%durn-in-wrong p.ank p.p.nyp] + :: . + :: =. +> dune(myz q.nyp) + :: => ?: =(p.ank q.p.nyp) . + :: ~& [%durn-out-wrong p.ank q.p.nyp] + :: . + :: +> -- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: section 3bF, filesystem interface :: :: ++ feel :: simple file write - |= [pax=path val=*] + |= [pax=path val=cage] ^- miso =+ dir=((hard arch) .^(%cy pax)) ?~ q.dir [%ins val] - :- %mut - ^- udon - [%a %a .^(%cx pax) val] + [%mut ((hard cage) .^(%cx pax)) val] :: ++ file :: simple file load |= pax=path @@ -1997,7 +2014,7 @@ ?~(q.dir ~ [~ .^(%cx pax)]) :: ++ foal :: high-level write - |= [pax=path val=*] + |= [pax=path val=cage] ^- toro ?> ?=([* * * *] pax) [i.t.pax [%& [*cart [[t.t.t.pax (feel pax val)] ~]]]] @@ -2006,7 +2023,7 @@ |= pax=path ^- toro ?> ?=([* * * *] pax) - [i.t.pax [%& [*cart [[t.t.t.pax [%del .^(%cx pax)]] ~]]]] + [i.t.pax [%& [*cart [[t.t.t.pax [%del %$ !>(.^(%cx pax))]] ~]]]] :: ++ furl :: unify changes |= [one=toro two=toro] @@ -2015,7 +2032,7 @@ ?> ?& =(p.one p.two) :: same path &(?=(& -.q.one) ?=(& -.q.two)) :: both deltas == - [p.one [%& [*cart (weld q.q.q.one q.q.q.two)]]] + [p.one [%& [*cart (weld q.p.q.one q.p.q.two)]]] :: ++ tame :: parse kite path |= hap=path @@ -2657,6 +2674,7 @@ ++ pick :: light path decoding |= a=span ^- (unit ,[p=term q=path]) (rush a (most cab (sear wick urt:ab))) +:: ++ saxo :: autocanon |= who=ship ^- (list ship) @@ -2704,7 +2722,7 @@ ++ agon (map ,[p=ship q=desk] ,[p=@ud q=@ud r=waks]) :: mergepts ++ ankh :: fs node (new) $: p=cash :: recursive hash - q=(unit ,[p=cash q=*]) :: file + q=(unit ,[p=cash q=cage]) :: file r=(map ,@ta ankh) :: folders == :: ++ apex ,[p=@uvI q=(map ,@ta ,@uvI) r=(map ,@ta ,~)] :: node report (old) @@ -2725,9 +2743,9 @@ lys=@da :: last sent pac=rock :: packet data == :: -++ blob $% [%delta p=lobe q=lobe r=udon] :: delta on q - [%direct p=lobe q=* r=umph] :: - [%indirect p=lobe q=* r=udon s=lobe] :: +++ blob $% [%delta p=lobe q=lobe r=cage] :: delta on q + [%direct p=lobe q=cage] :: + [%indirect p=lobe q=cage r=cage s=lobe] :: == :: ++ boat ,[(list slip) tart] :: user stage ++ boon :: fort output @@ -2744,6 +2762,9 @@ ++ bray ,[p=life q=(unit life) r=ship s=@da] :: our parent us now ++ brow ,[p=@da q=@tas] :: browser version ++ buck ,[p=mace q=will] :: all security data +++ bulb $% [%direct p=lobe q=cage] :: + [%indirect p=lobe q=cage r=cage s=lobe] :: + == :: ++ cake ,[p=sock q=skin r=@] :: top level packet ++ cape :: end-to-end result $? %good :: delivered @@ -2806,8 +2827,7 @@ == :: ++ deed ,[p=@ q=step r=?] :: sig, stage, fake? ++ dome :: project state - $: ang=agon :: pedigree - ank=ankh :: state + $: ank=ankh :: state let=@ud :: top id hit=(map ,@ud tako) :: changes by id lab=(map ,@tas ,@ud) :: labels @@ -2882,7 +2902,7 @@ == :: ++ gilt ,[@tas *] :: presumed gift ++ gens ,[p=lang q=gcos] :: general identity -++ germ ?(%init %fine %that %this %mate %meld) :: merge style +++ germ ?(%init %fine %that %this %mate %meet %meld) :: merge style ++ gcos :: id description $% [%czar ~] :: 8-bit ship [%duke p=what] :: 32-bit ship @@ -3006,11 +3026,18 @@ %put :: PUT %trac :: TRACE == :: +++ mime ,[p=mite q=octs] :: mimetyped data ++ mite (list ,@ta) :: mime type ++ miso :: ankh delta - $% [%del p=*] :: delete - [%ins p=*] :: insert - [%mut p=udon] :: mutate + $% [%del p=cage] :: delete + [%ins p=cage] :: insert + [%dif p=cage] :: mutate from diff + [%mut p=cage q=cage] :: mutate from raw + == :: +++ misu :: computed delta + $% [%del p=cage] :: delete + [%ins p=cage] :: insert + [%dif p=cage] :: mutate from diff == :: ++ mizu ,[p=@u q=(map ,@ud tako) r=rang] :: new state ++ moar ,[p=@ud q=@ud] :: normal change range @@ -3029,12 +3056,15 @@ goad :: == :: ++ nori :: repository action - $% [& q=soba] :: delta + $% [& p=soba] :: delta + [| p=@tas] :: label + == :: +++ nuri :: repository action + $% [& p=suba] :: delta [| p=@tas] :: label == :: ++ octs ,[p=@ud q=@] :: octet-stream ++ oryx ,@t :: CSRF secret -++ pact path :: routed path ++ pail ?(%none %warm %cold) :: connection status ++ plan (trel view (pair ,@da (unit ,@dr)) path) :: subscription ++ plea ,[p=@ud q=[p=? q=@t]] :: live prompt @@ -3070,7 +3100,7 @@ ++ rant :: namespace binding $: p=[p=care q=case r=@tas] :: clade release book q=path :: spur - r=* :: data + r=cage :: data == :: ++ rave :: general request $% [& p=mood] :: single request @@ -3141,6 +3171,7 @@ ++ sock ,[p=ship q=ship] :: outgoing [from to] ++ spur path :: ship desk case spur ++ step ,[p=bray q=gens r=pass] :: identity stage +++ suba ,[p=cart q=(list ,[p=path q=misu])] :: delta ++ tako ,@ :: yaki ref ++ tart $+([@da path note] bowl) :: process core ++ tick ,@ud :: process id diff --git a/main/app/cat/core.hook b/main/app/cat/core.hook index 51cd5a617..e014c7706 100644 --- a/main/app/cat/core.hook +++ b/main/app/cat/core.hook @@ -19,7 +19,7 @@ =+ ark=;;(arch .^(%cy pax)) ?^ q.ark :- leaf/(spud pax) - %+ turn (lore ;;(@t .^(%cx pax))) + %+ turn (lore ;;(,@t .^(%cx pax))) |=(a=cord leaf/(trip a)) ?- r.ark :: handle ambiguity ~ diff --git a/main/app/into/core.hook b/main/app/into/core.hook index 25f92812d..f0c87422e 100644 --- a/main/app/into/core.hook +++ b/main/app/into/core.hook @@ -4,7 +4,7 @@ |_ [hid=hide ~] ++ peer ,_`. ++ poke-into-args - |= [ost=bone you=ship pax=path dat=@ ~] + |= [ost=bone you=ship pax=path dat=cage ~] :_ +>.$ :* [ost %pass /into %c %info our.hid (foal pax dat)] [ost %pass / %g %cide %$] diff --git a/main/app/merge/core.hook b/main/app/merge/core.hook new file mode 100644 index 000000000..1fb27b80c --- /dev/null +++ b/main/app/merge/core.hook @@ -0,0 +1,30 @@ +:: Desk sync +:: +:::: /hook/core/sync/app + :: +/+ sh-utils +!: +:::: + :: +|_ [hid=hide ~] +++ peer ,_`. +++ poke--args + |= [ost=bone you=ship syd=@tas her=@p sud=@tas gem=?([germ ~] ~)] + [[ost %pass / %c %merg our.hid syd her sud ?~(gem %fine -.gem)]~ +>.$] +:: +++ pour + |= [ost=bone pax=path sih=*] + :_ +>.$ + =+ ^- tan=(list tank) + =+ ((soft ,[%c %mere are=(each (set path) (pair term (list tank)))]) sih) + ?~ - + [leaf/"not working so well" >sih< ~] + ?: ?=(%& -.are.u) + [leaf/"merged" ?~(p.are.u ~ [>`(set path)`p.are.u< ~])] + [leaf/"failed to merge" >p.p.are.u< q.p.are.u] + %- flop + :- i=[ost %pass / %g %cide %$] + ^= t + %+ turn (~(tap in (~(get ju pus.hid) /out))) + |=(ost=bone [ost %give %rush %tang (flop tan)]) +-- diff --git a/main/app/poke/core.hook b/main/app/poke/core.hook index 24aca97fa..97b45d88f 100644 --- a/main/app/poke/core.hook +++ b/main/app/poke/core.hook @@ -12,6 +12,6 @@ :: ++ pour |= [ost=bone * sih=*] - ~& poke-resp/;;([term term] [&1 &2]:sih) + ~& poke-resp/(,[term term] [&1 &2]:sih) :_(+> [ost %pass / %g %cide %$]~) -- diff --git a/main/app/reboot/core.hook b/main/app/reboot/core.hook index 167eec343..1a66cbab8 100644 --- a/main/app/reboot/core.hook +++ b/main/app/reboot/core.hook @@ -16,7 +16,7 @@ %- turn :_ |= [tip=@tasD nam=@tas] =+ pax=[(scot %p our.hid) %arvo (scot %da lat.hid) nam %hoon ~] - [%veer tip pax (,@ .^(%cx pax))] + [%veer tip pax (,@ +:.^(%cx pax))] %- flop ^- (list ,[p=@tas q=@tas]) :~ [%$ %zuse] diff --git a/main/app/shell/core.hook b/main/app/shell/core.hook index 3b070c21a..636e2214c 100644 --- a/main/app/shell/core.hook +++ b/main/app/shell/core.hook @@ -10,8 +10,7 @@ :: |% :: ++ axle :: - $: %0 :: version - tiv=? :: typing? + $: tiv=? :: typing? pid=@u :: next process id pax=_`path`/=try= :: working directory act=(unit span) :: active child @@ -114,11 +113,11 @@ ;~ pose (stag %run ;~(plug (star ;~(sfix (task(tol %0) bar) ace)) (task col))) (stag %end ;~(pfix col sem ;~(pose (stag %& dem) (stag %| sym)))) - (stag %del ;~(pfix hep ace loca)) - (stag %mut ;~(pfix col ace ;~(plug loca expg))) - (stag %ins ;~(pfix lus ace ;~(plug loca (opts expg)))) +:: (stag %del ;~(pfix hep ace loca)) +:: (stag %mut ;~(pfix col ace ;~(plug loca expg))) +:: (stag %ins ;~(pfix lus ace ;~(plug loca (opts expg)))) (stag %help ;~(pfix wut ace ;~(pfix col sym))) - (stag %path (full ;~(sfix loca(pax paf) (star ace)))) +:: (stag %path (full ;~(sfix loca(pax paf) (star ace)))) (stag %var ;~(plug ;~(pfix tis sym) expg)) (stag %rvar ;~(pfix ;~(plug tis tis) sym)) (stag %hoon expr) @@ -235,7 +234,7 @@ %- blab %+ chew-file paf ?^ (file paf) '! exists' - (foal paf q:(exec (fall gen [%bczp atom/%t]))) + (foal paf %$ (exec (fall gen [%bczp atom/%t]))) :: ++ eat-mut |= [paf=path gen=twig] @@ -243,7 +242,7 @@ %- blab %+ chew-file paf ?~ (file paf) '! none' - (foal paf q:(exec gen)) + (foal paf %$ (exec gen)) :: ++ eat-help |= app=term diff --git a/main/app/solid/core.hook b/main/app/solid/core.hook index 479ffa897..54e355070 100644 --- a/main/app/solid/core.hook +++ b/main/app/solid/core.hook @@ -38,16 +38,4 @@ [ost %pass / %g %cide %$] [ost %give %nice ~] == -:: ~& %solid-jamming -:: =+ pac=(jam [ken all]) -:: ~& %solid-finished -:: =+ nax=/(scot %p our.hid)/try/(scot %da lat.hid)/urbit/pill -:: :* [ost %pass /cp %c %info our.hid (foal nax pac)] -:: [ost %give %nice ~] -:: %+ turn (~(tap by sup.hid)) -:: |= [ost=bone *] -:: :^ ost %give %rush -:: :- %tang :_ ~ -:: leaf/"done" -:: == -- diff --git a/main/app/terminal/core.hook b/main/app/terminal/core.hook index 6d1217e89..5052f7e2d 100644 --- a/main/app/terminal/core.hook +++ b/main/app/terminal/core.hook @@ -4,7 +4,7 @@ :: /? 314 :: need urbit 314 /- term-line, term-in, term-ctrl, kyev -/= stat /:/%%/:/hymn/ +::/= stat /:/%%/:/hymn/ :: :::: structures :: @@ -58,6 +58,36 @@ [%vega p=path] :: == == == -- +:: +:::: from future import wick, pack, pick XX remove on breach or kelvin bump + :: +|% +++ wick :: span format + |= a=@ + ^- (unit ,@ta) + =+ b=(rip 3 a) + =- ?^(b ~ (some (rap 3 (flop c)))) + =| c=tape + |- ^- [b=tape c=tape] + ?~ b [~ c] + ?. =('~' i.b) + $(b t.b, c [i.b c]) + ?~ t.b [b ~] + ?- i.t.b + %'~' $(b t.t.b, c ['~' c]) + %'-' $(b t.t.b, c ['_' c]) + @ [b ~] + == +:: +++ pack :: light path encoding + |= [a=term b=path] ^- span + %+ rap 3 :- (wack a) + (turn b |=(c=span (cat 3 '_' (wack c)))) +:: +++ pick :: light path decoding + |= a=span ^- (unit ,[p=term q=path]) + (rush a (most cab (sear wick urt:ab))) +-- !: :::: helpers :: @@ -98,18 +128,18 @@ [(flop mow) (~(put by hiz) pax tel)] :: ++ page -:: ;html -:: ;head -:: ;title: Not yet -:: == -:: ;body; -:: == - %. stat - %+ inject - ~[%html %head] - ;= ;script: urb.appl = "{(trip app.hid)}" - ;script: urb.term = \{pax: "{(spud pax)}"} + ;html + ;head + ;title: Not yet + == + ;body; == +:: %. stat +:: %+ inject +:: ~[%html %head] +:: ;= ;script: urb.appl = "{(trip app.hid)}" +:: ;script: urb.term = \{pax: "{(spud pax)}"} +:: == :: ++ peer |= gal=glas diff --git a/main/app/tree/core.hook b/main/app/tree/core.hook index 7f3f420e0..07f8c5c7d 100644 --- a/main/app/tree/core.hook +++ b/main/app/tree/core.hook @@ -15,7 +15,7 @@ =+ rend=?^(fla dank:ut |=(a=path (dank:ut (slag len a)))) :- %tang |- ^- (list tank) - =+ ark=;;(arch .^(cy/pax)) + =+ ark=;;(arch +:.^(cy/pax)) =- ?~ q.ark - [(rend pax) -] %- zing diff --git a/main/mar/css/door.hook b/main/mar/css/door.hook index 149e621ba..ecf3f0fb0 100644 --- a/main/mar/css/door.hook +++ b/main/mar/css/door.hook @@ -9,6 +9,13 @@ == ++ hymn ;html:(head:"{psal}" body) -- -++ grab |% :: convert from - ++ noun ,@t :: clam from %noun --- -- +++ grab + |% :: convert from + ++ mime |=([p=mite q=octs] (,@t q.q)) + ++ noun ,@t :: clam from %noun + -- +++ grad + |% + ++ sted %mime + -- +-- diff --git a/main/mar/eot/door.hook b/main/mar/eot/door.hook new file mode 100644 index 000000000..8e851ef87 --- /dev/null +++ b/main/mar/eot/door.hook @@ -0,0 +1,23 @@ +:: probly +:::: /hoon/core/eot/pro + :: +/? 314 + :: +:::: compute + :: +|_ otf=@ +:: +++ grow :: convert to + |% + ++ mime :: convert to %mime + [/font/eot (taco otf)] + -- +++ grab + |% + ++ mime |=([p=mite q=octs] q.q) + -- +++ grad + |% + ++ sted %mime + -- +-- diff --git a/main/mar/hook/door.hook b/main/mar/hook/door.hook index af29a81de..88789caa3 100644 --- a/main/mar/hook/door.hook +++ b/main/mar/hook/door.hook @@ -2,6 +2,7 @@ :::: /hook/door/hook/mar :: /? 314 +!: |_ own=@t :: ++ grow :: convert to @@ -9,7 +10,20 @@ ++ mime [/text/hoon (taco own)] :: convert to %mime ++ psal ;div:(pre:"{(trip own)}") :: convert to %html ++ hymn ;html:(head:title:"Source" "+{psal}") + ++ txt + (lore (cat 3 own '\0a')) -- -++ grab |% :: convert from - ++ noun ,@t :: clam from %noun --- -- +++ grab + |% :: convert from + ++ mime |=([p=mite q=octs] q.q) + ++ noun ,@t :: clam from %noun + ++ txt + |= wan=wain + =+ (role wan) + (end 3 (dec (met 3 -)) -) + -- +++ grad + |% + ++ sted %txt + -- +-- diff --git a/main/mar/hoon/door.hook b/main/mar/hoon/door.hook new file mode 100644 index 000000000..46a6f0283 --- /dev/null +++ b/main/mar/hoon/door.hook @@ -0,0 +1,31 @@ +:: +:::: /hook/door/hook/mar + :: +/? 314 +!: +|_ own=@t +:: +++ grow :: convert to + |% + ++ mime [/text/hoon (taco own)] :: convert to %mime + ++ psal ;div:(pre:"{(trip own)}") :: convert to %html + ++ hymn ;html:(head:title:"Source" "+{psal}") + ++ txt + (lore (cat 3 own '\0a')) + -- +++ grab + => v=. + |% :: convert from + ++ mime => v |=([p=mite q=octs] q.q) + ++ noun => v ,@t :: clam from %noun + ++ txt => v + |= wan=wain + ^- @t + =+ (role wan) + (end 3 (dec (met 3 -)) -) + -- +++ grad + |% + ++ sted %txt + -- +-- diff --git a/main/mar/js/door.hook b/main/mar/js/door.hook index 1b9c8f19f..9a49f2dcb 100644 --- a/main/mar/js/door.hook +++ b/main/mar/js/door.hook @@ -1,14 +1,23 @@ :: :::: /hoon/core/js/mar :: -|_ mud=@t +!: +|_ mud=@ ++ grow - |% ++ mime [/application/javascript (taco mud)] - ++ psal ;script - ;- (trip mud) - == - ++ hymn ;html:(head:"+{psal}" body) + |% + ++ mime [/application/javascript (taco (,@t mud))] + ++ psal ;script + ;- (trip (,@t mud)) + == + ++ hymn ;html:(head:"+{psal}" body) -- -++ grab |% :: convert from - ++ noun cord :: clam from %noun --- -- +++ grab + |% :: convert from + ++ mime |=([p=mite q=octs] (,@t q.q)) + ++ noun cord :: clam from %noun + -- +++ grad + |% + ++ sted %mime + -- +-- diff --git a/main/mar/json/door.hook b/main/mar/json/door.hook index 212b8fa74..6e157f997 100644 --- a/main/mar/json/door.hook +++ b/main/mar/json/door.hook @@ -12,7 +12,13 @@ ++ mime :: convert to %mime [/text/json (taco (crip (pojo jon)))] -- -++ grab |% :: convert from - ++ noun json :: clam from %noun --- -- - +++ grab + |% :: convert from + ++ mime |=([p=mite q=octs] *json) ::(fall (rush (,@t q.q) apex:poja) *json)) + ++ noun json :: clam from %noun + -- +++ grad + |% + ++ sted %mime + -- +-- diff --git a/main/mar/md/door.hook b/main/mar/md/door.hook index dab26d9dd..1e7c8dd88 100644 --- a/main/mar/md/door.hook +++ b/main/mar/md/door.hook @@ -4,4 +4,22 @@ /? 314 |_ mud=@t ++ garb [%down ~] +++ grow + |% + ++ mime [/text/x-markdown (taco mud)] + ++ txt + (lore (cat 3 mud '\0a')) + -- +++ grab + |% + ++ mime |=([p=mite q=octs] q.q) + ++ txt + |= wan=wain + =+ (role wan) + (end 3 (dec (met 3 -)) -) + -- +++ grad + |% + ++ sted %txt + -- -- diff --git a/main/mar/mime/door.hook b/main/mar/mime/door.hook index 10bbc1b63..c796d8b43 100644 --- a/main/mar/mime/door.hook +++ b/main/mar/mime/door.hook @@ -2,9 +2,16 @@ :::: /hoon/core/mime/mar :: /? 314 -|_ own=[p=mite q=octs] +|_ own=mime ++ grab :: convert from |% - ++ noun ,[mite octs] :: clam from %noun + ++ noun mime :: clam from %noun + -- +++ grad + |% + ++ form %mime + ++ diff |=(mime +<) + ++ pact |=(mime +<) + ++ join |=([mime mime] `(unit mime)``+<-) -- -- diff --git a/main/mar/otf/door.hook b/main/mar/otf/door.hook new file mode 100644 index 000000000..90da852db --- /dev/null +++ b/main/mar/otf/door.hook @@ -0,0 +1,23 @@ +:: +:::: /hoon/core/otf/pro + :: +/? 314 + :: +:::: compute + :: +|_ otf=@ +:: +++ grow :: convert to + |% + ++ mime :: convert to %mime + [/font/otf (taco otf)] + -- +++ grab + |% + ++ mime |=([p=mite q=octs] q.q) + -- +++ grad + |% + ++ sted %mime + -- +-- diff --git a/main/mar/styl/door.hook b/main/mar/styl/door.hook new file mode 100644 index 000000000..c6c11d9be --- /dev/null +++ b/main/mar/styl/door.hook @@ -0,0 +1,19 @@ +:: +:::: /hoon/core/md/pro + :: +/? 314 +|_ mud=@t +++ garb [%down ~] +++ grow + |% + ++ mime [/text/styl (taco mud)] + -- +++ grab + |% + ++ mime |=([p=mite q=octs] q.q) + -- +++ grad + |% + ++ sted %mime + -- +-- diff --git a/main/mar/txt-diff/door.hook b/main/mar/txt-diff/door.hook new file mode 100644 index 000000000..ee94a8e97 --- /dev/null +++ b/main/mar/txt-diff/door.hook @@ -0,0 +1,11 @@ +:: +:::: /hook/door/term-line/mar + :: +/? 314 +|_ txt-diff=(urge cord) +:: +++ grab :: convert from + |% + ++ noun ,(urge cord) :: clam from %noun + -- +-- diff --git a/main/mar/txt/door.hook b/main/mar/txt/door.hook index fe6784bca..06e4884cf 100644 --- a/main/mar/txt/door.hook +++ b/main/mar/txt/door.hook @@ -1,16 +1,88 @@ -:: +:: maybeze :::: /hook/door/term-line/mar :: /? 314 -|_ txt=cord +!: +|_ txt=wain :: ++ grab :: convert from |% - ++ noun ,@t :: clam from %noun - ++ json (cork so:jo need) + ++ mime |=([p=mite q=octs] (lore q.q)) + ++ noun wain :: clam from %noun + ++ json :(corl lore need so:jo) -- ++ grow + => v=. |% - ++ psal ;div: {(trip txt)} + ++ mime => v [/text/plain (taco (role txt))] + ++ psal => v ;div: {(trip (role txt))} + -- +++ grad + |% + ++ form %txt-diff + ++ diff + |= tyt=wain + ^- (urge cord) + (lusk txt tyt (loss txt tyt)) + ++ pact + |= dif=(urge cord) + ^- wain + (lurk txt dif) + ++ join + |= [ali=(urge cord) bob=(urge cord)] + ^- (unit (urge cord)) + |^ + =. ali (clean ali) + =. bob (clean bob) + |- ^- (unit (urge cord)) + ?~ ali `bob + ?~ bob `ali + ?- -.i.ali + %& + ?- -.i.bob + %& + ?: =(p.i.ali p.i.bob) + %+ bind $(ali t.ali, bob t.bob) + |=(cud=(urge cord) [i.ali cud]) + ?: (gth p.i.ali p.i.bob) + %+ bind $(p.i.ali (sub p.i.ali p.i.bob), bob t.bob) + |=(cud=(urge cord) [i.bob cud]) + %+ bind $(ali t.ali, p.i.bob (sub p.i.bob p.i.ali)) + |=(cud=(urge cord) [i.ali cud]) + %| + ?: =(p.i.ali (lent p.i.bob)) + %+ bind $(ali t.ali, bob t.bob) + |=(cud=(urge cord) [i.bob cud]) + ?: (gth p.i.ali (lent p.i.bob)) + %+ bind $(p.i.ali (sub p.i.ali (lent p.i.bob)), bob t.bob) + |=(cud=(urge cord) [i.bob cud]) + ~ + == + %| + ?- -.i.bob + %| ~ + %& + ?: =(p.i.bob (lent p.i.ali)) + %+ bind $(ali t.ali, bob t.bob) + |=(cud=(urge cord) [i.ali cud]) + ?: (gth p.i.bob (lent p.i.ali)) + %+ bind $(ali t.ali, p.i.bob (sub p.i.bob (lent p.i.ali))) + |=(cud=(urge cord) [i.ali cud]) + ~ + == + == + ++ clean :: clean + |= wig=(urge cord) + ^- (urge cord) + ?~ wig ~ + ?~ t.wig wig + ?: ?=(%& -.i.wig) + ?: ?=(%& -.i.t.wig) + $(wig [[%& (add p.i.wig p.i.t.wig)] t.t.wig]) + [i.wig $(wig t.wig)] + ?: ?=(%| -.i.t.wig) + $(wig [[%| (welp p.i.wig p.i.t.wig) (welp q.i.wig q.i.t.wig)] t.t.wig]) + [i.wig $(wig t.wig)] + -- -- -- diff --git a/main/mar/woff/door.hook b/main/mar/woff/door.hook new file mode 100644 index 000000000..43cc4c585 --- /dev/null +++ b/main/mar/woff/door.hook @@ -0,0 +1,23 @@ +:: +:::: /hoon/core/otf/pro + :: +/? 314 + :: +:::: compute + :: +|_ otf=@ +:: +++ grow :: convert to + |% + ++ mime :: convert to %mime + [/application/font-woff (taco otf)] + -- +++ grab + |% + ++ mime |=([p=mite q=octs] q.q) + -- +++ grad + |% + ++ sted %mime + -- +-- diff --git a/try/readme.md b/try/readme.md index fe6f61a36..e6f35087b 100644 --- a/try/readme.md +++ b/try/readme.md @@ -1,3 +1,3 @@ /=main=/try/ -This is the try desk. Feel free to try out whatever you want here. \ No newline at end of file +This is the try desk. Feel free to try out whatever you want here. From 8777772efa35d665742e25527b51e5248c1d0847 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Mon, 2 Mar 2015 20:28:32 -0500 Subject: [PATCH 02/89] basic userspace merge tool --- main/app/morge/core.hook | 109 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 main/app/morge/core.hook diff --git a/main/app/morge/core.hook b/main/app/morge/core.hook new file mode 100644 index 000000000..dbbb4b95f --- /dev/null +++ b/main/app/morge/core.hook @@ -0,0 +1,109 @@ +:: Desk sync +:: +:::: /hook/core/sync/app + :: +:: XX give %nice +|% +++ gift + $% [%nice ~] + [%rush %tang (list tank)] + == +++ move ,[p=bone q=(mold note gift)] +++ note + $% $: %c + $% [%merg p=@p q=@tas r=@p s=@tas t=germ] + == == + $: %g + $% [%cide span] + == == == +-- +!: +:::: + :: +|_ [hid=hide auto=? gem=germ syd=@tas her=@p sud=@tas] +++ peer ,_`. +++ poke--args + |= [ost=bone you=ship syd=@tas her=@p sud=@tas gim=?([$|(%auto germ) ~] ~)] + ^- [(list move) _+>.$] + ?~ gim + $(gim [%auto ~]) + ?. ?=(%auto -.gim) + =: auto | + gem -.gim + ^syd syd + ^her her + ^sud sud + == + [[(merge ost) ~] +>.$] + =. auto & + ?: =(0 .^(%cw /(scot %p our.hid)/[syd]/(scot %da lat.hid))) + => $(-.gim %init) + [- +(auto &)] + => $(-.gim %fine) + [- +(auto &)] +:: +++ pour + |= [ost=bone pax=path sih=*] + ^- [(list move) _+>.$] + =+ ((soft ,[%c %mere are=(each (set path) (pair term (list tank)))]) sih) + ?~ - + [(spam leaf/"not working so well" >sih< ~) +>.$] + ?: ?=(%& -.are.u) + %+ end + leaf/"successfully merged with strategy {}" + ?~(p.are.u ~ [>`(set path)`p.are.u< ~]) + ?. auto + (end leaf/"failed to merge with strategy {}" q.p.are.u) + ?+ gem + [(spam leaf/"strange auto" >gem< ~) +>.$] + :: + %init + %^ end + leaf/"auto merge failed on strategy %init" + leaf/"I'm out of ideas" + [>p.p.are.u< q.p.are.u] + :: + %fine + ?. ?=(%bad-fine-merge p.p.are.u) + (end leaf/"auto merge failed on strategy %fine" >p.p.are.u< q.p.are.u) + => .(gem %meet) + :_ +>.$ + (flop i=(merge ost) t=(spam leaf/"%fine merge failed, trying %meet" ~)) + :: + %meet + ?. ?=(%meet-conflict p.p.are.u) + (end leaf/"auto merge failed on strategy %meet" >p.p.are.u< q.p.are.u) + => .(gem %mate) + :_ +>.$ + (flop i=(merge ost) t=(spam leaf/"%meet merge failed, trying %mate" ~)) + %mate + :: + ?. ?=(%mate-conflict p.p.are.u) + (end leaf/"auto merge failed on strategy %mate" >p.p.are.u< q.p.are.u) + => .(gem %meld) + :_ +>.$ + (flop i=(merge ost) t=(spam leaf/"%mate merge failed, trying %meld" ~)) + :: + %meld + %^ end + leaf/"auto merge failed on strategy %meld" + leaf/"I'm out of ideas" + [>p.p.are.u< q.p.are.u] + == +:: +++ merge + |= ost=bone + ^- move + [ost %pass / %c %merg our.hid syd her sud gem] +:: +++ spam + |= mes=(list tank) + %+ turn (~(tap in (~(get ju pus.hid) /out))) + |= ost=bone + [ost %give %rush %tang mes] +:: +++ end + |= mes=(list tank) + ^- [(list move) _+>.$] + [(flop i=[0 %pass / %g %cide %$] t=(spam mes)) +>.$] +-- From 55e8072b3b189bbefec7c14f1afe4cc0e0298224 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Tue, 3 Mar 2015 20:05:41 -0500 Subject: [PATCH 03/89] arvo side of getting subs to boot --- arvo/clay.hoon | 138 +++++++++++++++++++++++++++++++++++++++++-------- arvo/hoon.hoon | 10 ++-- arvo/zuse.hoon | 12 +++-- 3 files changed, 130 insertions(+), 30 deletions(-) diff --git a/arvo/clay.hoon b/arvo/clay.hoon index 1e26c3c6a..11ab18887 100644 --- a/arvo/clay.hoon +++ b/arvo/clay.hoon @@ -53,10 +53,10 @@ == :: ++ moot ,[p=case q=case r=path s=(map path lobe)] :: stored change range ++ move ,[p=duct q=(mold note gift)] :: local move -++ nako $: gar=(map ,@ud tako) :: new ids - let=@ud :: next id +++ nako $: gar=(map aeon tako) :: new ids + let=aeon :: next id lar=(set yaki) :: new commits - bar=(set blob) :: new content + bar=(set plop) :: new content == :: ++ note :: out request $-> $% $: %a :: to %ames @@ -137,6 +137,7 @@ bom=(map ,@ud ,[p=duct q=rave]) :: outstanding fod=(map duct ,@ud) :: current requests haw=(map mood (unit cage)) :: simple cache + nak=(unit nako) :: pending validation == :: ++ room :: fs per ship $: hun=duct :: terminal duct @@ -613,18 +614,22 @@ == == :: - ++ edis :: apply subscription - |= nak=nako + ++ apply-foreign-update :: apply subscription + |= $: gar=(map aeon tako) :: new ids + let=aeon :: next id + lar=(set yaki) :: new commits + bar=(set blob) :: new content + == ^+ +> %= +> - hit.dom (~(uni by hit.dom) gar.nak) - let.dom let.nak - lat.ran %+ roll (~(tap in bar.nak) ~) + hit.dom (~(uni by hit.dom) gar) + let.dom let + lat.ran %+ roll (~(tap in bar) ~) =< .(yeb lat.ran) |= [sar=blob yeb=(map lobe blob)] =+ zax=(blob-to-lobe sar) %+ ~(put by yeb) zax sar - hut.ran %+ roll (~(tap in lar.nak) ~) + hut.ran %+ roll (~(tap in lar) ~) =< .(yeb hut.ran) |= [sar=yaki yeb=(map tako yaki)] %+ ~(put by yeb) r.sar sar @@ -652,7 +657,7 @@ :: let.dom :: (echa:wake:(checkout-ankh hed)) :: - ++ knit :: external change + ++ take-foreign-update :: external change |= [inx=@ud rot=riot] ^+ +> ?> ?=(^ ref) @@ -683,13 +688,78 @@ =+ nex=(~(get by haw.u.ref) nez) ?~ nex +>+.^$ ?~ u.nex +>+.^$ :: should never happen + =. nak.u.ref `((hard nako) q.q.u.u.nex) =. +>+.^$ - =+ roo=(edis ((hard nako) q.q.u.u.nex)) + =+ roo=(validate-plops for bar:(need nak.u.ref)) ?>(?=(^ ref.roo) roo) %= $ haw.u.ref (~(del by haw.u.ref) nez) == :: + ++ validate-plops + |= [him=ship pop=(set plop)] + ^+ +> + =- %_(+>.$ tag [- tag]) + :* hen + [%foreign-plops (scot %p who) (scot %p for) syd ~] + %f %exec who ~ %tabl + ^- (list (pair silk silk)) + %+ turn (~(tap in pop)) + |= a=plop + ?- -.a + %delta + :- [%done ~ %blob !>([%delta p.a q.a *cage])] + [%vale p.r.a him q.r.a] + :: + %direct + :- [%done ~ %blob !>([%direct p.a *cage])] + [%vale p.q.a him q.q.a] + :: + %indirect ~| %foreign-indirect-not-implemented !! + == + == + :: + ++ take-foreign-plops + |= res=(each bead (list tank)) + ^+ +> + ?> ?=(^ ref) + ?> ?=(^ nak.u.ref) + ?: ?=(%| -.res) + %_ +>.$ + yel + :_ yel + :* hen %note '!' %rose [" " "" ""] + leaf/"validate foreign plops failed" + p.res + == + == + =+ cay=q.p.res + ?@ p.cay ~| %plop-bad-marc !! + =+ |- ^- lat=(list blob) + ?~ p.p.cay + ~ + :_ %_($ cay [[%tabl t.p.p.cay] (slot 3 q.cay)]) + ?. ?=(%blob p.i.p.p.cay) + ~| %plop-strange-marc-a + !! + ?. ?=(@ q.i.p.p.cay) + ~| %plop-strange-marc-b + !! + =+ coy=(slot 2 q.cay) + ?@ q.coy + ~| %plop-strange-coy + !! + =+ bob=((hard blob) -.q.coy) + ?- -.bob + %delta [-.bob p.bob q.bob q.i.p.p.cay (slot 3 coy)] + %direct [-.bob p.bob q.i.p.p.cay (slot 3 coy)] + %indirect ~| %plop-indirect-not-implemented !! + == + %^ apply-foreign-update + gar.u.nak.u.ref + let.u.nak.u.ref + [lar.u.nak.u.ref (sa lat)] + :: ++ mabe :: maybe fire function |* [rov=rove fun=$+(@da _+>.^$)] ^+ +>.$ @@ -828,6 +898,16 @@ %delta [%pact $(a q.bob) [%done ~ r.bob]] == :: + ++ blob-to-plop + |= a=blob + ^- plop + => a + ?- - + %delta [- p q [p q.q]:r] + %direct [- p [p q.q]:q] + %indirect [- p [p q.q]:q [p q.q]:r s] + == + :: ++ make-direct :: make blob |= p=cage ^- blob @@ -1031,11 +1111,14 @@ :: ++ make-nako :: gack a through b |= [a=aeon b=aeon] - ^- [(map aeon tako) aeon (set yaki) (set blob)] + ^- nako :^ hit.dom let.dom (sa `(list yaki)`(turn (~(tap by hut.ran)) |=([tako yaki] +<+))) - (sa `(list blob)`(turn (~(tap by lat.ran)) |=([lobe blob] +<+))) + :: XX overkill + %- sa ^- (list plop) + (turn (~(tap by lat.ran)) |=([lobe blob] (blob-to-plop +<+))) + :: XX overkill :: ++ query :: query:ze |= ren=?(%u %v %x %y %z) :: endpoint query @@ -2015,13 +2098,11 @@ =^ mos ruf ?: (~(has by fat.ruf) who) =+ une=(un who now hen ruf) - =+ ^= zat - (take-patch:(di:wake:une syd) p.q.hin) + =+ zat=(take-patch:(di:wake:une syd) p.q.hin) =+ zot=abet.zat [-.zot abet:(pish:une syd +.zot ran.zat)] =+ zax=(do now hen [who who] syd ruf) - =+ ^= zat - (take-patch:zax p.q.hin) + =+ zat=(take-patch:zax p.q.hin) =+ zot=abet.zat [-.zot (posh who syd +.zot ruf)] [mos ..^$] @@ -2037,15 +2118,28 @@ =+ zot=abet.zat [-.zot abet:(pish:une syd +.zot ran.zat)] [mos ..^$] + :: + %foreign-plops + ?> ?=([@ @ @ ~] t.tea) + =+ our=(slav %p i.t.tea) + =+ her=(slav %p i.t.t.tea) + =* syd i.t.t.t.tea + =^ mos ruf + =+ zax=(do now hen [our her] syd ruf) + =+ zat=(take-foreign-plops:zax p.q.hin) + =+ zot=abet.zat + [-.zot (posh her syd +.zot ruf)] + [mos ..^$] == :: %waft ?> ?=([@ @ ~] tea) - =+ syd=(need (slaw %tas i.tea)) - =+ inx=(need (slaw %ud i.t.tea)) + =+ syd=(slav %tas i.tea) + =+ inx=(slav %ud i.t.tea) =+ ^= zat =< wake - (knit:(do now hen p.+.q.hin syd ruf) [inx ((hard riot) q.+.q.hin)]) + %- take-foreign-update:(do now hen p.+.q.hin syd ruf) + [inx ((hard riot) q.+.q.hin)] =^ mos ruf =+ zot=abet.zat [-.zot (posh q.p.+.q.hin syd +.zot ruf)] @@ -2062,8 +2156,8 @@ :: %writ ?> ?=([@ @ *] tea) - =+ our=(need (slaw %p i.tea)) - =+ him=(need (slaw %p i.t.tea)) + =+ our=(slav %p i.tea) + =+ him=(slav %p i.t.tea) :_ ..^$ :~ :- hen [%pass ~ %a [%want [our him] [%r %re %c t.t.tea] p.+.q.hin]] diff --git a/arvo/hoon.hoon b/arvo/hoon.hoon index 6405afca6..1806b6a04 100644 --- a/arvo/hoon.hoon +++ b/arvo/hoon.hoon @@ -9799,7 +9799,7 @@ ++ sled $+ [(unit (set monk)) term beam] :: namespace function (unit (unit cage)) :: ++ slad $+ [(unit (set monk)) term beam] :: undertyped - (unit (unit (cask ,*))) :: + (unit (unit (cask))) :: ++ slut $+(* (unit (unit))) :: old namespace ++ vile :: reflexive constants $: typ=type :: -:!>(*type) @@ -9996,7 +9996,7 @@ ren=care bed=beam == - ^- (unit (unit (cask ,*))) + ^- (unit (unit (cask))) :: ~& [%arvo-scry ren bed] =+ ^= old :* fur @@ -10006,7 +10006,7 @@ `coin`[%$ r.bed] (flop s.bed) == - ^- (unit (unit (cask ,*))) + ^- (unit (unit (cask))) =+ pro=(slym (slap rig [%cnzy %scry]) old) ?~ q.pro ~ ?~ +.q.pro [~ ~] @@ -10073,11 +10073,11 @@ ++ beck ^- slad |= [fur=(unit (set monk)) ron=term bed=beam] - ^- (unit (unit (cask ,*))) + ^- (unit (unit (cask))) => .(fur ?^(fur fur `[[%& p.bed] ~ ~])) :: XX heinous =+ lal=(end 3 1 ron) =+ ren=(care (rsh 3 1 ron)) - |- ^- (unit (unit (cask ,*))) + |- ^- (unit (unit (cask))) ?~ q.niz ~ ?. =(lal p.i.q.niz) $(q.niz t.q.niz) %- scry:(wink:(vent lal vil bud p.niz q.i.q.niz) now (shax now) ..^$) diff --git a/arvo/zuse.hoon b/arvo/zuse.hoon index 599220c64..22f5e7d6a 100644 --- a/arvo/zuse.hoon +++ b/arvo/zuse.hoon @@ -2743,9 +2743,10 @@ lys=@da :: last sent pac=rock :: packet data == :: -++ blob $% [%delta p=lobe q=lobe r=cage] :: delta on q - [%direct p=lobe q=cage] :: - [%indirect p=lobe q=cage r=cage s=lobe] :: +++ blob :: fs blob + $% [%delta p=lobe q=lobe r=cage] :: delta on q + [%direct p=lobe q=cage] :: immediate + [%indirect p=lobe q=cage r=cage s=lobe] :: both == :: ++ boat ,[(list slip) tart] :: user stage ++ boon :: fort output @@ -3068,6 +3069,11 @@ ++ pail ?(%none %warm %cold) :: connection status ++ plan (trel view (pair ,@da (unit ,@dr)) path) :: subscription ++ plea ,[p=@ud q=[p=? q=@t]] :: live prompt +++ plop :: typeless blob + $% [%delta p=lobe q=lobe r=(cask)] :: delta on q + [%direct p=lobe q=(cask)] :: immediate + [%indirect p=lobe q=(cask) r=(cask) s=lobe]:: both + == :: ++ pork ,[p=(unit ,@ta) q=(list ,@t)] :: fully parsed url ++ pred ,[p=@ta q=@tas r=@ta ~] :: proto-path ++ prod ,[p=prom q=tape r=tape] :: prompt From 092a2822e97f8699aa817a34ebe9958d703263fc Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Wed, 4 Mar 2015 19:36:29 -0500 Subject: [PATCH 04/89] progress toward sub-booting --- arvo/clay.hoon | 166 ++++++++++++++++++++++++++++--------------------- arvo/hoon.hoon | 2 +- arvo/zuse.hoon | 5 ++ 3 files changed, 101 insertions(+), 72 deletions(-) diff --git a/arvo/clay.hoon b/arvo/clay.hoon index 11ab18887..85ade5c46 100644 --- a/arvo/clay.hoon +++ b/arvo/clay.hoon @@ -65,7 +65,7 @@ $: %c :: to %clay $% [%font p=@p q=@tas r=@p s=@tas] :: [%info p=@p q=@tas r=nori] :: internal edit - [%merg p=@p q=@tas r=mizu] :: + [%merg p=@p q=@tas r=@p s=@tas t=germ] :: merge desks [%warp p=sock q=riff] :: == == :: $: %d :: @@ -84,7 +84,8 @@ [%went p=ship q=cape] :: == == :: $: %c :: by %clay - $% [%writ p=riot] :: + $% [%mere p=(each (set path) (pair term (list tank)))] + [%writ p=riot] :: == == :: $: %f :: $% [%made p=(each bead (list tank))] :: @@ -658,18 +659,18 @@ :: (echa:wake:(checkout-ankh hed)) :: ++ take-foreign-update :: external change - |= [inx=@ud rot=riot] + |= [inx=@ud rut=(unit rand)] ^+ +> ?> ?=(^ ref) |- ^+ +>+.$ =+ ruv=(~(get by bom.u.ref) inx) ?~ ruv +>+.$ - => ?. |(?=(~ rot) ?=(& -.q.u.ruv)) . + => ?. |(?=(~ rut) ?=(& -.q.u.ruv)) . %_ . bom.u.ref (~(del by bom.u.ref) inx) fod.u.ref (~(del by fod.u.ref) p.u.ruv) == - ?~ rot + ?~ rut =+ rav=`rave`q.u.ruv %= +>+.$ lim @@ -679,23 +680,80 @@ ?. ?=(& -.rav) haw.u.ref (~(put by haw.u.ref) p.rav ~) == - ?< ?=(%v p.p.u.rot) - =. haw.u.ref - (~(put by haw.u.ref) [p.p.u.rot q.p.u.rot q.u.rot] ~ r.u.rot) - ?. ?=(%w p.p.u.rot) +>+.$ - |- ^+ +>+.^$ - =+ nez=[%w [%ud let.dom] ~] - =+ nex=(~(get by haw.u.ref) nez) - ?~ nex +>+.^$ - ?~ u.nex +>+.^$ :: should never happen - =. nak.u.ref `((hard nako) q.q.u.u.nex) - =. +>+.^$ - =+ roo=(validate-plops for bar:(need nak.u.ref)) - ?>(?=(^ ref.roo) roo) - %= $ - haw.u.ref (~(del by haw.u.ref) nez) + ?- p.p.u.rut + %u + ~| %im-thinkin-its-prolly-a-bad-idea-to-request-rang-over-the-network + !! + :: + %v + ~| %weird-we-shouldnt-get-a-dome-request-over-the-network + !! + :: + %x + =< ?> ?=(^ ref) . + (rand-to-rant u.rut) + :: + %w + =. haw.u.ref + %+ ~(put by haw.u.ref) + [p.p.u.rut q.p.u.rut q.u.rut] + :+ ~ + p.r.u.rut + ?+ p.r.u.rut ~| %strange-w-over-nextwork !! + %aeon !>(((hard aeon) q.r.u.rut)) + %nako !>(((hard nako) q.r.u.rut)) + == + ?. ?=(%nako p.r.u.rut) +>+.$ + |- ^+ +>+.^$ + =+ nez=[%w [%ud let.dom] ~] + =+ nex=(~(get by haw.u.ref) nez) + ?~ nex +>+.^$ + ?~ u.nex +>+.^$ :: should never happen + =. nak.u.ref `((hard nako) q.q.u.u.nex) + =. +>+.^$ + =+ roo=(validate-plops for bar:(need nak.u.ref)) + ?>(?=(^ ref.roo) roo) + %= $ + haw.u.ref (~(del by haw.u.ref) nez) + == + :: + %y + %_ +>+.$ + haw.u.ref + %+ ~(put by haw.u.ref) + [p.p.u.rut q.p.u.rut q.u.rut] + `[p.r.u.rut !>(((hard arch) q.r.u.rut))] + == + :: + %z + ~| %its-prolly-reasonable-to-request-ankh-over-the-network-sorry + !! == :: + ++ rand-to-rant + |= rut=rand + ^+ +> + ~| %x-over-network-not-implemented !! + :: =- %_(+>.$ tag [- tag]) + :: :* hen + :: [%foreign-plops (scot %p who) (scot %p for) syd ~] + :: %f %exec who ~ %tabl + :: ^- (list (pair silk silk)) + :: %+ turn (~(tap in pop)) + :: |= a=plop + :: ?- -.a + :: %delta + :: :- [%done ~ %blob !>([%delta p.a q.a *cage])] + :: [%vale p.r.a him q.r.a] + :: :: + :: %direct + :: :- [%done ~ %blob !>([%direct p.a *cage])] + :: [%vale p.q.a him q.q.a] + :: :: + :: %indirect ~| %foreign-indirect-not-implemented !! + :: == + :: == + :: ++ validate-plops |= [him=ship pop=(set plop)] ^+ +> @@ -790,51 +848,6 @@ ^- rove [%| p.p.rav q.p.rav r.p.rav ~] :: - ++ merge-desks - |= [her=@p sud=@tas gem=germ rot=riot] - ^+ +>.$ - ?~ rot - ~& "autosync from {} on {} to {} on {} stopped" - +>.$ - ?: ?=(%y p.p.u.rot) - %= +>.$ - yel - [[hen %note ';' %leaf "starting to sync desk {(trip syd)}..."] yel] - tag - :_ tag - :* hen /auto/(scot %p who)/[syd]/(scot %p her)/[sud]/v - %c %warp [who her] sud - `[%& %v q.p.u.rot /] - == - == - ?> ?=(%v p.p.u.rot) - =+ der=((hard dome) r.u.rot) - =+ ^= lum - ^- (unit (unit mizu)) - ~ - ::%^ construct-merge:ze - :: ?:(=(0 let.dom) %init %meld) - :: who - :::+ syd - :: `saba`[her sud [0 let.der] der] - ::now - ?~ lum - ~& "autosync from {} on {} to {} on {} failed" - ~& "please merge manually" - +>.$ - ?~ u.lum - ~& "autosync from {} on {} to {} on {} up to date" - +>.$ - %= +>.$ - yel - [[hen %note ';' %leaf "successfully synced desk {(trip syd)}..."] yel] - tag - :_ tag - :* hen /auto/(scot %p who)/[syd]/(scot %p her)/[sud]/merg - %c %merg who syd u.u.lum - == - == - :: ++ wake :: update subscribers ^+ . =+ xiq=(~(tap by qyx) ~) @@ -1899,10 +1912,10 @@ ?: (~(has by sor.ruf) +.q.hic) `..^$ :_ ..^$(sor.ruf (~(put by sor.ruf) +.q.hic hen)) :: XX pass %merg and handle response - :~ :* hen %pass + :~ ^- move + :* hen %pass /auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic]/y - %c %warp [p.q.hic r.q.hic] s.q.hic - `[%& %y [%da now] /] + %c %merg [p q r s %init]:q.hic == == :: @@ -2139,7 +2152,8 @@ =+ ^= zat =< wake %- take-foreign-update:(do now hen p.+.q.hin syd ruf) - [inx ((hard riot) q.+.q.hin)] + ~& [%rand q.+.q.hin ((soft (unit rand)) q.+.q.hin)] + [inx ((hard (unit rand)) q.+.q.hin)] =^ mos ruf =+ zot=abet.zat [-.zot (posh q.p.+.q.hin syd +.zot ruf)] @@ -2156,11 +2170,15 @@ :: %writ ?> ?=([@ @ *] tea) + ~| i=i.tea + ~| it=i.t.tea =+ our=(slav %p i.tea) =+ him=(slav %p i.t.tea) :_ ..^$ - :~ :- hen - [%pass ~ %a [%want [our him] [%r %re %c t.t.tea] p.+.q.hin]] + :~ :* hen %pass ~ %a + %want [our him] [%r %re %c t.t.tea] + (bind p.+.q.hin rant-to-rand) + == == :: %went @@ -2168,6 +2186,12 @@ ~& [%clay-lost p.+.q.hin tea] [~ ..^$] == +:: +++ rant-to-rand + |= rant + ^- rand + [p q [p q.q]:r] +:: ++ khan-to-soba |= [ank=(unit ankh) kan=(unit khan)] ^- soba diff --git a/arvo/hoon.hoon b/arvo/hoon.hoon index 1806b6a04..071184fd3 100644 --- a/arvo/hoon.hoon +++ b/arvo/hoon.hoon @@ -9738,7 +9738,7 @@ == :: ++ desk ,@tas :: ship desk case spur ++ cage (cask vase) :: global metadata -++ cask |*(a=$+(* *) (pair mark a)) :: global data +++ cask |*(a=_,* (pair mark a)) :: global data ++ cuff :: permissions $: p=kirk :: readers q=(set monk) :: authors diff --git a/arvo/zuse.hoon b/arvo/zuse.hoon index 22f5e7d6a..7ab91f5ba 100644 --- a/arvo/zuse.hoon +++ b/arvo/zuse.hoon @@ -3108,6 +3108,11 @@ q=path :: spur r=cage :: data == :: +++ rand :: vaseless rant + $: p=[p=care q=case r=@tas] :: clade release book + q=path :: spur + r=(cask) :: data + == :: ++ rave :: general request $% [& p=mood] :: single request [| p=moat] :: change range From 4f2e514563e36cf4cf948e906f3ac7c1e6ab0c6f Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Thu, 5 Mar 2015 20:19:54 -0500 Subject: [PATCH 05/89] waypoint --- arvo/clay.hoon | 27 ++++++++++++++++++--------- main/mar/md/door.hook | 1 + 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/arvo/clay.hoon b/arvo/clay.hoon index 3a72c9bcd..c308c1930 100644 --- a/arvo/clay.hoon +++ b/arvo/clay.hoon @@ -1122,16 +1122,12 @@ $(p +.p, pax +.pax) == == :: - ++ make-nako :: gack a through b + ++ make-nako |= [a=aeon b=aeon] ^- nako - :^ hit.dom - let.dom - (sa `(list yaki)`(turn (~(tap by hut.ran)) |=([tako yaki] +<+))) - :: XX overkill - %- sa ^- (list plop) - (turn (~(tap by lat.ran)) |=([lobe blob] (blob-to-plop +<+))) - :: XX overkill + :+ hit.dom + let.dom + (data-twixt-takos (~(get by hit.dom) a) (aeon-to-tako b)) :: ++ query :: query:ze |= ren=?(%u %v %x %y %z) :: endpoint query @@ -1144,6 +1140,19 @@ %z [~ %ankh !>(ank.dom)] == :: + ++ data-twixt-takos + |= [a=(unit tako) b=tako] + ^- [(set yaki) (set blob)] + =+ yal=(turn (~(tap in (reachable-takos b))) tako-to-yaki) + :- (sa yal) + %- sa ^- (list blob) + %- zing ^- (list (list blob)) + %+ turn yal + |= yak=yaki + %+ turn (~(tap by q.yak)) + |= [pax=path lob=lobe] + (lobe-to-blob lob) + :: ++ reachable-takos :: reachable |= p=tako :: XX slow ^- (set tako) @@ -2158,7 +2167,7 @@ =+ ^= zat =< wake %- take-foreign-update:(do now hen p.+.q.hin syd ruf) - ~& [%rand q.+.q.hin ((soft (unit rand)) q.+.q.hin)] +:: ~& [%rand q.+.q.hin ((soft (unit rand)) q.+.q.hin)] [inx ((hard (unit rand)) q.+.q.hin)] =^ mos ruf =+ zot=abet.zat diff --git a/main/mar/md/door.hook b/main/mar/md/door.hook index 1e7c8dd88..4cc48d5b0 100644 --- a/main/mar/md/door.hook +++ b/main/mar/md/door.hook @@ -13,6 +13,7 @@ ++ grab |% ++ mime |=([p=mite q=octs] q.q) + ++ noun ,@t ++ txt |= wan=wain =+ (role wan) From b692b1d75c341ed4d83b7f87de7c016c25075cb8 Mon Sep 17 00:00:00 2001 From: Anton Dyudin Date: Thu, 12 Feb 2015 18:11:18 -0800 Subject: [PATCH 06/89] slab -> slob Conflicts: urb/zod/arvo/ford.hoon --- arvo/ford.hoon | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/arvo/ford.hoon b/arvo/ford.hoon index 315eba272..4a18ad3bc 100644 --- a/arvo/ford.hoon +++ b/arvo/ford.hoon @@ -188,6 +188,10 @@ =+ gib=(wox p.n.r.arc) ?~(gib rac [[u.gib p.n.r.arc] rac]) :: +++ slob :: XX belongs in h/h + |= [cog=@tas typ=type] + (~(has in (sa (sloe typ))) cog) +:: ++ za :: per event =| $: $: $: our=ship :: computation owner hen=duct :: event floor @@ -751,10 +755,10 @@ =+ bob=(slot 6 tux) ?: (~(nest ut p.bob) | p.sam) (fine cof sam) - ?. (slab %grab p.tux) + ?. (slob %grab p.tux) (flaw cof [%leaf "ford: no grab: {<[for bek]>}"]~) =+ gab=(slap tux [%cnzy %grab]) - ?. (slab %noun p.gab) + ?. (slob %noun p.gab) (flaw cof [%leaf "ford: no noun: {<[for bek]>}"]~) %+ cope (maul cof (slap gab [%cnzy %noun]) [%noun q.sam]) |= [cof=cafe pro=vase] @@ -816,10 +820,10 @@ %+ fine cof %+ weld ^- (list ,@tas) - ?. (slab %garb p.vax) ~ + ?. (slob %garb p.vax) ~ =+ gav=((soft (list ,@tas)) q:(slap vax [%cnzy %garb])) ?~(gav ~ u.gav) - ?. (slab %grow p.vax) ~ + ?. (slob %grow p.vax) ~ =+ gow=(slap vax [%cnzy %grow]) (sloe p.gow) :: @@ -862,16 +866,16 @@ ((lake too bek) cof vax) %+ cope (fang cof for bek) |= [cof=cafe pro=vase] - ?: &((slab %grow p.pro) (slab too p:(slap pro [%cnzy %grow]))) + ?: &((slob %grow p.pro) (slob too p:(slap pro [%cnzy %grow]))) %+ cope (keel cof pro [[%& 6]~ vax]~) |= [cof=cafe pox=vase] (maim cof pox [%tsgr [%cnzy %grow] [%cnzy too]]) %+ cope (fang cof too bek) |= [cof=cafe pro=vase] =+ ^= zat ^- (unit vase) - ?. (slab %grab p.pro) ~ + ?. (slob %grab p.pro) ~ =+ gab=(slap pro [%cnzy %grab]) - ?. (slab for p.gab) ~ + ?. (slob for p.gab) ~ `(slap gab [%cnzy for]) ?~ zat (flaw cof [%leaf "ford: no link: {<[for too]>}"]~) @@ -994,9 +998,16 @@ %+ cool |.(leaf/"ford: casting {} to {}") ?. ?=(@ p.cay) (flaw cof leaf/"bad cast marc" ~) - %+ cope (link cof p.kas p.cay [our %main %da now] q.cay) + =+ bek=[our %main %da now] :: XX + %+ cope (link cof p.kas p.cay bek q.cay) |= [cof=cafe vax=vase] (fine cof [p.kas vax]) +:: %+ cope (lion cof p.kas bek [p.cay]~) +:: |= [cof=cafe wuy=(list ,@tas)] +:: ?~ wuy (flaw cof [%leaf "ford: no path: {<[p.cay p.kas]>}"]~) +:: %+ cope (lope cof i.wuy t.wuy bek q.cay) +:: |= [cof=cafe vax=vase] +:: (fine cof [p.kas vax]) :: %diff %+ cool |.(leaf/"ford: diff {<`@p`(mug p.kas)>} {<`@p`(mug q.kas)>}") From 459604b7df6c5ca7cc2408b8369c0b6ac52a3076 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Fri, 6 Mar 2015 16:07:34 -0500 Subject: [PATCH 07/89] first over-the-network typed merge --- arvo/clay.hoon | 58 +++++++++++++++++++++++-------------------- arvo/zuse.hoon | 2 +- main/mar/md/door.hook | 1 + 3 files changed, 33 insertions(+), 28 deletions(-) diff --git a/arvo/clay.hoon b/arvo/clay.hoon index c308c1930..67bce3c95 100644 --- a/arvo/clay.hoon +++ b/arvo/clay.hoon @@ -623,17 +623,21 @@ == ^+ +> %= +> - hit.dom (~(uni by hit.dom) gar) - let.dom let - lat.ran %+ roll (~(tap in bar) ~) - =< .(yeb lat.ran) - |= [sar=blob yeb=(map lobe blob)] - =+ zax=(blob-to-lobe sar) - %+ ~(put by yeb) zax sar - hut.ran %+ roll (~(tap in lar) ~) - =< .(yeb hut.ran) - |= [sar=yaki yeb=(map tako yaki)] - %+ ~(put by yeb) r.sar sar + hit.dom ~& [%gar gar] + (~(uni by hit.dom) gar) + let.dom let + hut.ran ~& [%lar lar] + =- ~& [%newhut (~(run by -) ,~)] - + %- ~(uni by hut.ran) + %- mo ^- (list (pair tako yaki)) + %+ turn (~(tap in lar)) + |= yak=yaki + [r.yak yak] + lat.ran %- ~(uni by lat.ran) + %- mo ^- (list (pair lobe blob)) + %+ turn (~(tap in bar)) + |= bob=blob + [p.bob bob] == :: ++ exec :: change and update @@ -783,14 +787,9 @@ ?> ?=(^ ref) ?> ?=(^ nak.u.ref) ?: ?=(%| -.res) - %_ +>.$ - yel - :_ yel - :* hen %note '!' %rose [" " "" ""] - leaf/"validate foreign plops failed" - p.res - == - == + ~| "validate foreign plops failed" + ~& [%plop-fail (turn p.res |=(tank ~(ram re +<)))] + !! =+ cay=q.p.res ?@ p.cay ~| %plop-bad-marc !! =+ |- ^- lat=(list blob) @@ -864,6 +863,7 @@ ..wake ?~ u.cas (blub p.i.xiq) (blab p.i.xiq p.q.i.xiq u.u.cas) == + ~& [%sydhit syd hit.dom let.dom] =+ nao=(case-to-aeon:ze q.p.q.i.xiq) ?~ nao $(xiq t.xiq, xaq [i.xiq xaq]) $(xiq t.xiq, ..wake (balk p.i.xiq u.nao p.q.i.xiq)) @@ -899,7 +899,7 @@ |% ++ aeon-to-tako ~(got by hit.dom) ++ aeon-to-yaki (cork aeon-to-tako tako-to-yaki) - ++ lobe-to-blob ~(got by lat.ran) :: grab blob + ++ lobe-to-blob ~(got by lat.ran) ++ tako-to-yaki ~(got by hut.ran) ++ lobe-to-silk |= a=lobe @@ -1007,6 +1007,9 @@ ?: =(0 let.dom) [~ 0] :: avoid underflow ?: %+ gte p.lok =< t + ~| [%letdom let=let.dom hit=hit.dom hut=(~(run by hut.ran) ,~)] + ~| [%getdom (~(get by hit.dom) let.dom)] + ~| [%gotdom (~(get by hut.ran) (~(got by hit.dom) let.dom))] %- aeon-to-yaki let.dom [~ let.dom] @@ -1142,16 +1145,16 @@ :: ++ data-twixt-takos |= [a=(unit tako) b=tako] - ^- [(set yaki) (set blob)] + ^- [(set yaki) (set plop)] =+ yal=(turn (~(tap in (reachable-takos b))) tako-to-yaki) :- (sa yal) - %- sa ^- (list blob) - %- zing ^- (list (list blob)) + %- sa ^- (list plop) + %- zing ^- (list (list plop)) %+ turn yal |= yak=yaki %+ turn (~(tap by q.yak)) |= [pax=path lob=lobe] - (lobe-to-blob lob) + (blob-to-plop (lobe-to-blob lob)) :: ++ reachable-takos :: reachable |= p=tako :: XX slow @@ -2146,12 +2149,12 @@ =+ our=(slav %p i.t.tea) =+ her=(slav %p i.t.t.tea) =* syd i.t.t.t.tea + =+ zax=(do now hen [our her] syd ruf) + =+ zat=(take-foreign-plops:zax p.q.hin) =^ mos ruf - =+ zax=(do now hen [our her] syd ruf) - =+ zat=(take-foreign-plops:zax p.q.hin) =+ zot=abet.zat [-.zot (posh her syd +.zot ruf)] - [mos ..^$] + [mos ..^$(ran.ruf ran.zat)] == :: %mere @@ -2172,6 +2175,7 @@ =^ mos ruf =+ zot=abet.zat [-.zot (posh q.p.+.q.hin syd +.zot ruf)] + ~& %wafting [mos ..^$(ran.ruf ran.zat)] :: merge in new obj :: %wake diff --git a/arvo/zuse.hoon b/arvo/zuse.hoon index 2007fd935..513f2d764 100644 --- a/arvo/zuse.hoon +++ b/arvo/zuse.hoon @@ -2995,7 +2995,7 @@ ++ lice ,[p=ship q=buck] :: full license ++ life ,@ud :: regime number ++ lint (list rock) :: fragment array -++ lobe ,@ :: blob ref +++ lobe ,@uvF :: blob ref ++ love $% :: http response [%ham p=manx] :: html node [%mid p=mite q=octs] :: mime-typed data diff --git a/main/mar/md/door.hook b/main/mar/md/door.hook index 4cc48d5b0..27b89f898 100644 --- a/main/mar/md/door.hook +++ b/main/mar/md/door.hook @@ -2,6 +2,7 @@ :::: /hoon/core/md/pro :: /? 314 +!: |_ mud=@t ++ garb [%down ~] ++ grow From 1d6e199d65d49f382738d8c2e67ecae1ddd7590a Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Fri, 6 Mar 2015 17:28:55 -0500 Subject: [PATCH 08/89] merging across network tentatively works --- arvo/clay.hoon | 1 + arvo/ford.hoon | 10 +++++++++- main/mar/eot/door.hook | 1 + main/mar/hoon/door.hook | 10 +++++----- main/mar/mime/door.hook | 1 + main/mar/otf/door.hook | 1 + main/mar/styl/door.hook | 1 + main/mar/woff/door.hook | 1 + 8 files changed, 20 insertions(+), 6 deletions(-) diff --git a/arvo/clay.hoon b/arvo/clay.hoon index 67bce3c95..bf1209ce4 100644 --- a/arvo/clay.hoon +++ b/arvo/clay.hoon @@ -807,6 +807,7 @@ ~| %plop-strange-coy !! =+ bob=((hard blob) -.q.coy) + ~& [%taking p.coy] ?- -.bob %delta [-.bob p.bob q.bob q.i.p.p.cay (slot 3 coy)] %direct [-.bob p.bob q.i.p.p.cay (slot 3 coy)] diff --git a/arvo/ford.hoon b/arvo/ford.hoon index 4a18ad3bc..083ae23e9 100644 --- a/arvo/ford.hoon +++ b/arvo/ford.hoon @@ -747,9 +747,14 @@ |= [cof=cafe sam=vase] ^- (bolt vase) %+ cool |.(leaf/"ford: check {<[for bek `@p`(mug q.sam)]>}") - ?: ?=(?(%gate %core %door %hoon %hook) for) + ?: ?=(?(%gate %core %door) for) :: ~& [%lake-easy for bek] (fine cof sam) + ?: ?=(?(%hoon %hook) for) + =+ mas=((soft ,@t) q.sam) + ?~ mas + (flaw cof [leaf/"ford: bad hoon or hook: {<[for bek]>}"]~) + (fine cof [%atom %t] u.mas) %+ cope (fang cof for bek) |= [cof=cafe tux=vase] =+ bob=(slot 6 tux) @@ -867,8 +872,10 @@ %+ cope (fang cof for bek) |= [cof=cafe pro=vase] ?: &((slob %grow p.pro) (slob too p:(slap pro [%cnzy %grow]))) + ~& [%herep-a -.vax] %+ cope (keel cof pro [[%& 6]~ vax]~) |= [cof=cafe pox=vase] + ~& %herep-b (maim cof pox [%tsgr [%cnzy %grow] [%cnzy too]]) %+ cope (fang cof too bek) |= [cof=cafe pro=vase] @@ -1062,6 +1069,7 @@ %+ cool |.(leaf/"ford: vale {} {} {<`@p`(mug r.kas)>}") %+ cope (lave cof p.kas q.kas r.kas) |= [cof=cafe vax=vase] + ~& [%valing p.kas p.vax] (fine cof `cage`[p.kas vax]) == :: diff --git a/main/mar/eot/door.hook b/main/mar/eot/door.hook index 8e851ef87..dac090e86 100644 --- a/main/mar/eot/door.hook +++ b/main/mar/eot/door.hook @@ -15,6 +15,7 @@ ++ grab |% ++ mime |=([p=mite q=octs] q.q) + ++ noun ,@ -- ++ grad |% diff --git a/main/mar/hoon/door.hook b/main/mar/hoon/door.hook index 46a6f0283..374f377fa 100644 --- a/main/mar/hoon/door.hook +++ b/main/mar/hoon/door.hook @@ -6,19 +6,19 @@ |_ own=@t :: ++ grow :: convert to + ~& hoon=(met 3 own) |% - ++ mime [/text/hoon (taco own)] :: convert to %mime + ++ mime `^mime`[/text/hoon (taco own)] :: convert to %mime ++ psal ;div:(pre:"{(trip own)}") :: convert to %html ++ hymn ;html:(head:title:"Source" "+{psal}") ++ txt (lore (cat 3 own '\0a')) -- ++ grab - => v=. |% :: convert from - ++ mime => v |=([p=mite q=octs] q.q) - ++ noun => v ,@t :: clam from %noun - ++ txt => v + ++ mime |=([p=mite q=octs] q.q) + ++ noun ,@t :: clam from %noun + ++ txt |= wan=wain ^- @t =+ (role wan) diff --git a/main/mar/mime/door.hook b/main/mar/mime/door.hook index c796d8b43..e7e52af92 100644 --- a/main/mar/mime/door.hook +++ b/main/mar/mime/door.hook @@ -2,6 +2,7 @@ :::: /hoon/core/mime/mar :: /? 314 +!: |_ own=mime ++ grab :: convert from |% diff --git a/main/mar/otf/door.hook b/main/mar/otf/door.hook index 90da852db..202f49b67 100644 --- a/main/mar/otf/door.hook +++ b/main/mar/otf/door.hook @@ -15,6 +15,7 @@ ++ grab |% ++ mime |=([p=mite q=octs] q.q) + ++ noun ,@ -- ++ grad |% diff --git a/main/mar/styl/door.hook b/main/mar/styl/door.hook index c6c11d9be..34d7ac51d 100644 --- a/main/mar/styl/door.hook +++ b/main/mar/styl/door.hook @@ -11,6 +11,7 @@ ++ grab |% ++ mime |=([p=mite q=octs] q.q) + ++ noun ,@t -- ++ grad |% diff --git a/main/mar/woff/door.hook b/main/mar/woff/door.hook index 43cc4c585..627e20641 100644 --- a/main/mar/woff/door.hook +++ b/main/mar/woff/door.hook @@ -15,6 +15,7 @@ ++ grab |% ++ mime |=([p=mite q=octs] q.q) + ++ noun ,@ -- ++ grad |% From c5fb9699049f9f7fbad4aa80d0bf599dea28094c Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Mon, 9 Mar 2015 17:36:04 -0400 Subject: [PATCH 09/89] remove extraneous printfs --- arvo/clay.hoon | 5 ++--- arvo/ford.hoon | 3 --- main/mar/hoon/door.hook | 1 - main/mar/txt-diff/door.hook | 2 +- 4 files changed, 3 insertions(+), 8 deletions(-) diff --git a/arvo/clay.hoon b/arvo/clay.hoon index bf1209ce4..5aed95e94 100644 --- a/arvo/clay.hoon +++ b/arvo/clay.hoon @@ -25,7 +25,7 @@ [%writ p=riot] :: response == :: ++ khan :: - $: fil=(unit (unit cage)) :: + $: fil=(unit (unit cage)) :: XX see khan-to-soba dir=(map ,@ta khan) :: == :: ++ kiss :: in request ->$ @@ -864,7 +864,6 @@ ..wake ?~ u.cas (blub p.i.xiq) (blab p.i.xiq p.q.i.xiq u.u.cas) == - ~& [%sydhit syd hit.dom let.dom] =+ nao=(case-to-aeon:ze q.p.q.i.xiq) ?~ nao $(xiq t.xiq, xaq [i.xiq xaq]) $(xiq t.xiq, ..wake (balk p.i.xiq u.nao p.q.i.xiq)) @@ -2176,7 +2175,6 @@ =^ mos ruf =+ zot=abet.zat [-.zot (posh q.p.+.q.hin syd +.zot ruf)] - ~& %wafting [mos ..^$(ran.ruf ran.zat)] :: merge in new obj :: %wake @@ -2212,6 +2210,7 @@ ^- rand [p q [p q.q]:r] :: +:: XX perhaps fil.khan should be (unit (unit mime)) and !> ++ khan-to-soba |= [ank=(unit ankh) kan=(unit khan)] ^- soba diff --git a/arvo/ford.hoon b/arvo/ford.hoon index 083ae23e9..663b5b080 100644 --- a/arvo/ford.hoon +++ b/arvo/ford.hoon @@ -872,10 +872,8 @@ %+ cope (fang cof for bek) |= [cof=cafe pro=vase] ?: &((slob %grow p.pro) (slob too p:(slap pro [%cnzy %grow]))) - ~& [%herep-a -.vax] %+ cope (keel cof pro [[%& 6]~ vax]~) |= [cof=cafe pox=vase] - ~& %herep-b (maim cof pox [%tsgr [%cnzy %grow] [%cnzy too]]) %+ cope (fang cof too bek) |= [cof=cafe pro=vase] @@ -1069,7 +1067,6 @@ %+ cool |.(leaf/"ford: vale {} {} {<`@p`(mug r.kas)>}") %+ cope (lave cof p.kas q.kas r.kas) |= [cof=cafe vax=vase] - ~& [%valing p.kas p.vax] (fine cof `cage`[p.kas vax]) == :: diff --git a/main/mar/hoon/door.hook b/main/mar/hoon/door.hook index 374f377fa..da512bffe 100644 --- a/main/mar/hoon/door.hook +++ b/main/mar/hoon/door.hook @@ -6,7 +6,6 @@ |_ own=@t :: ++ grow :: convert to - ~& hoon=(met 3 own) |% ++ mime `^mime`[/text/hoon (taco own)] :: convert to %mime ++ psal ;div:(pre:"{(trip own)}") :: convert to %html diff --git a/main/mar/txt-diff/door.hook b/main/mar/txt-diff/door.hook index ee94a8e97..b9172e2d6 100644 --- a/main/mar/txt-diff/door.hook +++ b/main/mar/txt-diff/door.hook @@ -6,6 +6,6 @@ :: ++ grab :: convert from |% - ++ noun ,(urge cord) :: clam from %noun + ++ noun (urge cord) :: clam from %noun -- -- From 030cae0cdee210eefd000ce5d005ee7692de677e Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Tue, 10 Mar 2015 17:09:53 -0400 Subject: [PATCH 10/89] waypoint --- arvo/clay.hoon | 196 +++++++++++++++++++++++++++++++------------------ 1 file changed, 126 insertions(+), 70 deletions(-) diff --git a/arvo/clay.hoon b/arvo/clay.hoon index 5aed95e94..0be06a765 100644 --- a/arvo/clay.hoon +++ b/arvo/clay.hoon @@ -100,6 +100,7 @@ $& [p=silk q=silk] :: cons $% [%bake p=mark q=beam r=path] :: local synthesis [%boil p=mark q=beam r=path] :: general synthesis + [%bunt p=mark] :: example of mark [%call p=silk q=silk] :: slam [%cast p=mark q=silk] :: translate [%diff p=silk q=silk] :: diff @@ -148,6 +149,7 @@ ++ rove (each mood moot) :: stored request ++ rung $: rus=(map desk rede) :: neighbor desks == :: +++ tage ,[[%tabl p=(list (pair marc marc))] q=vase] :: %tabl gage ++ dork :: diff work $: sot=(list ,[p=path q=misu]) :: lon=(list path) :: @@ -204,6 +206,27 @@ :: ~& [%aver-mun nao [%from syd lim q.mun]] ?~(nao ~ [~ (read-at-aeon:ze u.nao mun)]) :: + ++ made-to-tage + |= res=(each bead (list tank)) + ^- tage + ?: ?=(%| -.res) + ~| %ford-fail + ~> %mean.|.(p.res) :: interpolate ford fail into stack trace + !! + ?@ p.q.p.res + ~|(%bad-marc !!) + q.p.res + :: + ++ tage-to-cages + |= tab=tage + ^- (list (pair cage cage)) + ?~ p.tab + ~ + :_ $(p.tab t.p.tab, q.tab (slot 3 q.tab)) + ~| %strange-gage + :- [?^(p.i.p.tab !! p.i.p.tab) (slot 4 q.tab)] + [?^(q.i.p.tab !! q.i.p.tab) (slot 5 q.tab)] + :: ++ balk :: read and send |= [hen=duct yon=@ud mun=mood] ^+ +> @@ -340,13 +363,13 @@ (edit:ze wen lem) ?~ hat +>.$ - (echo:(checkout-ankh u.hat) wen ~ lem) + (echo:(checkout-ankh-a u.hat) wen ~ lem) ?. =(~ dok) ~& %already-applying-changes +> =+ ^= sop |= [a=path b=miso] ^- ? - ?| ?=(%del -.b) + ?| ?=(%del -.b) ?& ?=(%ins -.b) ?=(%mime p.p.b) =+ (slag (dec (lent a)) a) @@ -400,13 +423,6 @@ [%cast - [%done ~ p.mis]] == :: - ++ patch - |= [pax=path bar=lobe] - ^- [duct path note] - :+ hen - [%patching (scot %p who) syd pax] - [%f %exec who ~ (lobe-to-silk:ze bar)] - :: ++ apply-edit |= wen=@da ^+ +> @@ -486,7 +502,7 @@ ++ take-patch |= res=(each bead (list tank)) ^+ +> - ?: ?=(%| -.res) + ?: ?=(%| -.res) %_ +>.$ dok ~ yel @@ -591,28 +607,52 @@ == == :: - ++ checkout-ankh + ++ checkout-ankh-a |= hat=(map path lobe) ^+ +> - %_ +>.$ - tag - :_ tag - :^ hen - [%patching (scot %p who) syd ~] - %f - :^ %exec who ~ :- %tabl - ^- (list (pair silk silk)) - %+ turn (~(tap by hat)) - |= [a=path b=lobe] - ^- (pair silk silk) - :- [%done ~ %path !>(a)] - |- ^- silk - =+ bob=(~(got by lat.ran) b) - ?- -.bob - %direct [%done ~ q.bob] - %indirect [%done ~ q.bob] - %delta [%pact $(b q.bob) [%done ~ r.bob]] - == + =- %_(+>.$ tag [- tag]) + :* hen + [%patching-a (scot %p who) syd ~] + %f %exec who ~ %tabl + ^- (list (pair silk silk)) + %+ turn (~(tap by hat)) + |= [a=path b=lobe] + ^- (pair silk silk) + :^ [%done ~ %path !>(a)] + [%bunt (lobe-to-mark b)] + =+ bol=(lobe-to-blob b) + ?. ?=(%direct -.bol) + [%done ~ %null !>(~)] + [%bunt p.r.bol] + [%done ~ %$ !>(b)] + == + :: + ++ take-patching-a + |= res=(each bead (list tank)) + ^+ +> + ~| %patching-a + %- checkout-ankh-b + %+ turn (tage-to-cages (made-to-tage res)) + |= [pax=cage qal=cage] + ^- [pax=cage bun=cage dif=cage lob=cage] + ?. ?=(%path p.pax) ~|(%strange-marc-a !!) + ?. ?=(%$ p.qal) ~|(%strange-marc-b !!) + [pax (slot 2 qal) (slot 6 qal) (slot 7 qal)] + :: + ++ checkout-ankh-b + |= hab=(list ,[pax=cage bun=cage dif=cage lob=cage]) + ^+ +> + =- %_(+>.$ tag [- tag]) + :* hen + [%patching-b (scot %p who) syd ~] + %f %exec who ~ %tabl + ^- (list (pair silk silk)) + %+ turn hab + |= [pax=cage bun=cage dif=cage lob=cage] + ^- (pair silk silk) + :- [%done ~ pax] + =+ tie=?:(?=(%null p.dif) ~ `p.q.dif) + (lobe-to-silk ((hard lobe) q.q.lob) p.q.bun tie) == :: ++ apply-foreign-update :: apply subscription @@ -770,11 +810,11 @@ |= a=plop ?- -.a %delta - :- [%done ~ %blob !>([%delta p.a q.a *cage])] + :- [%done ~ %blob !>([%delta p.a q.a *cask])] [%vale p.r.a him q.r.a] :: %direct - :- [%done ~ %blob !>([%direct p.a *cage])] + :- [%done ~ %blob !>([%direct p.a *cask])] [%vale p.q.a him q.q.a] :: %indirect ~| %foreign-indirect-not-implemented !! @@ -788,7 +828,7 @@ ?> ?=(^ nak.u.ref) ?: ?=(%| -.res) ~| "validate foreign plops failed" - ~& [%plop-fail (turn p.res |=(tank ~(ram re +<)))] + ~| [%plop-fail (turn p.res |=(tank ~(ram re +<)))] !! =+ cay=q.p.res ?@ p.cay ~| %plop-bad-marc !! @@ -809,8 +849,8 @@ =+ bob=((hard blob) -.q.coy) ~& [%taking p.coy] ?- -.bob - %delta [-.bob p.bob q.bob q.i.p.p.cay (slot 3 coy)] - %direct [-.bob p.bob q.i.p.p.cay (slot 3 coy)] + %delta [-.bob p.bob q.bob q.i.p.p.cay [!!]:(slot 3 coy)] + %direct [-.bob p.bob q.i.p.p.cay [!!]:(slot 3 coy)] %indirect ~| %plop-indirect-not-implemented !! == %^ apply-foreign-update @@ -901,37 +941,35 @@ ++ aeon-to-yaki (cork aeon-to-tako tako-to-yaki) ++ lobe-to-blob ~(got by lat.ran) ++ tako-to-yaki ~(got by hut.ran) - ++ lobe-to-silk + ++ lobe-to-mark |= a=lobe + => (lobe-to-blob a) + ?- - + %delta p.q + %direct p.q + %indirect p.q + == + ++ lobe-to-silk + |= [a=lobe b=type c=(unit type)] |- ^- silk =+ bob=(~(got by lat.ran) a) ?- -.bob - %direct [%done ~ q.bob] - %indirect [%done ~ q.bob] - %delta [%pact $(a q.bob) [%done ~ r.bob]] - == - :: - ++ blob-to-plop - |= a=blob - ^- plop - => a - ?- - - %delta [- p q [p q.q]:r] - %direct [- p [p q.q]:q] - %indirect [- p [p q.q]:q [p q.q]:r s] + %direct [%done ~ p.q.bob b q.q.bob] + %indirect [%done ~ p.q.bob b q.q.bob] + %delta [%pact $(a q.q.bob) [%done ~ p.r.bob (need c)]] == :: ++ make-direct :: make blob - |= p=cage + |= p=cask ^- blob - [%direct (mug p) p] + [%direct (shax (jam p)) p] :: ++ make-delta :: make blob delta - |= [p=lobe q=cage] + |= [p=[p=mark q=lobe] q=cask] ^- blob =+ t=[%delta 0 p q] =+ ^= has - %^ cat 7 (sham [%blob q.q.q]) + %^ cat 7 (sham [%blob q.q]) (sham [%lobe p]) [%delta has p q] :: @@ -959,7 +997,8 @@ ?: (~(has in sar) pat) :: has update bat %+ ~(put by bat) pat - ~|((crip ) (lobe-to-blob gar)) :: use original + ~| [pat gar (lent (~(tap by lat.ran)))] + (lobe-to-blob gar) :: use original ^= bar ^- (map path blob) %+ roll lar |= [[pat=path mys=misu] bar=(map path blob)] @@ -971,22 +1010,23 @@ %+ ~(put by bar) pat %- make-direct ?: &(?=(%mime -.p.mys) =([%hook ~] (slag (dec (lent pat)) pat))) - `cage`[%hook [%atom %t] +.+.q.q.p.mys] + `cask`[%hook +.+.q.q.p.mys] ?: &(?=(%mime -.p.mys) =([%hoon ~] (slag (dec (lent pat)) pat))) - `cage`[%hoon [%atom %t] +.+.q.q.p.mys] + `cask`[%hoon +.+.q.q.p.mys] p.mys %del :: delete if exists ?. |((~(has by hat) pat) (~(has by bar) pat)) !! (~(del by bar) pat) %dif :: mutate, must exist =+ ber=(~(get by bar) pat) :: XX typed + =+ for==>((flop pax) ?~(. %$ i)) ?~ ber =+ har=(~(get by hat) pat) ?~ har !! %+ ~(put by bar) pat - (make-delta u.har p.mys) + (make-delta [(lobe-to-mark u.har) u.har] p.mys) :: XX check vase !evil %+ ~(put by bar) pat - (make-delta p.u.ber p.mys) + (make-delta [(lobe-to-mark p.u.ber) p.u.ber] p.mys)::XX check vase !evil == :: ++ as-arch @@ -1005,7 +1045,7 @@ ?: (gth p.lok lim) ~ |- ^- (unit aeon) ?: =(0 let.dom) [~ 0] :: avoid underflow - ?: %+ gte p.lok + ?: %+ gte p.lok =< t ~| [%letdom let=let.dom hit=hit.dom hut=(~(run by hut.ran) ,~)] ~| [%getdom (~(get by hit.dom) let.dom)] @@ -1031,7 +1071,7 @@ ank(q [~ (sham q.q.zar) zar]) =+ nak=(~(get by r.ank) i.pat) %= ank - r %+ ~(put by r.ank) i.pat + r %+ ~(put by r.ank) i.pat $(pat t.pat, ank (fall nak *ankh)) == :: @@ -1144,7 +1184,7 @@ == :: ++ data-twixt-takos - |= [a=(unit tako) b=tako] + |= [a=(unit tako) b=tako] ^- [(set yaki) (set plop)] =+ yal=(turn (~(tap in (reachable-takos b))) tako-to-yaki) :- (sa yal) @@ -1154,7 +1194,7 @@ |= yak=yaki %+ turn (~(tap by q.yak)) |= [pax=path lob=lobe] - (blob-to-plop (lobe-to-blob lob)) + `plop`(lobe-to-blob lob) :: ++ reachable-takos :: reachable |= p=tako :: XX slow @@ -1393,7 +1433,7 @@ ++ diffed-ali |= res=(each bead (list tank)) ^+ +> - ?: ?=(%| -.res) + ?: ?=(%| -.res) (error:he %diff-ali-bad-made leaf/"merge diff ali failed" p.res) =+ cay=q.p.res ?@ p.cay @@ -1443,7 +1483,7 @@ ++ diffed-bob |= res=(each bead (list tank)) ^+ +> - ?: ?=(%| -.res) + ?: ?=(%| -.res) (error:he %diff-bob-bad-made leaf/"merge diff bob failed" p.res) =+ cay=q.p.res ?@ p.cay @@ -1516,7 +1556,7 @@ ?~ - ~| %meet-strange-diff-no-base !! - (make-delta u.- cay) + (make-delta [(lobe-to-mark u.-) u.-] cay) [(~(put by hat) pax p.bol) (~(put by lat) p.bol bol)] =. hat %- ~(uni by old) @@ -1564,7 +1604,7 @@ ++ merged |= res=(each bead (list tank)) ^+ +> - ?: ?=(%| -.res) + ?: ?=(%| -.res) (error:he %merge-bad-made leaf/"merging failed" p.res) =+ cay=q.p.res ?@ p.cay @@ -1600,7 +1640,7 @@ |=([pax=path cay=(unit cage)] ?=(~ cay)) =+ ^- cas=(map path lobe) :: conflict base %- ~(urn by con) - |= [pax=path *] + |= [pax=path *] (~(got by q.bas.dat) pax) =. con :: add/del conflict %- ~(uni by con) @@ -1655,7 +1695,7 @@ ?~ - ~| %mate-strange-diff-no-base !! - (make-delta u.- cay) + (make-delta [(lobe-to-mark u.-) u.-] cay) [(~(put by hat) pax p.bol) (~(put by lat) p.bol bol)] =. hat :: all the content %- ~(uni by old) @@ -1689,7 +1729,7 @@ ++ checked-out |= res=(each bead (list tank)) ^+ +> - ?: ?=(%| -.res) + ?: ?=(%| -.res) (error:he %checkout-bad-made leaf/"merge checkout failed" p.res) =+ cay=q.p.res ?@ p.cay @@ -2116,7 +2156,23 @@ [-.zot abet:(pish:une syd +.zot ran.zat)] [mos ..^$] :: - %patching + %patching-a + ?> ?=([@ @ ~] t.tea) + =+ who=(slav %p i.t.tea) + =+ syd=(slav %tas i.t.t.tea) + =^ mos ruf + ?: (~(has by fat.ruf) who) + =+ une=(un who now hen ruf) + =+ zat=(take-patching-a:(di:wake:une syd) p.q.hin) + =+ zot=abet.zat + [-.zot abet:(pish:une syd +.zot ran.zat)] + =+ zax=(do now hen [who who] syd ruf) + =+ zat=(take-patching-a:zax p.q.hin) + =+ zot=abet.zat + [-.zot (posh who syd +.zot ruf)] + [mos ..^$] + :: + %patching-b ?> ?=([@ @ ~] t.tea) =+ who=(slav %p i.t.tea) =+ syd=(slav %tas i.t.t.tea) From 5f08f67e544bc06d9405e3b1cec7e897852e0ffa Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Tue, 10 Mar 2015 17:11:48 -0400 Subject: [PATCH 11/89] waypoint --- arvo/ford.hoon | 9 + arvo/hoon.hoon | 4 +- arvo/zuse.hoon | 1012 +----------------------------------------------- 3 files changed, 16 insertions(+), 1009 deletions(-) diff --git a/arvo/ford.hoon b/arvo/ford.hoon index 663b5b080..6f6409171 100644 --- a/arvo/ford.hoon +++ b/arvo/ford.hoon @@ -68,6 +68,7 @@ $& [p=silk q=silk] :: cons $% [%bake p=mark q=beam r=path] :: local synthesis [%boil p=mark q=beam r=path] :: general synthesis + [%bunt p=mark] :: example of mark [%call p=silk q=silk] :: slam [%cast p=mark q=silk] :: translate [%diff p=silk q=silk] :: diff @@ -978,6 +979,14 @@ %+ cope (lime cof p.kas bem r.kas) |= [cof=cafe vax=vase] (fine cof `gage`[p.kas vax]) + :: + %bunt + %+ cool |.(leaf/"ford: bunt {}") + :: ?: ?=(?(%hoon %hook) p.kas) + :: (fine cof p.kas [%atom %t] '') + %+ cope (fang cof p.kas [our %main [%da now]]) + |= [cof=cafe tux=vase] + (fine cof [p.kas (slot 6 tux)) :: %call :: %+ cool |.(leaf/"ford: call {<`@p`(mug kas)>}") diff --git a/arvo/hoon.hoon b/arvo/hoon.hoon index a3fe3f6a5..3709315b7 100644 --- a/arvo/hoon.hoon +++ b/arvo/hoon.hoon @@ -9745,8 +9745,8 @@ [%ud p=@ud] :: sequence == :: ++ desk ,@tas :: ship desk case spur -++ cage (cask vase) :: global metadata -++ cask |*(a=_,* (pair mark a)) :: global data +++ cage (pair mark vase) :: global metadata +++ cask (pair mark ,*) :: global data ++ cuff :: permissions $: p=kirk :: readers q=(set monk) :: authors diff --git a/arvo/zuse.hoon b/arvo/zuse.hoon index 513f2d764..c9255dda5 100644 --- a/arvo/zuse.hoon +++ b/arvo/zuse.hoon @@ -1014,989 +1014,6 @@ |= wol=wall ^- octs =+ buf=(rap 3 (turn wol |=(a=tape (crip (weld a `tape`[`@`10 ~]))))) [(met 3 buf) buf] -:: -:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -:: section 3bE, tree sync :: -:: -:: -++ invert-miso :: invert miso - |= mis=miso - ?- -.mis - %del [%ins p.mis] - %ins [%del p.mis] - %dif [%dif p.mis] :: XX incorrect - %mut [%mut q.mis p.mis] - == -:: -++ cosh :: locally rehash - |= ank=ankh :: NB v/unix.c - ank(p rehash:(zu ank)) -:: -++ cost :: new external patch - |= [bus=ankh ank=ankh] :: NB v/unix.c - ^- soba - :- [p.ank p.bus] - %- flop - myz:(change-tree:(zu ank) bus) -:: -++ loth - |= pat=(map path ,*) - ^- (set path) - %+ roll (~(tap by pat) ~) - |= [[p=path *] q=(set path)] - %. p %~ put in q -:: -++ luth - |= [p=(map path ,*) q=(map path ,*)] :: merge keysets - ^- (set path) - (~(uni in (loth p)) (loth q)) -:: -++ blob-to-lobe :: p.blob - |= p=blob - ^- lobe - => p - ?- - - %delta p - %direct p - %indirect p - == -:: -++ ze !: - |_ [lim=@da dome rang] - ++ aeon-to-tako ~(got by hit) - ++ aeon-to-yaki (cork aeon-to-tako tako-to-yaki) - ++ make-yaki :: make yaki - |= [p=(list tako) q=(map path lobe) t=@da] - ^- yaki - =+ ^= has - %^ cat 7 (sham [%yaki (roll p add) q t]) - (sham [%tako (roll p add) q t]) - [p q has t] - :: - ++ tako-to-yaki ~(got by hut) :: grab yaki - ++ lobe-to-blob ~(got by lat) :: grab blob - ++ lobe-to-cage :: grab blob - |= p=lobe :: ^- maybe cage - ^- (each cage ,*) - %- blob-to-cage - (lobe-to-blob p) - :: - ++ make-direct :: make blob - |= [p=cage] - ^- blob - [%direct (mug p.p q.q.p) p] - :: - ++ make-delta :: make blob delta - |= [p=lobe q=cage] - ^- blob - =+ ^= has - %^ cat 7 (sham [%blob p.q q.q.q]) - (sham [%lobe p]) - [%delta has p q] - :: - ++ bulb-to-cage - |= p=bulb - ^- cage - ?-(-.p %direct q.p, %indirect q.p) - :: - ++ blob-to-cage - |= p=blob - :: ^- (each cage ,[cage this]) - ?- -.p - %direct [%& q.p] - %indirect [%& q.p] - %delta [%| r.p $(p (lobe-to-blob q.p))] - == - :: - :: - ++ diff-yakis :: fundamental diff - |= [p=yaki q=yaki] - ^- (map path miso) - !! - :: %+ roll (~(tap in (luth q.p q.q)) ~) - :: |= [pat=path yeb=(map path miso)] - :: =+ leb=(~(get by q.p) pat) - :: =+ lob=(~(get by q.q) pat) - :: ?~ leb (~(put by yeb) pat [%ins (lobe-to-cage (need lob))]) - :: ?~ lob (~(put by yeb) pat [%del (lobe-to-cage (need leb))]) - :: ?: =(u.leb u.lob) yeb - :: =+ veq=(lobe-to-blob u.leb) - :: =+ voq=(lobe-to-blob u.lob) - :: %+ ~(put by yeb) pat - :: :- %dif - :: ?: &(?=(%delta -.voq) =(u.leb q.voq)) :: avoid diff - :: r.voq - :: =+ zeq=(blob-to-noun veq) - :: =+ zoq=(blob-to-noun voq) - :: ((diff (blob-to-umph (lobe-to-blob u.leb))) zeq zoq) - :: - ++ lobes-at-path :: lobes-at-path:ze - |= [yon=aeon pax=path] :: data at path - ^- (map path lobe) - ?: =(0 yon) ~ - %- mo - %+ skim - %. ~ - %~ tap by - =< q - %- aeon-to-yaki - yon - |= [p=path q=lobe] - ?| ?=(~ pax) - ?& !?=(~ p) - =(-.pax -.p) - $(p +.p, pax +.pax) - == == - :: - ++ case-to-aeon :: case-to-aeon:ze - |= lok=case :: act count through - ^- (unit aeon) - ?- -.lok - %da - ?: (gth p.lok lim) ~ - |- ^- (unit aeon) - ?: =(0 let) [~ 0] :: avoid underflow - ?: %+ gte p.lok - =< t - %- aeon-to-yaki - let - [~ let] - $(let (dec let)) - :: - %tas (~(get by lab) p.lok) - %ud ?:((gth p.lok let) ~ [~ p.lok]) - == - :: - ++ as-arch :: as-arch:ze - ^- arch :: arch report - :+ p.ank - ?~(q.ank ~ [~ p.u.q.ank]) - |- ^- (map ,@ta ,~) - ?~ r.ank ~ - [[p.n.r.ank ~] $(r.ank l.r.ank) $(r.ank r.r.ank)] - :: - ++ reachable-takos :: reachable - |= p=tako :: XX slow - ^- (set tako) - =+ y=(tako-to-yaki p) - =+ t=(~(put in *(set tako)) p) - %+ roll p.y - |= [q=tako s=_t] - ?: (~(has in s) q) :: already done - s :: hence skip - (~(uni in s) ^$(p q)) :: otherwise traverse - :: - ++ new-lobes :: object hash set - |= [b=(set lobe) a=(set tako)] :: that aren't in b - ^- (set lobe) - %+ roll (~(tap in a) ~) - |= [tak=tako bar=(set lobe)] - ^- (set lobe) - =+ yak=(tako-to-yaki tak) - %+ roll (~(tap by q.yak) ~) - |= [[path lob=lobe] far=_bar] - ^- (set lobe) - ?~ (~(has in b) lob) :: don't need - far - =+ gar=(lobe-to-blob lob) - ?- -.gar - %direct (~(put in far) lob) - %delta (~(put in $(lob q.gar)) lob) - %indirect (~(put in $(lob s.gar)) lob) - == - :: - ++ new-lobes-takos :: garg & repack - |= [b=(set lobe) a=(set tako)] - ^- [(set tako) (set lobe)] - [a (new-lobes b a)] - :: - ++ reachable-between-takos - |= [a=(unit tako) b=tako] :: pack a through b - ^- [(set tako) (set lobe)] - =+ ^= sar - ?~ a ~ - (reachable-takos r:(tako-to-yaki u.a)) - =+ yak=`yaki`(tako-to-yaki b) - %+ new-lobes-takos (new-lobes ~ sar) :: get lobes - |- ^- (set tako) :: walk onto sar - ?: (~(has in sar) r.yak) - ~ - =+ ber=`(set tako)`(~(put in `(set tako)`~) `tako`r.yak) - %- ~(uni in ber) - ^- (set tako) - %+ roll p.yak - |= [yek=tako bar=(set tako)] - ^- (set tako) - ?: (~(has in bar) yek) :: save some time - bar - %- ~(uni in bar) - ^$(yak (tako-to-yaki yek)) - :: - ++ takos-to-yakis :: trivial - |= a=(set tako) - ^- (set yaki) - (sa (turn (~(tap by a)) tako-to-yaki)) - :: - ++ lobes-to-blobs :: trivial - |= a=(set lobe) - ^- (set blob) - (sa (turn (~(tap by a)) lobe-to-blob)) - :: - ++ make-nako :: gack a through b - |= [a=aeon b=aeon] - ^- [(map aeon tako) aeon (set yaki) (set blob)] - :_ :- b - =- [(takos-to-yakis -<) (lobes-to-blobs ->)] - %+ reachable-between-takos - (~(get by hit) a) :: if a not found, a=0 - (aeon-to-tako b) - ^- (map aeon tako) - %- mo %+ skim (~(tap by hit) ~) - |= [p=aeon *] - &((gth p a) (lte p b)) - :: - :::::::::::::::::::::::::::::::::::::::::::::::::::::::: - ++ query :: query:ze - |= ren=?(%u %v %x %y %z) :: endpoint query - ^- (unit cage) - ?- ren - %u [~ %rang !>(`rang`+<+>.query)] - %v [~ %dome !>(`dome`+<+<.query)] - %x ?~(q.ank ~ [~ q.u.q.ank]) - %y [~ %arch !>(as-arch)] - %z [~ %ankh !>(ank)] - == - :: - ++ rewind :: rewind:ze - |= yon=aeon :: rewind to aeon - ^- (unit ,_+>) - ?: =(let yon) `+> - ?: (gth yon let) !! :: don't have version - =+ hat=q:(aeon-to-yaki yon) - ?: (~(any by hat) |=(a=lobe ?=(%delta [-:(lobe-to-blob a)]))) - ~ - =+ ^- (map path bulb) - %- ~(run by hat) - |= a=lobe - ^- bulb - =+ (lobe-to-blob a) - ?< ?=(%delta -.-) - - - `+>.$(ank (checkout-ankh -), let yon) - :: - :::: - ++ update-lat :: update-lat:ze - |= [lag=(map path blob) sta=(map lobe blob)] :: fix lat - ^- [(map lobe blob) (map path lobe)] - %+ roll (~(tap by lag) ~) - |= [[pat=path bar=blob] [lut=_sta gar=(map path lobe)]] - ?~ (~(has by lut) p.bar) - [lut (~(put by gar) pat p.bar)] - :- (~(put by lut) p.bar bar) - (~(put by gar) pat p.bar) - :: - ++ apply-changes :: apply-changes:ze - |= lar=(list ,[p=path q=misu]) :: store changes - ^- (map path blob) - =+ ^= hat :: current state - ?: =(let 0) :: initial commit - ~ :: has nothing - =< q - %- aeon-to-yaki - let - =- =+ sar=(sa (turn lar |=([p=path *] p))) :: changed paths - %+ roll (~(tap by hat) ~) :: find unchanged - |= [[pat=path gar=lobe] bat=_bar] - ?: (~(has in sar) pat) :: has update - bat - (~(put by bat) pat (lobe-to-blob gar)) :: use original - ^= bar ^- (map path blob) - %+ roll lar - |= [[pat=path mys=misu] bar=(map path blob)] - ^+ bar - ?- -.mys - %ins :: insert if not exist - ?: (~(has by bar) pat) !! :: - ?: (~(has by hat) pat) !! :: - %+ ~(put by bar) pat - %- make-direct - ?: &(?=(%mime -.p.mys) =([%hook ~] (slag (dec (lent pat)) pat))) - `cage`[%hook [%atom %t] +.+.q.q.p.mys] - ?: &(?=(%mime -.p.mys) =([%hoon ~] (slag (dec (lent pat)) pat))) - `cage`[%hoon [%atom %t] +.+.q.q.p.mys] - p.mys - %del :: delete if exists - ?. |((~(has by hat) pat) (~(has by bar) pat)) !! - (~(del by bar) pat) - %dif :: mutate, must exist - =+ ber=(~(get by bar) pat) :: XX typed - ?~ ber - =+ har=(~(get by hat) pat) - ?~ har !! - %+ ~(put by bar) pat - (make-delta u.har p.mys) - %+ ~(put by bar) pat - (make-delta p.u.ber p.mys) - == - :: - ++ checkout-ankh :: checkout-ankh:ze - |= hat=(map path bulb) :: checkout commit - ^- ankh - %- cosh - %+ roll (~(tap by hat) ~) - |= [[pat=path bar=bulb] ank=ankh] - ^- ankh - %- cosh - ?~ pat - =+ zar=(bulb-to-cage bar) - ank(q [~ (sham q.q.zar) zar]) - =+ nak=(~(get by r.ank) i.pat) - %= ank - r %+ ~(put by r.ank) i.pat - $(pat t.pat, ank (fall nak *ankh)) - == - :: - ++ forge-yaki :: forge-yaki:ze - |= [wen=@da par=(unit tako) lem=suba] :: forge yaki - =+ ^= per - ?~ par ~ - ~[u.par] - =+ gar=(update-lat (apply-changes q.lem) lat) - :- %^ make-yaki per +.gar wen :: from existing diff - -.gar :: fix lat - :: - ++ forge-nori :: forge-nori:ze - |= yak=yaki :: forge nori (ugly op) - ^- nori :: basically zerg w/ nori - ?~ p.yak !! :: no parent -> can't diff - :+ %& *cart :: diff w/ 1st parent - (~(tap by (diff-yakis (tako-to-yaki i.p.yak) yak)) ~) - :: - :: graph algorithms (bottleneck) - :: - ++ reduce-merge-points :: reduce merge points - |= unk=(set yaki) :: maybe need jet - =| gud=(set yaki) - =+ ^= zar - ^- (map tako (set tako)) - %+ roll (~(tap in unk) ~) - |= [yak=yaki qar=(map tako (set tako))] - (~(put by qar) r.yak (reachable-takos r.yak)) - |- - ^- (set yaki) - ?~ unk gud - =+ tek=`yaki`n.unk - =+ bun=(~(del in `(set yaki)`unk) tek) - ?: %+ roll (~(tap by (~(uni in gud) bun)) ~) :: only good + unknown - |= [tak=yaki god=?] - ^- ? - ?. god god - (~(has in (~(got by zar) r.tak)) tek) - $(gud (~(put in gud) tek), unk bun) - $(unk bun) - :: - ++ future-find-merge-points :: merge points fast - |= [p=yaki q=yaki] :: (future zeal) - ^- (set yaki) :: zear still uses zule - %- reduce-merge-points :: this is test-only - =+ s=(~(put in *(set tako)) r.p) :: not actually used - =+ t=(~(put in *(set tako)) t.p) :: but might be active - =| u=(set yaki) :: eventually - |- ^- (set yaki) - =+ v=(~(int in s) t) :: found common - =+ ^= qez :: drop common - ^- [s=(set tako) t=(set tako)] - %+ roll (~(tap in v) ~) - |= [tak=tako bar=_s zar=_t] - [(~(del in bar) tak) (~(del in zar) tak)] - ?: &(=(~ s.qez) =(~ s.qez)) - (~(uni in u) (takos-to-yakis v)) - %= $ - u (~(uni in u) (takos-to-yakis v)) - s (add-parents s.qez) - t (add-parents t.qez) - == - :: - ++ add-parents :: expand set - |= qez=(set tako) - ^- (set tako) - %+ roll (~(tap in qez) ~) - |= [tak=tako zar=(set tako)] - %- ~(uni in (~(put in zar) tak)) - (sa p:(tako-to-yaki tak)) - :: - ++ find-merge-points :: merge points - |= [p=yaki q=yaki] :: maybe need jet - ^- (set yaki) - %- reduce-merge-points - =+ r=(reachable-takos r.p) - |- ^- (set yaki) - ?: (~(has in r) q) (~(put in *(set yaki)) q) :: done - %+ roll p.q - |= [t=tako s=(set yaki)] - ?: (~(has in r) t) - (~(put in s) (tako-to-yaki t)) :: found - (~(uni in s) ^$(q (tako-to-yaki t))) :: traverse - :: - :: merge logic - :: - ++ clean :: clean - |= wig=(urge) - ^- (urge) - ?~ wig ~ - ?~ t.wig wig - ?: ?=(%& -.i.wig) - ?: ?=(%& -.i.t.wig) - $(wig [[%& (add p.i.wig p.i.t.wig)] t.t.wig]) - [i.wig $(wig t.wig)] - ?: ?=(%| -.i.t.wig) - $(wig [[%| (welp p.i.wig p.i.t.wig) (welp q.i.wig q.i.t.wig)] t.t.wig]) - [i.wig $(wig t.wig)] - :: - ++ match-conflict :: match conflict - |= [us=[ship desk] th=[ship desk] p=(urge) q=(urge) r=(list)] - ^- [p=[p=(list) q=(list)] q=[p=(urge) q=(urge) r=(list)]] - =+ cas=(hard (list ,@t)) - =+ cat=(hard (urge ,@t)) - =+ mar=(match-merge (cat p) (cat q) (cas r)) - :- :- s.q.mar - (annotate us th p.p.mar q.p.mar s.q.mar) :: annotation - :- p.q.mar - :- q.q.mar - r.q.mar - :: - ++ annotate :: annotate conflict - |= [us=[ship desk] th=[ship desk] p=(list ,@t) q=(list ,@t) r=(list ,@t)] - ^- (list ,@t) - %- zing - ^- (list (list ,@t)) - %- flop - ^- (list (list ,@t)) - :- :_ ~ - %^ cat 3 '<<<<<<<<<<<<' - %^ cat 3 ' ' - %^ cat 3 `@t`(scot %p -.us) - %^ cat 3 '/' - +.us - :- p - :- ~['------------'] - :- r - :- ~['++++++++++++'] - :- q - :- :_ ~ - %^ cat 3 '>>>>>>>>>>>>' - %^ cat 3 ' ' - %^ cat 3 `@t`(scot %p -.th) - %^ cat 3 '/' - +.th - ~ - :: - ++ match-merge :: match merge - |= [p=(urge ,@t) q=(urge ,@t) r=(list ,@t)] :: resolve conflict - =| s=[p=(list ,@t) q=(list ,@t)] :: p chunk - =| t=[p=(list ,@t) q=(list ,@t)] :: q chunk - |- ^- $: p=[p=(list ,@t) q=(list ,@t)] - $= q - $: p=(urge ,@t) - q=(urge ,@t) - r=(list ,@t) - s=(list ,@t) - == == - ?~ p [[q.s q.t] p q r p.s] :: can't be conflict - ?~ q [[q.s q.t] p q r p.s] :: can't be conflict - ?- -.i.p - %& ?> ?=(%| -.i.q) :: is possibly conflict - ?: (gte p.i.p (lent p.i.q)) :: trivial resolve - :::- (weld p.s p.i.q) :: extend to q - :- :- (welp (flop (scag (lent p.i.q) r)) q.s) - (welp q.i.q q.t) - :- ?: =(p.i.p (lent p.i.q)) t.p - [[%& (sub p.i.p (lent p.i.q))] t.p] - :- t.q - :- (flop (slag (lent p.i.q) r)) - (welp (flop (scag (lent p.i.q) r)) p.s) - =+ tex=(flop (scag p.i.p r)) - ?~ t.p :: extend to end - %= $ - ::s [(welp p.s tex) (welp q.s tex)] - p ~[[%| [tex tex]]] - ::r (slag p.i.p r) - == - ?> ?=(%| -.i.t.p) :: fake skip - %= $ - ::s [(welp p.s tex) (welp q.s tex)] - p [[%| [(welp p.i.t.p tex) (welp q.i.t.p tex)]] t.t.p] - ::r (slag p.i.p r) - == - %| ?- -.i.q - %& =+ mar=$(p q, q p, s t, t s) :: swap recursion - [[q.p.mar p.p.mar] q.q.mar p.q.mar r.q.mar s.q.mar] - %| ?: =((lent p.i.p) (lent p.i.q)) :: perfect conflict - ?> =(p.i.p p.i.q) :: sane conflict - :- :- (welp q.i.p q.s) - (welp q.i.q q.t) - :- t.p - :- t.q - :- (scag (lent p.i.p) r) - (welp (flop (scag (lent p.i.p) r)) p.s) - ?. (lth (lent p.i.p) (lent p.i.q)) - =+ mar=$(p q, q p, s t, t s) :: swap recursion - [[q.p.mar p.p.mar] q.q.mar p.q.mar r.q.mar s.q.mar] - ?> .= p.i.p :: sane conflict - (slag (sub (lent p.i.q) (lent p.i.p)) p.i.q) - %= $ :: extend p - p t.p - p.s (welp p.i.p p.s) - q.s (welp q.i.p q.s) - p.t (welp p.i.p p.s) :: subset of q - q.t (welp q.i.q q.s) :: just consume all out - q [[%| (scag (sub (lent p.i.q) (lent p.i.p)) p.i.q) ~] t.q] - r (slag (lent p.i.p) r) - == - == - == - :: ++ qeal :: merge p,q - :: |* [us=[ship desk] th=[ship desk] pat=path p=miso q=miso r=(list) con=?] - :: ^- miso :: in case of conflict - :: ~| %qeal-fail - :: ?> ?=(%dif -.p) - :: ?> ?=(%dif -.q) - :: ?> ?=(%c -.q.p.p) - :: ?> ?=(%c -.q.p.q) - :: =+ s=(clean p.q.p.p) - :: =+ t=(clean p.q.p.q) - :: :- %dif - :: :- %c :: todo is this p.p.p? - :: :- %c - :: |- ^- (urge) - :: ::?~ s ?: (qual t) t - :: :: ~| %qail-conflict !! - :: ::?~ t ?: (qual s) s - :: :: ~| %qail-conflict !! - :: ?~ s t - :: ?~ t s - :: ?- -.i.s - :: %& - :: ?- -.i.t - :: %& - :: ?: =(p.i.s p.i.t) - :: [i.s $(s t.s, t t.t, r (slag p.i.s r))] - :: ?: (gth p.i.s p.i.t) - :: [i.t $(t t.t, p.i.s (sub p.i.s p.i.t), r (slag p.i.t r))] - :: [i.s $(s t.s, p.i.t (sub p.i.t p.i.s), r (slag p.i.s r))] - :: %| - :: ?: =(p.i.s (lent p.i.t)) - :: [i.t $(s t.s, t t.t, r (slag p.i.s r))] - :: ?: (gth p.i.s (lent p.i.t)) - :: :- i.t - :: $(t t.t, p.i.s (sub p.i.s (lent p.i.t)), r (slag (lent p.i.t) r)) - :: ?. con ~| %quil-conflict !! :: conflict - :: ~& [%quil-conflict-soft pat] - :: =+ mar=(match-conflict us th s t r) - :: [[%| p.mar] $(s p.q.mar, t q.q.mar, r r.q.mar)] - :: == - :: %| - :: ?- -.i.t - :: %| - :: ?. con ~| %quil-conflict !! - :: ~& [%quil-conflict-soft pat] - :: =+ mar=(match-conflict us th s t r) - :: [[%| p.mar] $(s p.q.mar, t q.q.mar, r r.q.mar)] - :: %& - :: ?: =(p.i.t (lent p.i.s)) - :: [i.s $(s t.s, t t.t, r (slag p.i.t r))] - :: ?: (gth p.i.t (lent p.i.s)) - :: :- i.s - :: $(s t.s, p.i.t (sub p.i.t (lent p.i.s)), r (slag (lent p.i.s) r)) - :: ?. con ~| %quil-conflict !! - :: ~& [%quil-conflict-soft pat] - :: =+ mar=(match-conflict us th s t r) - :: [[%| p.mar] $(s p.q.mar, t q.q.mar, r r.q.mar)] - :: == - :: == - :: ++ quil :: merge p,q - :: |= $: us=[ship desk] - :: th=[ship desk] - :: pat=path - :: p=(unit miso) - :: q=(unit miso) - :: r=(unit (list)) - :: con=? - :: == - :: ^- (unit miso) - :: ?~ p q :: trivial - :: ?~ q p :: trivial - :: ?- -.u.p - :: %ins ?> ?=(%ins -.u.q) - :: ?. con !! - :: %- some - :: :- %ins - :: %- role - :: %- annotate - :: :- us - :: :- th - :: :- (lore ((hard ,@) p.u.p)) - :: :- (lore ((hard ,@) p.u.q)) - :: ~ - :: %del p - :: %dif ?> ?=(%dif -.u.q) - :: %- some - :: %^ qeal us th - :: :^ pat u.p u.q :: merge p,q - :: :- %- need r - :: con - :: == - :: :: - :: ++ meld :: merge p,q from r - :: |= [p=yaki q=yaki r=yaki con=? us=[ship desk] th=[ship desk]] - :: ^- (map path blob) - :: =+ s=(diff-yakis r p) - :: =+ t=(diff-yakis r q) - :: =+ lut=(luth s t) - :: %- |= res=(map path blob) :: add old - :: ^- (map path blob) - :: %- ~(uni by res) - :: %- mo - :: %+ turn - :: %+ skip (~(tap by q.r) ~) :: loop through old - :: |= [pat=path bar=lobe] ^- ? - :: (~(has in lut) pat) :: skip updated - :: |= [pat=path bar=lobe] ^- [path blob] - :: [pat (lobe-to-blob bar)] :: lookup objects - :: %+ roll (~(tap in (luth s t)) ~) - :: |= [pat=path res=(map path blob)] - :: =+ ^= v - :: %- need - :: %^ quil us th - :: :- pat - :: :+ (~(get by s) pat) - :: (~(get by t) pat) - :: :_ con - :: %- %- lift lore - :: %- %- lift %- hard ,@ :: for %c - :: %- %- lift lobe-to-cage - :: %- ~(get by q.r) - :: pat - :: ?- -.v - :: %del res :: no longer exists - :: %ins :: new file - :: %+ ~(put by res) pat - :: (make-direct p.v) - :: %dif :: patch from r - :: %+ ~(put by res) pat - :: %- make-direct - :: %+ lump p.v - :: %- lobe-to-cage - :: %- ~(got by q.r) pat - :: == - :: :: - :: :: merge types - :: :: - :: ++ mate :: merge p,q - :: |= con=? :: %mate, %meld - :: |= [p=yaki q=yaki us=[ship desk] th=[ship desk]] - :: ^- (map path blob) - :: =+ r=(~(tap in (find-merge-points p q)) ~) - :: ?~ r - :: ~|(%mate-no-ancestor !!) - :: ?: =(1 (lent r)) - :: (meld p q i.r con us th) - :: ~|(%mate-criss-cross !!) - :: :: - :: ++ keep :: %this - :: |= [p=yaki q=yaki [ship desk] [ship desk]] - :: ^- (map path blob) - :: %+ roll (~(tap by q.p) ~) - :: |= [[pat=path lob=lobe] zar=(map path blob)] - :: ^- (map path blob) - :: (~(put by zar) pat (lobe-to-blob lob)) - :: :: - :: ++ drop :: %that - :: |= [p=yaki q=yaki r=[ship desk] s=[ship desk]] - :: ^- (map path blob) - :: (keep q p r s) - :: :: - :: ++ forge :: %forge - :: |= [p=yaki q=yaki s=[ship desk] t=[ship desk]] - :: ^- (map path blob) - :: =+ r=(~(tap in (find-merge-points p q)) ~) - :: ?~ r - :: ~|(%forge-no-ancestor !!) - :: %- |= [r=yaki lut=(map lobe blob) hat=(map tako yaki)] - :: =. lat lut - :: =. hut hat - :: (meld p q r & s t) :: fake merge - :: %+ roll t.r :: fake ancestor - :: |= [par=yaki [for=_i.r lut=_lat hat=_hut]] - :: =. lat lut - :: =+ ^= far - :: ^- (map path lobe) - :: %- ~(urn by (forge par for s t)) - :: |= [k=path v=blob] (blob-to-lobe v) - :: =+ u=(make-yaki [r.par r.for ~] far `@da`0) :: fake yaki - :: :- u - :: :_ (~(put by hat) r.u u) - :: =< - - :: %- update-lat - :: :_ ~ - :: %- ~(urn by q.u) - :: |= [path k=lobe] - :: (lobe-to-blob k) - :: :: - :: :: actual merge - :: :: - :: ++ merge - :: |= [us=[ship desk] th=[ship desk]] - :: |= [p=yaki q=yaki r=@da s=$+([yaki yaki [ship desk] [ship desk]] (map path blob))] - :: ^- [yaki (map path blob)] - :: =+ u=(s p q us th) - :: =+ ^= t - :: ^- (map path lobe) - :: %+ roll (~(tap by u) ~) - :: |= [[pat=path bar=blob] yeb=(map path lobe)] - :: (~(put by yeb) pat (blob-to-lobe bar)) - :: :_ u - :: (make-yaki [r.p r.q ~] t r) - :: :: - :: ++ strategy :: merge strategy - :: |= gem=?(%meld %mate %that %this) - :: ?- gem - :: %meld (mate %.y) - :: %mate (mate %.n) - :: %this keep - :: %that drop - :: == - :: :: - :: ++ construct-merge :: construct-merge:ze - :: |= [gem=germ who=ship des=desk sab=saba now=@da] :: construct merge - :: ^- (unit (unit mizu)) :::::: - :: =+ for=s.sab :: foreign dome - :: =+ mer=(merge [who des] [p.sab q.sab]) - :: ?- gem - :: %init :: force fine - :: ?. =(let 0) :: hell no - :: !! - :: =+ hot=(~(put by *(map aeon tako)) 1 (~(got by hit.for) let.for)) - :: [~ [~ [1 hot hut lat]]] :: trivial - :: %fine - :: =+ der=(~(got by hit.for) let.for) - :: =+ owr=(~(got by hit) let) - :: ?: =(der owr) - :: [~ ~] - :: ?: (~(has in (reachable-takos owr)) der) - :: [~ ~] - :: ?. (~(has in (reachable-takos der)) owr) - :: ~ :: not a fast forward - :: ~& [%merge-fine p.sab q.sab] - :: [~ [~ [+(let) (~(put by hit) +(let) der) hut lat]]] - :: ?(%mate %that %this %meld) - :: =+ foreign-head=(tako-to-yaki (~(got by hit.for) let.for)) - :: =+ our-head=(tako-to-yaki (~(got by hit) let)) - :: ?: =(r.foreign-head r.our-head) - :: [~ ~] :: up to date - :: ?: (~(has in (reachable-takos r.our-head)) r.foreign-head) - :: [~ ~] :: up to date - :: ?: ?& |(=(gem %mate) =(gem %meld)) - :: (~(has in (reachable-takos r.foreign-head)) r.our-head) - :: == - :: $(gem %fine) :: use fast forward - :: =+ gar=(mer our-head foreign-head now (strategy gem)) - :: =+ yak=-.gar - :: =+ hek=+.gar - :: =. lat -:(update-lat hek ~) :: add new blobs - :: =. hut (~(put by *(map tako yaki)) r.yak yak) - :: =. let +(let) - :: =. hit (~(put by *(map aeon tako)) let r.yak) - :: [~ [~ [let hit hut lat]]] - :: == - :: - ++ read :: read:ze - |= mun=mood :: read at point - ^- (unit cage) - ?: ?=(%v p.mun) - [~ %dome !>(`dome`+<+<.read)] - ?: &(?=(%w p.mun) !?=(%ud -.q.mun)) - ?^(r.mun ~ [~ %aeon !>(let)]) - ?: ?=(%w p.mun) - =+ ^= yak - %- aeon-to-yaki - let - ?^(r.mun ~ [~ %w !>([t.yak (forge-nori yak)])]) - ::?> ?=(^ hit) ?^(r.mun ~ [~ i.hit]) :: what do?? need [@da nori] - (query(ank ank:(descend-path:(zu ank) r.mun)) p.mun) - :: - ++ read-at-aeon :: read-at-aeon:ze - |= [yon=aeon mun=mood] :: seek and read - ^- (unit cage) - ?: &(?=(%w p.mun) !?=(%ud -.q.mun)) :: NB only for speed - ?^(r.mun ~ [~ %aeon !>(yon)]) - %+ biff - (rewind yon) - |= a=_+>.$ - (read:a mun) - :: - ++ equiv :: test paths - |= [p=(map path lobe) q=(map path lobe)] - ^- ? - =- ?. qat %.n - %+ levy (~(tap by q) ~) - |= [pat=path lob=lobe] - (~(has by p) pat) - ^= qat - %+ levy (~(tap by p) ~) - |= [pat=path lob=lobe] - =+ zat=(~(get by q) pat) - ?~ zat %.n - =((lobe-to-cage u.zat) (lobe-to-cage lob)) - :: - ++ edit :: edit:ze - |= [wen=@da lem=nuri] :: edit - ^- [(unit (map path lobe)) _+>] - ?- -.lem - & =^ yak lat :: merge objects - %+ forge-yaki wen - ?: =(let 0) :: initial import - [~ p.lem] - [(some r:(aeon-to-yaki let)) p.lem] - ?. ?| =(0 let) - !=((lent p.yak) 1) - !(equiv q.yak q:(aeon-to-yaki let)) - == - `+>.$ :: silently ignore - =: let +(let) - hit (~(put by hit) +(let) r.yak) - hut (~(put by hut) r.yak yak) - == - [`q.yak +>.$] - :: +>.$(ank (checkout-ankh q.yak)) - | [~ +>.$(lab ?<((~(has by lab) p.lem) (~(put by lab) p.lem let)))] - == - -- -:: -++ zu !: :: filesystem - |= ank=ankh :: filesystem state - =| myz=(list ,[p=path q=miso]) :: changes in reverse - =| ram=path :: reverse path into - |% - ++ rehash :: local rehash - ^- cash - %+ mix ?~(q.ank 0 p.u.q.ank) - =+ axe=1 - |- ^- cash - ?~ r.ank *@ - ;: mix - (shaf %dash (mix axe (shaf %dush (mix p.n.r.ank p.q.n.r.ank)))) - $(r.ank l.r.ank, axe (peg axe 2)) - $(r.ank r.r.ank, axe (peg axe 3)) - == - :: - ++ update-hash %_(. p.ank rehash) :: rehash and save - ++ ascend :: ascend - |= [lol=@ta kan=ankh] - ^+ +> - ?> &(?=(^ ram) =(lol i.ram)) - %= +> - ram t.ram - ank - ?: =([0 ~ ~] ank) - ?. (~(has by r.kan) lol) kan - kan(r (~(del by r.kan) lol)) - kan(r (~(put by r.kan) lol ank)) - == - :: - ++ push-change :: add change - |= mis=miso - ^+ +> - +>(myz [[(flop ram) mis] myz]) - :: - ++ descend :: descend - |= lol=@ta - ^+ +> - =+ you=(~(get by r.ank) lol) - +>.$(ram [lol ram], ank ?~(you [*cash ~ ~] u.you)) - :: - ++ descend-path :: descend recursively - |= way=path - ^+ +> - ?~(way +> $(way t.way, +> (descend i.way))) - :: - ++ overwrite :: write over - |= val=(unit ,[p=cash q=cage]) - ^+ +> - ?~ q.ank - ?~ val +> - (push-change %ins q.u.val) - ?~ val - (push-change %del q.u.q.ank) - ?: =(q.u.val q.u.q.ank) +> - (push-change %mut q.u.q.ank q.u.val) - :: - ++ change-tree :: modify tree - |= bus=ankh - ^+ +> - =. +> (overwrite q.bus) - =+ [yeg=(~(tap by r.ank) ~) gey=(~(tap by r.bus) ~)] - =. +>.$ - |- ^+ +>.^$ - ?~ yeg +>.^$ - ?: (~(has by r.bus) p.i.yeg) $(yeg t.yeg) - $(yeg t.yeg, myz myz:rm-r(ank q.i.yeg, ram [p.i.yeg ram])) - |- ^+ +>.^$ - ?~ gey +>.^$ - $(gey t.gey, myz myz:^$(bus q.i.gey, +> (descend p.i.gey))) - :: - ++ rm-r :: rm -r - |- ^+ + - =. + ?~(q.ank + (push-change %del q.u.q.ank)) - =+ dyr=(~(tap by r.ank) ~) - |- ^+ +.^$ - ?~ dyr +.^$ - =. +.^$ rm-r:(descend p.i.dyr) - $(dyr t.dyr) - :: - ::++ drum :: apply effect - :: |= [pax=path mis=miso] :: XX unused (++dune) - :: ^+ +> - :: ?^ pax - :: update-hash:(ascend:$(pax t.pax, +> (descend i.pax)) i.pax ank) - :: ~| %clay-fail - :: ?- -.mis - :: %del - :: ?> &(?=(^ q.ank) =(q.u.q.ank p.mis)) - :: +>.$(p.ank (mix p.u.q.ank p.ank), q.ank ~) - :: :: - :: %ins - :: ?> ?=(~ q.ank) - :: =+ sam=(sham p.mis) - :: +>.$(p.ank (mix sam p.ank), q.ank [~ sam p.mis]) - :: :: - :: %dif - :: ?> ?=(^ q.ank) - :: =+ nex=(lump p.mis q.u.q.ank) - :: =+ sam=(sham nex) - :: +>.$(p.ank :(mix sam p.u.q.ank p.ank), q.ank [~ sam nex]) - :: == - :::: - ::++ dune :: apply - :: |- ^+ + :: XX unused (++durn) - :: ?~ myz + - :: => .(+ (drum p.i.myz q.i.myz)) - :: $(myz ?>(?=(^ myz) t.myz)) - :::: - ::++ durn :: apply forward - :: |= nyp=soba :: XX unused - :: ^+ +> - :: ?: =([0 0] p.nyp) - :: dune(myz q.nyp) - :: => ?: =(p.ank p.p.nyp) . - :: ~& [%durn-in-wrong p.ank p.p.nyp] - :: . - :: =. +> dune(myz q.nyp) - :: => ?: =(p.ank q.p.nyp) . - :: ~& [%durn-out-wrong p.ank q.p.nyp] - :: . - :: +> - -- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: section 3bF, filesystem interface :: :: @@ -2746,9 +1763,9 @@ pac=rock :: packet data == :: ++ blob :: fs blob - $% [%delta p=lobe q=lobe r=cage] :: delta on q - [%direct p=lobe q=cage] :: immediate - [%indirect p=lobe q=cage r=cage s=lobe] :: both + $% [%delta p=lobe q=[p=mark q=lobe] r=cask] :: delta on q + [%direct p=lobe q=cask] :: immediate + [%indirect p=lobe q=cask r=lobe s=cask] :: both == :: ++ boat ,[(list slip) tart] :: user stage ++ boon :: fort output @@ -2765,9 +1782,6 @@ ++ bray ,[p=life q=(unit life) r=ship s=@da] :: our parent us now ++ brow ,[p=@da q=@tas] :: browser version ++ buck ,[p=mace q=will] :: all security data -++ bulb $% [%direct p=lobe q=cage] :: - [%indirect p=lobe q=cage r=cage s=lobe] :: - == :: ++ cake ,[p=sock q=skin r=@] :: top level packet ++ cape :: end-to-end result $? %good :: delivered @@ -2889,20 +1903,8 @@ [%va p=@tas q=(unit vase)] :: set/clear variable [%xx p=curd] :: return card [%xy p=path q=curd] :: push card - [%xz p=[p=ship q=path] q=ship r=mark s=zang] [%zz p=path q=path r=curd] :: == :: -++ zang :: XX evil hack - $% [%backlog p=path q=?(%da %dr %ud) r=@] :: - [%hola p=path] :: - $: %mess p=path :: - $= q :: - $% [%do p=@t] :: act - [%exp p=@t q=tank] :: code - [%say p=@t] :: speak - == == :: - [%tint p=ship] :: - == :: ++ gilt ,[@tas *] :: presumed gift ++ gens ,[p=lang q=gcos] :: general identity ++ germ ?(%init %fine %that %this %mate %meet %meld) :: merge style @@ -3071,11 +2073,7 @@ ++ pail ?(%none %warm %cold) :: connection status ++ plan (trel view (pair ,@da (unit ,@dr)) path) :: subscription ++ plea ,[p=@ud q=[p=? q=@t]] :: live prompt -++ plop :: typeless blob - $% [%delta p=lobe q=lobe r=(cask)] :: delta on q - [%direct p=lobe q=(cask)] :: immediate - [%indirect p=lobe q=(cask) r=(cask) s=lobe]:: both - == :: +++ plop blob :: unvalidated blob ++ pork ,[p=(unit ,@ta) q=(list ,@t)] :: fully parsed url ++ pred ,[p=@ta q=@tas r=@ta ~] :: proto-path ++ prod ,[p=prom q=tape r=tape] :: prompt @@ -3113,7 +2111,7 @@ ++ rand :: vaseless rant $: p=[p=care q=case r=@tas] :: clade release book q=path :: spur - r=(cask) :: data + r=cask :: data == :: ++ rave :: general request $% [& p=mood] :: single request From 3406a1e9a40b64624ddd8159c61a4e355d7ef937 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Tue, 10 Mar 2015 19:56:08 -0400 Subject: [PATCH 12/89] waypoint --- arvo/clay.hoon | 154 ++++++++++++++++++------------------------------- arvo/ford.hoon | 14 ++++- arvo/hoon.hoon | 4 +- arvo/zuse.hoon | 9 +-- 4 files changed, 74 insertions(+), 107 deletions(-) diff --git a/arvo/clay.hoon b/arvo/clay.hoon index 0be06a765..540a1f4ae 100644 --- a/arvo/clay.hoon +++ b/arvo/clay.hoon @@ -114,6 +114,7 @@ [%ride p=twig q=silk] :: silk thru twig [%tabl p=(list (pair silk silk))] :: list [%vale p=mark q=ship r=*] :: validate [our his] + [%volt p=(set beam) q=(cask ,*)] :: unsafe add type == :: ++ raft :: filesystem $: fat=(map ship room) :: domestic @@ -363,7 +364,7 @@ (edit:ze wen lem) ?~ hat +>.$ - (echo:(checkout-ankh-a u.hat) wen ~ lem) + (echo:(checkout-ankh u.hat) wen ~ lem) ?. =(~ dok) ~& %already-applying-changes +> =+ ^= sop @@ -607,52 +608,22 @@ == == :: - ++ checkout-ankh-a + ++ checkout-ankh |= hat=(map path lobe) ^+ +> - =- %_(+>.$ tag [- tag]) - :* hen - [%patching-a (scot %p who) syd ~] - %f %exec who ~ %tabl - ^- (list (pair silk silk)) - %+ turn (~(tap by hat)) - |= [a=path b=lobe] - ^- (pair silk silk) - :^ [%done ~ %path !>(a)] - [%bunt (lobe-to-mark b)] - =+ bol=(lobe-to-blob b) - ?. ?=(%direct -.bol) - [%done ~ %null !>(~)] - [%bunt p.r.bol] - [%done ~ %$ !>(b)] - == - :: - ++ take-patching-a - |= res=(each bead (list tank)) - ^+ +> - ~| %patching-a - %- checkout-ankh-b - %+ turn (tage-to-cages (made-to-tage res)) - |= [pax=cage qal=cage] - ^- [pax=cage bun=cage dif=cage lob=cage] - ?. ?=(%path p.pax) ~|(%strange-marc-a !!) - ?. ?=(%$ p.qal) ~|(%strange-marc-b !!) - [pax (slot 2 qal) (slot 6 qal) (slot 7 qal)] - :: - ++ checkout-ankh-b - |= hab=(list ,[pax=cage bun=cage dif=cage lob=cage]) - ^+ +> - =- %_(+>.$ tag [- tag]) - :* hen - [%patching-b (scot %p who) syd ~] - %f %exec who ~ %tabl - ^- (list (pair silk silk)) - %+ turn hab - |= [pax=cage bun=cage dif=cage lob=cage] - ^- (pair silk silk) - :- [%done ~ pax] - =+ tie=?:(?=(%null p.dif) ~ `p.q.dif) - (lobe-to-silk ((hard lobe) q.q.lob) p.q.bun tie) + %_ +>.$ + tag + :_ tag + :^ hen + [%patching (scot %p who) syd ~] + %f + :^ %exec who ~ :- %tabl + ^- (list (pair silk silk)) + %+ turn (~(tap by hat)) + |= [a=path b=lobe] + ^- (pair silk silk) + :- [%done ~ %path !>(a)] + (lobe-to-silk:ze b) == :: ++ apply-foreign-update :: apply subscription @@ -810,11 +781,11 @@ |= a=plop ?- -.a %delta - :- [%done ~ %blob !>([%delta p.a q.a *cask])] + :- [%done ~ %blob !>([%delta p.a q.a *page])] [%vale p.r.a him q.r.a] :: %direct - :- [%done ~ %blob !>([%direct p.a *cask])] + :- [%done ~ %blob !>([%direct p.a *page])] [%vale p.q.a him q.q.a] :: %indirect ~| %foreign-indirect-not-implemented !! @@ -950,22 +921,22 @@ %indirect p.q == ++ lobe-to-silk - |= [a=lobe b=type c=(unit type)] + |= a=lobe |- ^- silk =+ bob=(~(got by lat.ran) a) ?- -.bob - %direct [%done ~ p.q.bob b q.q.bob] - %indirect [%done ~ p.q.bob b q.q.bob] - %delta [%pact $(a q.q.bob) [%done ~ p.r.bob (need c)]] + %direct [%volt ~ q.bob] + %indirect [%volt ~ q.bob] + %delta [%pact $(a q.q.bob) [%volt ~ r.bob]] == :: ++ make-direct :: make blob - |= p=cask + |= p=page ^- blob - [%direct (shax (jam p)) p] + [%direct (mug p) p] :: ++ make-delta :: make blob delta - |= [p=[p=mark q=lobe] q=cask] + |= [p=[p=mark q=lobe] q=page] ^- blob =+ t=[%delta 0 p q] =+ ^= has @@ -993,40 +964,42 @@ =- =+ sar=(sa (turn lar |=([p=path *] p))) :: changed paths %+ roll (~(tap by hat) ~) :: find unchanged =< .(bat bar) - |= [[pat=path gar=lobe] bat=(map path blob)] - ?: (~(has in sar) pat) :: has update + |= [[pax=path gar=lobe] bat=(map path blob)] + ?: (~(has in sar) pax) :: has update bat - %+ ~(put by bat) pat - ~| [pat gar (lent (~(tap by lat.ran)))] + %+ ~(put by bat) pax + ~| [pax gar (lent (~(tap by lat.ran)))] (lobe-to-blob gar) :: use original ^= bar ^- (map path blob) %+ roll lar - |= [[pat=path mys=misu] bar=(map path blob)] + |= [[pax=path mys=misu] bar=(map path blob)] ^+ bar ?- -.mys %ins :: insert if not exist - ?: (~(has by bar) pat) !! :: - ?: (~(has by hat) pat) !! :: - %+ ~(put by bar) pat + ?: (~(has by bar) pax) !! :: + ?: (~(has by hat) pax) !! :: + %+ ~(put by bar) pax %- make-direct - ?: &(?=(%mime -.p.mys) =([%hook ~] (slag (dec (lent pat)) pat))) - `cask`[%hook +.+.q.q.p.mys] - ?: &(?=(%mime -.p.mys) =([%hoon ~] (slag (dec (lent pat)) pat))) - `cask`[%hoon +.+.q.q.p.mys] + ?: &(?=(%mime -.p.mys) =([%hook ~] (slag (dec (lent pax)) pax))) + `page`[%hook +.+.q.q.p.mys] + ?: &(?=(%mime -.p.mys) =([%hoon ~] (slag (dec (lent pax)) pax))) + `page`[%hoon +.+.q.q.p.mys] p.mys %del :: delete if exists - ?. |((~(has by hat) pat) (~(has by bar) pat)) !! - (~(del by bar) pat) + ?. |((~(has by hat) pax) (~(has by bar) pax)) !! + (~(del by bar) pax) %dif :: mutate, must exist - =+ ber=(~(get by bar) pat) :: XX typed + =+ ber=(~(get by bar) pax) :: XX typed =+ for==>((flop pax) ?~(. %$ i)) ?~ ber - =+ har=(~(get by hat) pat) + =+ har=(~(get by hat) pax) ?~ har !! - %+ ~(put by bar) pat - (make-delta [(lobe-to-mark u.har) u.har] p.mys) :: XX check vase !evil - %+ ~(put by bar) pat - (make-delta [(lobe-to-mark p.u.ber) p.u.ber] p.mys)::XX check vase !evil + %+ ~(put by bar) pax + (make-delta [(lobe-to-mark u.har) u.har] [p q.q]:p.mys) + :: XX check vase !evil + %+ ~(put by bar) pax + (make-delta [(lobe-to-mark p.u.ber) p.u.ber] [p q.q]:p.mys) + :: XX check vase !evil == :: ++ as-arch @@ -1240,12 +1213,13 @@ =+ hat=q:(aeon-to-yaki yon) ?: (~(any by hat) |=(a=lobe ?=(%delta [-:(lobe-to-blob a)]))) ~ - =+ ^- (map path cage) - %- ~(run by hat) - |= a=lobe - =+ (lobe-to-blob a) - ?-(-.- %direct q.-, %indirect q.-, %delta !!) - `+>.$(ank.dom (checkout-ankh -), let.dom yon) + !! + ::=+ ^- (map path cage) + :: %- ~(run by hat) + :: |= a=lobe + :: =+ (lobe-to-blob a) + :: ?-(-.- %direct q.-, %indirect q.-, %delta !!) + ::`+>.$(ank.dom (checkout-ankh -), let.dom yon) :: ++ update-lat :: update-lat:ze |= [lag=(map path blob) sta=(map lobe blob)] :: fix lat @@ -1695,7 +1669,7 @@ ?~ - ~| %mate-strange-diff-no-base !! - (make-delta [(lobe-to-mark u.-) u.-] cay) + (make-delta [(lobe-to-mark u.-) u.-] [p q.q]:cay) [(~(put by hat) pax p.bol) (~(put by lat) p.bol bol)] =. hat :: all the content %- ~(uni by old) @@ -2156,23 +2130,7 @@ [-.zot abet:(pish:une syd +.zot ran.zat)] [mos ..^$] :: - %patching-a - ?> ?=([@ @ ~] t.tea) - =+ who=(slav %p i.t.tea) - =+ syd=(slav %tas i.t.t.tea) - =^ mos ruf - ?: (~(has by fat.ruf) who) - =+ une=(un who now hen ruf) - =+ zat=(take-patching-a:(di:wake:une syd) p.q.hin) - =+ zot=abet.zat - [-.zot abet:(pish:une syd +.zot ran.zat)] - =+ zax=(do now hen [who who] syd ruf) - =+ zat=(take-patching-a:zax p.q.hin) - =+ zot=abet.zat - [-.zot (posh who syd +.zot ruf)] - [mos ..^$] - :: - %patching-b + %patching ?> ?=([@ @ ~] t.tea) =+ who=(slav %p i.t.tea) =+ syd=(slav %tas i.t.t.tea) diff --git a/arvo/ford.hoon b/arvo/ford.hoon index 6f6409171..730ebaba4 100644 --- a/arvo/ford.hoon +++ b/arvo/ford.hoon @@ -83,6 +83,7 @@ [%ride p=twig q=silk] :: silk thru twig [%tabl p=(list (pair silk silk))] :: list [%vale p=mark q=ship r=*] :: validate [our his] + [%volt p=(set beam) q=(cask ,*)] :: unsafe add type == :: -- :: |% :: structures @@ -982,11 +983,11 @@ :: %bunt %+ cool |.(leaf/"ford: bunt {}") - :: ?: ?=(?(%hoon %hook) p.kas) - :: (fine cof p.kas [%atom %t] '') + ?: ?=(?(%hoon %hook) p.kas) + (fine cof p.kas [%atom %t] '') %+ cope (fang cof p.kas [our %main [%da now]]) |= [cof=cafe tux=vase] - (fine cof [p.kas (slot 6 tux)) + (fine cof [p.kas (slot 6 tux)]) :: %call :: %+ cool |.(leaf/"ford: call {<`@p`(mug kas)>}") @@ -1077,6 +1078,13 @@ %+ cope (lave cof p.kas q.kas r.kas) |= [cof=cafe vax=vase] (fine cof `cage`[p.kas vax]) + :: + %volt + %+ cool |.(leaf/"ford: volt {}") + %+ cope $(kas [%bunt p.q.kas]) + |= [cof=cafe cay=gage] + ^- (bolt gage) + [cof %0 p.kas p.q.kas p.q.cay q.q.kas] == :: ++ malt :: cached slit diff --git a/arvo/hoon.hoon b/arvo/hoon.hoon index 3709315b7..a3fe3f6a5 100644 --- a/arvo/hoon.hoon +++ b/arvo/hoon.hoon @@ -9745,8 +9745,8 @@ [%ud p=@ud] :: sequence == :: ++ desk ,@tas :: ship desk case spur -++ cage (pair mark vase) :: global metadata -++ cask (pair mark ,*) :: global data +++ cage (cask vase) :: global metadata +++ cask |*(a=_,* (pair mark a)) :: global data ++ cuff :: permissions $: p=kirk :: readers q=(set monk) :: authors diff --git a/arvo/zuse.hoon b/arvo/zuse.hoon index c9255dda5..d9e911c0b 100644 --- a/arvo/zuse.hoon +++ b/arvo/zuse.hoon @@ -1763,9 +1763,9 @@ pac=rock :: packet data == :: ++ blob :: fs blob - $% [%delta p=lobe q=[p=mark q=lobe] r=cask] :: delta on q - [%direct p=lobe q=cask] :: immediate - [%indirect p=lobe q=cask r=lobe s=cask] :: both + $% [%delta p=lobe q=[p=mark q=lobe] r=page] :: delta on q + [%direct p=lobe q=page] :: immediate + [%indirect p=lobe q=page r=lobe s=page] :: both == :: ++ boat ,[(list slip) tart] :: user stage ++ boon :: fort output @@ -2070,6 +2070,7 @@ == :: ++ octs ,[p=@ud q=@] :: octet-stream ++ oryx ,@t :: CSRF secret +++ page (cask) :: untyped cage ++ pail ?(%none %warm %cold) :: connection status ++ plan (trel view (pair ,@da (unit ,@dr)) path) :: subscription ++ plea ,[p=@ud q=[p=? q=@t]] :: live prompt @@ -2111,7 +2112,7 @@ ++ rand :: vaseless rant $: p=[p=care q=case r=@tas] :: clade release book q=path :: spur - r=cask :: data + r=page :: data == :: ++ rave :: general request $% [& p=mood] :: single request From 7c04b9b9f80b9967dd33579a2f78a83ad78d3525 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Tue, 10 Mar 2015 20:54:39 -0400 Subject: [PATCH 13/89] boots --- arvo/clay.hoon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arvo/clay.hoon b/arvo/clay.hoon index 540a1f4ae..a0c6ae4b7 100644 --- a/arvo/clay.hoon +++ b/arvo/clay.hoon @@ -984,7 +984,7 @@ `page`[%hook +.+.q.q.p.mys] ?: &(?=(%mime -.p.mys) =([%hoon ~] (slag (dec (lent pax)) pax))) `page`[%hoon +.+.q.q.p.mys] - p.mys + [p q.q]:p.mys %del :: delete if exists ?. |((~(has by hat) pax) (~(has by bar) pax)) !! (~(del by bar) pax) From 7bf9db3b1a7a651524d0c4841bcbd84fba0b3947 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Wed, 11 Mar 2015 15:43:44 -0400 Subject: [PATCH 14/89] merging across network works --- arvo/clay.hoon | 21 ++++---- main/app/merge/core.hook | 111 +++++++++++++++++++++++++++++++++------ main/app/morge/core.hook | 109 -------------------------------------- 3 files changed, 105 insertions(+), 136 deletions(-) delete mode 100644 main/app/morge/core.hook diff --git a/arvo/clay.hoon b/arvo/clay.hoon index a0c6ae4b7..b6507af22 100644 --- a/arvo/clay.hoon +++ b/arvo/clay.hoon @@ -634,12 +634,9 @@ == ^+ +> %= +> - hit.dom ~& [%gar gar] - (~(uni by hit.dom) gar) + hit.dom (~(uni by hit.dom) gar) let.dom let - hut.ran ~& [%lar lar] - =- ~& [%newhut (~(run by -) ,~)] - - %- ~(uni by hut.ran) + hut.ran %- ~(uni by hut.ran) %- mo ^- (list (pair tako yaki)) %+ turn (~(tap in lar)) |= yak=yaki @@ -726,8 +723,11 @@ ?~ u.nex +>+.^$ :: should never happen =. nak.u.ref `((hard nako) q.q.u.u.nex) =. +>+.^$ - =+ roo=(validate-plops for bar:(need nak.u.ref)) - ?>(?=(^ ref.roo) roo) + ?: =(0 let.dom) + => (apply-foreign-update (need nak.u.ref)) + ?>(?=(^ ref) .) + => (validate-plops for bar:(need nak.u.ref)) + ?>(?=(^ ref) .) %= $ haw.u.ref (~(del by haw.u.ref) nez) == @@ -818,10 +818,9 @@ ~| %plop-strange-coy !! =+ bob=((hard blob) -.q.coy) - ~& [%taking p.coy] ?- -.bob - %delta [-.bob p.bob q.bob q.i.p.p.cay [!!]:(slot 3 coy)] - %direct [-.bob p.bob q.i.p.p.cay [!!]:(slot 3 coy)] + %delta [-.bob p.bob q.bob q.i.p.p.cay +.q.coy] + %direct [-.bob p.bob q.i.p.p.cay +.q.coy] %indirect ~| %plop-indirect-not-implemented !! == %^ apply-foreign-update @@ -1940,7 +1939,7 @@ :: XX pass %merg and handle response :~ ^- move :* hen %pass - /auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic]/y + /auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic] %c %merg [p q r s %init]:q.hic == == diff --git a/main/app/merge/core.hook b/main/app/merge/core.hook index 1fb27b80c..dbbb4b95f 100644 --- a/main/app/merge/core.hook +++ b/main/app/merge/core.hook @@ -2,29 +2,108 @@ :: :::: /hook/core/sync/app :: -/+ sh-utils +:: XX give %nice +|% +++ gift + $% [%nice ~] + [%rush %tang (list tank)] + == +++ move ,[p=bone q=(mold note gift)] +++ note + $% $: %c + $% [%merg p=@p q=@tas r=@p s=@tas t=germ] + == == + $: %g + $% [%cide span] + == == == +-- !: :::: :: -|_ [hid=hide ~] +|_ [hid=hide auto=? gem=germ syd=@tas her=@p sud=@tas] ++ peer ,_`. ++ poke--args - |= [ost=bone you=ship syd=@tas her=@p sud=@tas gem=?([germ ~] ~)] - [[ost %pass / %c %merg our.hid syd her sud ?~(gem %fine -.gem)]~ +>.$] + |= [ost=bone you=ship syd=@tas her=@p sud=@tas gim=?([$|(%auto germ) ~] ~)] + ^- [(list move) _+>.$] + ?~ gim + $(gim [%auto ~]) + ?. ?=(%auto -.gim) + =: auto | + gem -.gim + ^syd syd + ^her her + ^sud sud + == + [[(merge ost) ~] +>.$] + =. auto & + ?: =(0 .^(%cw /(scot %p our.hid)/[syd]/(scot %da lat.hid))) + => $(-.gim %init) + [- +(auto &)] + => $(-.gim %fine) + [- +(auto &)] :: ++ pour |= [ost=bone pax=path sih=*] - :_ +>.$ - =+ ^- tan=(list tank) - =+ ((soft ,[%c %mere are=(each (set path) (pair term (list tank)))]) sih) - ?~ - - [leaf/"not working so well" >sih< ~] - ?: ?=(%& -.are.u) - [leaf/"merged" ?~(p.are.u ~ [>`(set path)`p.are.u< ~])] - [leaf/"failed to merge" >p.p.are.u< q.p.are.u] - %- flop - :- i=[ost %pass / %g %cide %$] - ^= t + ^- [(list move) _+>.$] + =+ ((soft ,[%c %mere are=(each (set path) (pair term (list tank)))]) sih) + ?~ - + [(spam leaf/"not working so well" >sih< ~) +>.$] + ?: ?=(%& -.are.u) + %+ end + leaf/"successfully merged with strategy {}" + ?~(p.are.u ~ [>`(set path)`p.are.u< ~]) + ?. auto + (end leaf/"failed to merge with strategy {}" q.p.are.u) + ?+ gem + [(spam leaf/"strange auto" >gem< ~) +>.$] + :: + %init + %^ end + leaf/"auto merge failed on strategy %init" + leaf/"I'm out of ideas" + [>p.p.are.u< q.p.are.u] + :: + %fine + ?. ?=(%bad-fine-merge p.p.are.u) + (end leaf/"auto merge failed on strategy %fine" >p.p.are.u< q.p.are.u) + => .(gem %meet) + :_ +>.$ + (flop i=(merge ost) t=(spam leaf/"%fine merge failed, trying %meet" ~)) + :: + %meet + ?. ?=(%meet-conflict p.p.are.u) + (end leaf/"auto merge failed on strategy %meet" >p.p.are.u< q.p.are.u) + => .(gem %mate) + :_ +>.$ + (flop i=(merge ost) t=(spam leaf/"%meet merge failed, trying %mate" ~)) + %mate + :: + ?. ?=(%mate-conflict p.p.are.u) + (end leaf/"auto merge failed on strategy %mate" >p.p.are.u< q.p.are.u) + => .(gem %meld) + :_ +>.$ + (flop i=(merge ost) t=(spam leaf/"%mate merge failed, trying %meld" ~)) + :: + %meld + %^ end + leaf/"auto merge failed on strategy %meld" + leaf/"I'm out of ideas" + [>p.p.are.u< q.p.are.u] + == +:: +++ merge + |= ost=bone + ^- move + [ost %pass / %c %merg our.hid syd her sud gem] +:: +++ spam + |= mes=(list tank) %+ turn (~(tap in (~(get ju pus.hid) /out))) - |=(ost=bone [ost %give %rush %tang (flop tan)]) + |= ost=bone + [ost %give %rush %tang mes] +:: +++ end + |= mes=(list tank) + ^- [(list move) _+>.$] + [(flop i=[0 %pass / %g %cide %$] t=(spam mes)) +>.$] -- diff --git a/main/app/morge/core.hook b/main/app/morge/core.hook deleted file mode 100644 index dbbb4b95f..000000000 --- a/main/app/morge/core.hook +++ /dev/null @@ -1,109 +0,0 @@ -:: Desk sync -:: -:::: /hook/core/sync/app - :: -:: XX give %nice -|% -++ gift - $% [%nice ~] - [%rush %tang (list tank)] - == -++ move ,[p=bone q=(mold note gift)] -++ note - $% $: %c - $% [%merg p=@p q=@tas r=@p s=@tas t=germ] - == == - $: %g - $% [%cide span] - == == == --- -!: -:::: - :: -|_ [hid=hide auto=? gem=germ syd=@tas her=@p sud=@tas] -++ peer ,_`. -++ poke--args - |= [ost=bone you=ship syd=@tas her=@p sud=@tas gim=?([$|(%auto germ) ~] ~)] - ^- [(list move) _+>.$] - ?~ gim - $(gim [%auto ~]) - ?. ?=(%auto -.gim) - =: auto | - gem -.gim - ^syd syd - ^her her - ^sud sud - == - [[(merge ost) ~] +>.$] - =. auto & - ?: =(0 .^(%cw /(scot %p our.hid)/[syd]/(scot %da lat.hid))) - => $(-.gim %init) - [- +(auto &)] - => $(-.gim %fine) - [- +(auto &)] -:: -++ pour - |= [ost=bone pax=path sih=*] - ^- [(list move) _+>.$] - =+ ((soft ,[%c %mere are=(each (set path) (pair term (list tank)))]) sih) - ?~ - - [(spam leaf/"not working so well" >sih< ~) +>.$] - ?: ?=(%& -.are.u) - %+ end - leaf/"successfully merged with strategy {}" - ?~(p.are.u ~ [>`(set path)`p.are.u< ~]) - ?. auto - (end leaf/"failed to merge with strategy {}" q.p.are.u) - ?+ gem - [(spam leaf/"strange auto" >gem< ~) +>.$] - :: - %init - %^ end - leaf/"auto merge failed on strategy %init" - leaf/"I'm out of ideas" - [>p.p.are.u< q.p.are.u] - :: - %fine - ?. ?=(%bad-fine-merge p.p.are.u) - (end leaf/"auto merge failed on strategy %fine" >p.p.are.u< q.p.are.u) - => .(gem %meet) - :_ +>.$ - (flop i=(merge ost) t=(spam leaf/"%fine merge failed, trying %meet" ~)) - :: - %meet - ?. ?=(%meet-conflict p.p.are.u) - (end leaf/"auto merge failed on strategy %meet" >p.p.are.u< q.p.are.u) - => .(gem %mate) - :_ +>.$ - (flop i=(merge ost) t=(spam leaf/"%meet merge failed, trying %mate" ~)) - %mate - :: - ?. ?=(%mate-conflict p.p.are.u) - (end leaf/"auto merge failed on strategy %mate" >p.p.are.u< q.p.are.u) - => .(gem %meld) - :_ +>.$ - (flop i=(merge ost) t=(spam leaf/"%mate merge failed, trying %meld" ~)) - :: - %meld - %^ end - leaf/"auto merge failed on strategy %meld" - leaf/"I'm out of ideas" - [>p.p.are.u< q.p.are.u] - == -:: -++ merge - |= ost=bone - ^- move - [ost %pass / %c %merg our.hid syd her sud gem] -:: -++ spam - |= mes=(list tank) - %+ turn (~(tap in (~(get ju pus.hid) /out))) - |= ost=bone - [ost %give %rush %tang mes] -:: -++ end - |= mes=(list tank) - ^- [(list move) _+>.$] - [(flop i=[0 %pass / %g %cide %$] t=(spam mes)) +>.$] --- From f55f5bc295c8be4a48b9924672d37ed03d6b8692 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Wed, 11 Mar 2015 20:37:37 -0400 Subject: [PATCH 15/89] moving stuff around --- main/app/reload/core.hook | 4 +- main/app/solid/core.hook | 2 +- {arvo => main/arvo}/ames.hoon | 0 {arvo => main/arvo}/clay.hoon | 36 ++++---- {arvo => main/arvo}/dill.hoon | 0 {arvo => main/arvo}/eyre.hoon | 12 ++- {arvo => main/arvo}/ford.hoon | 92 +++++++++---------- {arvo => main/arvo}/gall.hoon | 21 +++-- {arvo => main/arvo}/hoon.hoon | 1 + {arvo => main/arvo}/jael.hoon | 0 {arvo => main/arvo}/kahn.hoon | 0 {arvo => main/arvo}/lunt.hoon | 0 {arvo => main/arvo}/musk.hoon | 0 {arvo => main/arvo}/time.hoon | 0 {arvo => main/arvo}/zuse.hoon | 0 {docs => main}/psal.hook | 0 {docs => main}/pub/doc.md | 0 {docs => main}/pub/doc/arvo.md | 0 {docs => main}/pub/doc/arvo/ames.md | 0 .../pub/doc/arvo/ames/commentary.md | 0 {docs => main}/pub/doc/arvo/arvo.md | 0 .../pub/doc/arvo/arvo/commentary.md | 0 {docs => main}/pub/doc/arvo/clay.md | 0 .../pub/doc/arvo/clay/commentary.md | 0 {docs => main}/pub/doc/arvo/dill.md | 0 .../pub/doc/arvo/dill/commentary.md | 0 {docs => main}/pub/doc/arvo/eyre.md | 0 .../pub/doc/arvo/eyre/commentary.md | 0 {docs => main}/pub/doc/arvo/ford.md | 0 .../pub/doc/arvo/ford/commentary.md | 0 {docs => main}/pub/doc/arvo/gall.md | 0 {docs => main}/pub/doc/arvo/gall/gall.md | 0 {docs => main}/pub/doc/arvo/ives.md | 0 {docs => main}/pub/doc/arvo/ives/ives.md | 0 {docs => main}/pub/doc/arvo/jael.md | 0 {docs => main}/pub/doc/arvo/jael/jael.md | 0 {docs => main}/pub/doc/arvo/kahn.md | 0 {docs => main}/pub/doc/arvo/kahn/kahn.md | 0 {docs => main}/pub/doc/arvo/lunt.md | 0 {docs => main}/pub/doc/arvo/lunt/lunt.md | 0 {docs => main}/pub/doc/arvo/time.md | 0 {docs => main}/pub/doc/arvo/util.md | 0 {docs => main}/pub/doc/guide.md | 0 {docs => main}/pub/doc/guide/a-ford.md | 0 {docs => main}/pub/doc/guide/b-cli.md | 0 {docs => main}/pub/doc/guide/c-gall.md | 0 {docs => main}/pub/doc/guide/d-app.md | 0 {docs => main}/pub/doc/guide/e-dev.md | 0 {docs => main}/pub/doc/hoon.md | 0 {docs => main}/pub/doc/hoon/library.md | 0 {docs => main}/pub/doc/hoon/library/0.md | 0 {docs => main}/pub/doc/hoon/library/1.md | 0 {docs => main}/pub/doc/hoon/library/2a.md | 0 {docs => main}/pub/doc/hoon/library/2b.md | 0 {docs => main}/pub/doc/hoon/library/2c.md | 0 {docs => main}/pub/doc/hoon/library/2da.md | 0 {docs => main}/pub/doc/hoon/library/2db.md | 0 {docs => main}/pub/doc/hoon/library/2dc.md | 0 {docs => main}/pub/doc/hoon/library/2dd.md | 0 {docs => main}/pub/doc/hoon/library/2ea.md | 0 {docs => main}/pub/doc/hoon/library/2eb.md | 0 {docs => main}/pub/doc/hoon/library/2ec.md | 0 {docs => main}/pub/doc/hoon/library/2ed.md | 0 {docs => main}/pub/doc/hoon/library/2ee.md | 0 {docs => main}/pub/doc/hoon/library/2ef.md | 0 {docs => main}/pub/doc/hoon/library/2eg.md | 0 {docs => main}/pub/doc/hoon/library/2eh.md | 0 {docs => main}/pub/doc/hoon/library/2ei.md | 0 {docs => main}/pub/doc/hoon/library/2ej.md | 0 {docs => main}/pub/doc/hoon/library/2ek.md | 0 {docs => main}/pub/doc/hoon/library/2el.md | 0 {docs => main}/pub/doc/hoon/library/2em.md | 0 {docs => main}/pub/doc/hoon/library/2en.md | 0 {docs => main}/pub/doc/hoon/library/2eo.md | 0 {docs => main}/pub/doc/hoon/library/2ep.md | 0 {docs => main}/pub/doc/hoon/library/2ew.md | 0 {docs => main}/pub/doc/hoon/library/2ex.md | 0 {docs => main}/pub/doc/hoon/library/2ey.md | 0 {docs => main}/pub/doc/hoon/library/2ez.md | 0 {docs => main}/pub/doc/hoon/library/3ba.md | 0 {docs => main}/pub/doc/hoon/library/3bb.md | 0 {docs => main}/pub/doc/hoon/library/3bc.md | 0 {docs => main}/pub/doc/hoon/library/3bd.md | 0 {docs => main}/pub/doc/hoon/library/3be.md | 0 {docs => main}/pub/doc/hoon/library/3bf.md | 0 {docs => main}/pub/doc/hoon/library/3bg.md | 0 {docs => main}/pub/doc/hoon/library/3bh.md | 0 {docs => main}/pub/doc/hoon/library/3bi.md | 0 {docs => main}/pub/doc/hoon/reference.md | 0 .../pub/doc/hoon/reference/odors.md | 0 {docs => main}/pub/doc/hoon/runes.md | 0 {docs => main}/pub/doc/hoon/runes/bc.md | 0 {docs => main}/pub/doc/hoon/runes/bc/bcbr.md | 0 {docs => main}/pub/doc/hoon/runes/bc/bccb.md | 0 {docs => main}/pub/doc/hoon/runes/bc/bccl.md | 0 {docs => main}/pub/doc/hoon/runes/bc/bccm.md | 0 {docs => main}/pub/doc/hoon/runes/bc/bccn.md | 0 {docs => main}/pub/doc/hoon/runes/bc/bckt.md | 0 {docs => main}/pub/doc/hoon/runes/bc/bcls.md | 0 {docs => main}/pub/doc/hoon/runes/bc/bcpm.md | 0 {docs => main}/pub/doc/hoon/runes/bc/bcpt.md | 0 {docs => main}/pub/doc/hoon/runes/bc/bctr.md | 0 {docs => main}/pub/doc/hoon/runes/bc/bcts.md | 0 {docs => main}/pub/doc/hoon/runes/bc/bcwt.md | 0 {docs => main}/pub/doc/hoon/runes/bc/bczp.md | 0 {docs => main}/pub/doc/hoon/runes/br.md | 0 {docs => main}/pub/doc/hoon/runes/br/brcb.md | 0 {docs => main}/pub/doc/hoon/runes/br/brcn.md | 0 {docs => main}/pub/doc/hoon/runes/br/brdt.md | 0 {docs => main}/pub/doc/hoon/runes/br/brfs.md | 0 {docs => main}/pub/doc/hoon/runes/br/brhp.md | 0 {docs => main}/pub/doc/hoon/runes/br/brkt.md | 0 {docs => main}/pub/doc/hoon/runes/br/brls.md | 0 {docs => main}/pub/doc/hoon/runes/br/brtr.md | 0 {docs => main}/pub/doc/hoon/runes/br/brts.md | 0 {docs => main}/pub/doc/hoon/runes/br/brwt.md | 0 {docs => main}/pub/doc/hoon/runes/cl.md | 0 {docs => main}/pub/doc/hoon/runes/cl/clcb.md | 0 {docs => main}/pub/doc/hoon/runes/cl/clfs.md | 0 {docs => main}/pub/doc/hoon/runes/cl/clhp.md | 0 {docs => main}/pub/doc/hoon/runes/cl/clkt.md | 0 {docs => main}/pub/doc/hoon/runes/cl/clls.md | 0 {docs => main}/pub/doc/hoon/runes/cl/clsg.md | 0 {docs => main}/pub/doc/hoon/runes/cl/cltr.md | 0 {docs => main}/pub/doc/hoon/runes/cn.md | 0 {docs => main}/pub/doc/hoon/runes/cn/cncb.md | 0 {docs => main}/pub/doc/hoon/runes/cn/cncl.md | 0 {docs => main}/pub/doc/hoon/runes/cn/cndt.md | 0 {docs => main}/pub/doc/hoon/runes/cn/cnhp.md | 0 {docs => main}/pub/doc/hoon/runes/cn/cnkt.md | 0 {docs => main}/pub/doc/hoon/runes/cn/cnls.md | 0 {docs => main}/pub/doc/hoon/runes/cn/cnsg.md | 0 {docs => main}/pub/doc/hoon/runes/cn/cntr.md | 0 {docs => main}/pub/doc/hoon/runes/cn/cnts.md | 0 {docs => main}/pub/doc/hoon/runes/cn/cnzy.md | 0 {docs => main}/pub/doc/hoon/runes/cn/cnzz.md | 0 {docs => main}/pub/doc/hoon/runes/dt.md | 0 {docs => main}/pub/doc/hoon/runes/dt/dtkt.md | 0 {docs => main}/pub/doc/hoon/runes/dt/dtls.md | 0 {docs => main}/pub/doc/hoon/runes/dt/dttr.md | 0 {docs => main}/pub/doc/hoon/runes/dt/dtts.md | 0 {docs => main}/pub/doc/hoon/runes/dt/dtwt.md | 0 {docs => main}/pub/doc/hoon/runes/dt/dtzy.md | 0 {docs => main}/pub/doc/hoon/runes/dt/dtzz.md | 0 {docs => main}/pub/doc/hoon/runes/hx.md | 0 {docs => main}/pub/doc/hoon/runes/hx/hxgl.md | 0 {docs => main}/pub/doc/hoon/runes/hx/hxgr.md | 0 {docs => main}/pub/doc/hoon/runes/kt.md | 0 {docs => main}/pub/doc/hoon/runes/kt/ktbr.md | 0 {docs => main}/pub/doc/hoon/runes/kt/ktdt.md | 0 {docs => main}/pub/doc/hoon/runes/kt/kthp.md | 0 {docs => main}/pub/doc/hoon/runes/kt/ktls.md | 0 {docs => main}/pub/doc/hoon/runes/kt/ktpm.md | 0 {docs => main}/pub/doc/hoon/runes/kt/ktsg.md | 0 {docs => main}/pub/doc/hoon/runes/kt/ktts.md | 0 {docs => main}/pub/doc/hoon/runes/kt/ktwt.md | 0 {docs => main}/pub/doc/hoon/runes/sg.md | 0 {docs => main}/pub/doc/hoon/runes/sg/sgbc.md | 0 {docs => main}/pub/doc/hoon/runes/sg/sgbr.md | 0 {docs => main}/pub/doc/hoon/runes/sg/sgcb.md | 0 {docs => main}/pub/doc/hoon/runes/sg/sgcn.md | 0 {docs => main}/pub/doc/hoon/runes/sg/sgfs.md | 0 {docs => main}/pub/doc/hoon/runes/sg/sggl.md | 0 {docs => main}/pub/doc/hoon/runes/sg/sggr.md | 0 {docs => main}/pub/doc/hoon/runes/sg/sgls.md | 0 {docs => main}/pub/doc/hoon/runes/sg/sgpm.md | 0 {docs => main}/pub/doc/hoon/runes/sg/sgts.md | 0 {docs => main}/pub/doc/hoon/runes/sg/sgwt.md | 0 {docs => main}/pub/doc/hoon/runes/sg/sgzp.md | 0 {docs => main}/pub/doc/hoon/runes/sm.md | 0 {docs => main}/pub/doc/hoon/runes/sm/smcl.md | 0 {docs => main}/pub/doc/hoon/runes/sm/smcn.md | 0 {docs => main}/pub/doc/hoon/runes/sm/smdq.md | 0 {docs => main}/pub/doc/hoon/runes/sm/smhp.md | 0 {docs => main}/pub/doc/hoon/runes/sm/smls.md | 0 {docs => main}/pub/doc/hoon/runes/sm/smsg.md | 0 {docs => main}/pub/doc/hoon/runes/sm/smsm.md | 0 {docs => main}/pub/doc/hoon/runes/sm/smtr.md | 0 {docs => main}/pub/doc/hoon/runes/sm/smzz.md | 0 {docs => main}/pub/doc/hoon/runes/ts.md | 0 {docs => main}/pub/doc/hoon/runes/ts/tsbr.md | 0 {docs => main}/pub/doc/hoon/runes/ts/tscl.md | 0 {docs => main}/pub/doc/hoon/runes/ts/tsdt.md | 0 {docs => main}/pub/doc/hoon/runes/ts/tsgl.md | 0 {docs => main}/pub/doc/hoon/runes/ts/tsgr.md | 0 {docs => main}/pub/doc/hoon/runes/ts/tshp.md | 0 {docs => main}/pub/doc/hoon/runes/ts/tskt.md | 0 {docs => main}/pub/doc/hoon/runes/ts/tsls.md | 0 {docs => main}/pub/doc/hoon/runes/ts/tssg.md | 0 {docs => main}/pub/doc/hoon/runes/ts/tstr.md | 0 {docs => main}/pub/doc/hoon/runes/wt.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wtbr.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wtcl.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wtdt.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wtgl.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wtgr.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wthp.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wthz.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wtkt.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wtkz.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wtls.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wtlz.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wtpm.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wtpt.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wtpz.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wtsg.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wtsz.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wtts.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wttz.md | 0 {docs => main}/pub/doc/hoon/runes/wt/wtzp.md | 0 {docs => main}/pub/doc/hoon/runes/zp.md | 0 {docs => main}/pub/doc/hoon/runes/zp/zpcb.md | 0 {docs => main}/pub/doc/hoon/runes/zp/zpcm.md | 0 {docs => main}/pub/doc/hoon/runes/zp/zpfs.md | 0 {docs => main}/pub/doc/hoon/runes/zp/zpgr.md | 0 {docs => main}/pub/doc/hoon/runes/zp/zpsm.md | 0 {docs => main}/pub/doc/hoon/runes/zp/zpts.md | 0 {docs => main}/pub/doc/hoon/runes/zp/zpwt.md | 0 {docs => main}/pub/doc/hoon/runes/zp/zpzp.md | 0 {docs => main}/pub/doc/nock.md | 0 {docs => main}/pub/doc/nock/reference.md | 0 {docs => main}/pub/doc/reference.md | 0 {docs => main}/pub/doc/reference/glossary.md | 0 {docs => main}/pub/doc/reference/vere.md | 0 {docs => main}/pub/tree/src/css/fonts.styl | 0 {docs => main}/pub/tree/src/css/main.css | 0 {docs => main}/pub/tree/src/css/main.styl | 0 {docs => main}/pub/tree/src/css/mobile.styl | 0 .../tree/src/js/actions/TreeActions.coffee | 0 .../src/js/components/AnchorComponent.coffee | 0 .../src/js/components/BodyComponent.coffee | 0 .../src/js/components/KidsComponent.coffee | 0 .../src/js/components/ListComponent.coffee | 0 .../src/js/components/LoadComponent.coffee | 0 .../tree/src/js/dispatcher/Dispatcher.coffee | 0 {docs => main}/pub/tree/src/js/main.coffee | 0 {docs => main}/pub/tree/src/js/main.js | 0 {docs => main}/pub/tree/src/js/package.json | 0 .../src/js/persistence/TreePersistence.coffee | 0 .../pub/tree/src/js/stores/TreeStore.coffee | 0 {spec => main/spec}/nock/5.txt | 0 {docs => main}/tree/hymn.hook | 0 {docs => main}/tree/json.hook | 0 {docs => main}/tree/util.hoon | 0 {try => main/try}/readme.md | 0 245 files changed, 89 insertions(+), 79 deletions(-) rename {arvo => main/arvo}/ames.hoon (100%) rename {arvo => main/arvo}/clay.hoon (98%) rename {arvo => main/arvo}/dill.hoon (100%) rename {arvo => main/arvo}/eyre.hoon (99%) rename {arvo => main/arvo}/ford.hoon (96%) rename {arvo => main/arvo}/gall.hoon (98%) rename {arvo => main/arvo}/hoon.hoon (99%) rename {arvo => main/arvo}/jael.hoon (100%) rename {arvo => main/arvo}/kahn.hoon (100%) rename {arvo => main/arvo}/lunt.hoon (100%) rename {arvo => main/arvo}/musk.hoon (100%) rename {arvo => main/arvo}/time.hoon (100%) rename {arvo => main/arvo}/zuse.hoon (100%) rename {docs => main}/psal.hook (100%) rename {docs => main}/pub/doc.md (100%) rename {docs => main}/pub/doc/arvo.md (100%) rename {docs => main}/pub/doc/arvo/ames.md (100%) rename {docs => main}/pub/doc/arvo/ames/commentary.md (100%) rename {docs => main}/pub/doc/arvo/arvo.md (100%) rename {docs => main}/pub/doc/arvo/arvo/commentary.md (100%) rename {docs => main}/pub/doc/arvo/clay.md (100%) rename {docs => main}/pub/doc/arvo/clay/commentary.md (100%) rename {docs => main}/pub/doc/arvo/dill.md (100%) rename {docs => main}/pub/doc/arvo/dill/commentary.md (100%) rename {docs => main}/pub/doc/arvo/eyre.md (100%) rename {docs => main}/pub/doc/arvo/eyre/commentary.md (100%) rename {docs => main}/pub/doc/arvo/ford.md (100%) rename {docs => main}/pub/doc/arvo/ford/commentary.md (100%) rename {docs => main}/pub/doc/arvo/gall.md (100%) rename {docs => main}/pub/doc/arvo/gall/gall.md (100%) rename {docs => main}/pub/doc/arvo/ives.md (100%) rename {docs => main}/pub/doc/arvo/ives/ives.md (100%) rename {docs => main}/pub/doc/arvo/jael.md (100%) rename {docs => main}/pub/doc/arvo/jael/jael.md (100%) rename {docs => main}/pub/doc/arvo/kahn.md (100%) rename {docs => main}/pub/doc/arvo/kahn/kahn.md (100%) rename {docs => main}/pub/doc/arvo/lunt.md (100%) rename {docs => main}/pub/doc/arvo/lunt/lunt.md (100%) rename {docs => main}/pub/doc/arvo/time.md (100%) rename {docs => main}/pub/doc/arvo/util.md (100%) rename {docs => main}/pub/doc/guide.md (100%) rename {docs => main}/pub/doc/guide/a-ford.md (100%) rename {docs => main}/pub/doc/guide/b-cli.md (100%) rename {docs => main}/pub/doc/guide/c-gall.md (100%) rename {docs => main}/pub/doc/guide/d-app.md (100%) rename {docs => main}/pub/doc/guide/e-dev.md (100%) rename {docs => main}/pub/doc/hoon.md (100%) rename {docs => main}/pub/doc/hoon/library.md (100%) rename {docs => main}/pub/doc/hoon/library/0.md (100%) rename {docs => main}/pub/doc/hoon/library/1.md (100%) rename {docs => main}/pub/doc/hoon/library/2a.md (100%) rename {docs => main}/pub/doc/hoon/library/2b.md (100%) rename {docs => main}/pub/doc/hoon/library/2c.md (100%) rename {docs => main}/pub/doc/hoon/library/2da.md (100%) rename {docs => main}/pub/doc/hoon/library/2db.md (100%) rename {docs => main}/pub/doc/hoon/library/2dc.md (100%) rename {docs => main}/pub/doc/hoon/library/2dd.md (100%) rename {docs => main}/pub/doc/hoon/library/2ea.md (100%) rename {docs => main}/pub/doc/hoon/library/2eb.md (100%) rename {docs => main}/pub/doc/hoon/library/2ec.md (100%) rename {docs => main}/pub/doc/hoon/library/2ed.md (100%) rename {docs => main}/pub/doc/hoon/library/2ee.md (100%) rename {docs => main}/pub/doc/hoon/library/2ef.md (100%) rename {docs => main}/pub/doc/hoon/library/2eg.md (100%) rename {docs => main}/pub/doc/hoon/library/2eh.md (100%) rename {docs => main}/pub/doc/hoon/library/2ei.md (100%) rename {docs => main}/pub/doc/hoon/library/2ej.md (100%) rename {docs => main}/pub/doc/hoon/library/2ek.md (100%) rename {docs => main}/pub/doc/hoon/library/2el.md (100%) rename {docs => main}/pub/doc/hoon/library/2em.md (100%) rename {docs => main}/pub/doc/hoon/library/2en.md (100%) rename {docs => main}/pub/doc/hoon/library/2eo.md (100%) rename {docs => main}/pub/doc/hoon/library/2ep.md (100%) rename {docs => main}/pub/doc/hoon/library/2ew.md (100%) rename {docs => main}/pub/doc/hoon/library/2ex.md (100%) rename {docs => main}/pub/doc/hoon/library/2ey.md (100%) rename {docs => main}/pub/doc/hoon/library/2ez.md (100%) rename {docs => main}/pub/doc/hoon/library/3ba.md (100%) rename {docs => main}/pub/doc/hoon/library/3bb.md (100%) rename {docs => main}/pub/doc/hoon/library/3bc.md (100%) rename {docs => main}/pub/doc/hoon/library/3bd.md (100%) rename {docs => main}/pub/doc/hoon/library/3be.md (100%) rename {docs => main}/pub/doc/hoon/library/3bf.md (100%) rename {docs => main}/pub/doc/hoon/library/3bg.md (100%) rename {docs => main}/pub/doc/hoon/library/3bh.md (100%) rename {docs => main}/pub/doc/hoon/library/3bi.md (100%) rename {docs => main}/pub/doc/hoon/reference.md (100%) rename {docs => main}/pub/doc/hoon/reference/odors.md (100%) rename {docs => main}/pub/doc/hoon/runes.md (100%) rename {docs => main}/pub/doc/hoon/runes/bc.md (100%) rename {docs => main}/pub/doc/hoon/runes/bc/bcbr.md (100%) rename {docs => main}/pub/doc/hoon/runes/bc/bccb.md (100%) rename {docs => main}/pub/doc/hoon/runes/bc/bccl.md (100%) rename {docs => main}/pub/doc/hoon/runes/bc/bccm.md (100%) rename {docs => main}/pub/doc/hoon/runes/bc/bccn.md (100%) rename {docs => main}/pub/doc/hoon/runes/bc/bckt.md (100%) rename {docs => main}/pub/doc/hoon/runes/bc/bcls.md (100%) rename {docs => main}/pub/doc/hoon/runes/bc/bcpm.md (100%) rename {docs => main}/pub/doc/hoon/runes/bc/bcpt.md (100%) rename {docs => main}/pub/doc/hoon/runes/bc/bctr.md (100%) rename {docs => main}/pub/doc/hoon/runes/bc/bcts.md (100%) rename {docs => main}/pub/doc/hoon/runes/bc/bcwt.md (100%) rename {docs => main}/pub/doc/hoon/runes/bc/bczp.md (100%) rename {docs => main}/pub/doc/hoon/runes/br.md (100%) rename {docs => main}/pub/doc/hoon/runes/br/brcb.md (100%) rename {docs => main}/pub/doc/hoon/runes/br/brcn.md (100%) rename {docs => main}/pub/doc/hoon/runes/br/brdt.md (100%) rename {docs => main}/pub/doc/hoon/runes/br/brfs.md (100%) rename {docs => main}/pub/doc/hoon/runes/br/brhp.md (100%) rename {docs => main}/pub/doc/hoon/runes/br/brkt.md (100%) rename {docs => main}/pub/doc/hoon/runes/br/brls.md (100%) rename {docs => main}/pub/doc/hoon/runes/br/brtr.md (100%) rename {docs => main}/pub/doc/hoon/runes/br/brts.md (100%) rename {docs => main}/pub/doc/hoon/runes/br/brwt.md (100%) rename {docs => main}/pub/doc/hoon/runes/cl.md (100%) rename {docs => main}/pub/doc/hoon/runes/cl/clcb.md (100%) rename {docs => main}/pub/doc/hoon/runes/cl/clfs.md (100%) rename {docs => main}/pub/doc/hoon/runes/cl/clhp.md (100%) rename {docs => main}/pub/doc/hoon/runes/cl/clkt.md (100%) rename {docs => main}/pub/doc/hoon/runes/cl/clls.md (100%) rename {docs => main}/pub/doc/hoon/runes/cl/clsg.md (100%) rename {docs => main}/pub/doc/hoon/runes/cl/cltr.md (100%) rename {docs => main}/pub/doc/hoon/runes/cn.md (100%) rename {docs => main}/pub/doc/hoon/runes/cn/cncb.md (100%) rename {docs => main}/pub/doc/hoon/runes/cn/cncl.md (100%) rename {docs => main}/pub/doc/hoon/runes/cn/cndt.md (100%) rename {docs => main}/pub/doc/hoon/runes/cn/cnhp.md (100%) rename {docs => main}/pub/doc/hoon/runes/cn/cnkt.md (100%) rename {docs => main}/pub/doc/hoon/runes/cn/cnls.md (100%) rename {docs => main}/pub/doc/hoon/runes/cn/cnsg.md (100%) rename {docs => main}/pub/doc/hoon/runes/cn/cntr.md (100%) rename {docs => main}/pub/doc/hoon/runes/cn/cnts.md (100%) rename {docs => main}/pub/doc/hoon/runes/cn/cnzy.md (100%) rename {docs => main}/pub/doc/hoon/runes/cn/cnzz.md (100%) rename {docs => main}/pub/doc/hoon/runes/dt.md (100%) rename {docs => main}/pub/doc/hoon/runes/dt/dtkt.md (100%) rename {docs => main}/pub/doc/hoon/runes/dt/dtls.md (100%) rename {docs => main}/pub/doc/hoon/runes/dt/dttr.md (100%) rename {docs => main}/pub/doc/hoon/runes/dt/dtts.md (100%) rename {docs => main}/pub/doc/hoon/runes/dt/dtwt.md (100%) rename {docs => main}/pub/doc/hoon/runes/dt/dtzy.md (100%) rename {docs => main}/pub/doc/hoon/runes/dt/dtzz.md (100%) rename {docs => main}/pub/doc/hoon/runes/hx.md (100%) rename {docs => main}/pub/doc/hoon/runes/hx/hxgl.md (100%) rename {docs => main}/pub/doc/hoon/runes/hx/hxgr.md (100%) rename {docs => main}/pub/doc/hoon/runes/kt.md (100%) rename {docs => main}/pub/doc/hoon/runes/kt/ktbr.md (100%) rename {docs => main}/pub/doc/hoon/runes/kt/ktdt.md (100%) rename {docs => main}/pub/doc/hoon/runes/kt/kthp.md (100%) rename {docs => main}/pub/doc/hoon/runes/kt/ktls.md (100%) rename {docs => main}/pub/doc/hoon/runes/kt/ktpm.md (100%) rename {docs => main}/pub/doc/hoon/runes/kt/ktsg.md (100%) rename {docs => main}/pub/doc/hoon/runes/kt/ktts.md (100%) rename {docs => main}/pub/doc/hoon/runes/kt/ktwt.md (100%) rename {docs => main}/pub/doc/hoon/runes/sg.md (100%) rename {docs => main}/pub/doc/hoon/runes/sg/sgbc.md (100%) rename {docs => main}/pub/doc/hoon/runes/sg/sgbr.md (100%) rename {docs => main}/pub/doc/hoon/runes/sg/sgcb.md (100%) rename {docs => main}/pub/doc/hoon/runes/sg/sgcn.md (100%) rename {docs => main}/pub/doc/hoon/runes/sg/sgfs.md (100%) rename {docs => main}/pub/doc/hoon/runes/sg/sggl.md (100%) rename {docs => main}/pub/doc/hoon/runes/sg/sggr.md (100%) rename {docs => main}/pub/doc/hoon/runes/sg/sgls.md (100%) rename {docs => main}/pub/doc/hoon/runes/sg/sgpm.md (100%) rename {docs => main}/pub/doc/hoon/runes/sg/sgts.md (100%) rename {docs => main}/pub/doc/hoon/runes/sg/sgwt.md (100%) rename {docs => main}/pub/doc/hoon/runes/sg/sgzp.md (100%) rename {docs => main}/pub/doc/hoon/runes/sm.md (100%) rename {docs => main}/pub/doc/hoon/runes/sm/smcl.md (100%) rename {docs => main}/pub/doc/hoon/runes/sm/smcn.md (100%) rename {docs => main}/pub/doc/hoon/runes/sm/smdq.md (100%) rename {docs => main}/pub/doc/hoon/runes/sm/smhp.md (100%) rename {docs => main}/pub/doc/hoon/runes/sm/smls.md (100%) rename {docs => main}/pub/doc/hoon/runes/sm/smsg.md (100%) rename {docs => main}/pub/doc/hoon/runes/sm/smsm.md (100%) rename {docs => main}/pub/doc/hoon/runes/sm/smtr.md (100%) rename {docs => main}/pub/doc/hoon/runes/sm/smzz.md (100%) rename {docs => main}/pub/doc/hoon/runes/ts.md (100%) rename {docs => main}/pub/doc/hoon/runes/ts/tsbr.md (100%) rename {docs => main}/pub/doc/hoon/runes/ts/tscl.md (100%) rename {docs => main}/pub/doc/hoon/runes/ts/tsdt.md (100%) rename {docs => main}/pub/doc/hoon/runes/ts/tsgl.md (100%) rename {docs => main}/pub/doc/hoon/runes/ts/tsgr.md (100%) rename {docs => main}/pub/doc/hoon/runes/ts/tshp.md (100%) rename {docs => main}/pub/doc/hoon/runes/ts/tskt.md (100%) rename {docs => main}/pub/doc/hoon/runes/ts/tsls.md (100%) rename {docs => main}/pub/doc/hoon/runes/ts/tssg.md (100%) rename {docs => main}/pub/doc/hoon/runes/ts/tstr.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wtbr.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wtcl.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wtdt.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wtgl.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wtgr.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wthp.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wthz.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wtkt.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wtkz.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wtls.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wtlz.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wtpm.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wtpt.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wtpz.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wtsg.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wtsz.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wtts.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wttz.md (100%) rename {docs => main}/pub/doc/hoon/runes/wt/wtzp.md (100%) rename {docs => main}/pub/doc/hoon/runes/zp.md (100%) rename {docs => main}/pub/doc/hoon/runes/zp/zpcb.md (100%) rename {docs => main}/pub/doc/hoon/runes/zp/zpcm.md (100%) rename {docs => main}/pub/doc/hoon/runes/zp/zpfs.md (100%) rename {docs => main}/pub/doc/hoon/runes/zp/zpgr.md (100%) rename {docs => main}/pub/doc/hoon/runes/zp/zpsm.md (100%) rename {docs => main}/pub/doc/hoon/runes/zp/zpts.md (100%) rename {docs => main}/pub/doc/hoon/runes/zp/zpwt.md (100%) rename {docs => main}/pub/doc/hoon/runes/zp/zpzp.md (100%) rename {docs => main}/pub/doc/nock.md (100%) rename {docs => main}/pub/doc/nock/reference.md (100%) rename {docs => main}/pub/doc/reference.md (100%) rename {docs => main}/pub/doc/reference/glossary.md (100%) rename {docs => main}/pub/doc/reference/vere.md (100%) rename {docs => main}/pub/tree/src/css/fonts.styl (100%) rename {docs => main}/pub/tree/src/css/main.css (100%) rename {docs => main}/pub/tree/src/css/main.styl (100%) rename {docs => main}/pub/tree/src/css/mobile.styl (100%) rename {docs => main}/pub/tree/src/js/actions/TreeActions.coffee (100%) rename {docs => main}/pub/tree/src/js/components/AnchorComponent.coffee (100%) rename {docs => main}/pub/tree/src/js/components/BodyComponent.coffee (100%) rename {docs => main}/pub/tree/src/js/components/KidsComponent.coffee (100%) rename {docs => main}/pub/tree/src/js/components/ListComponent.coffee (100%) rename {docs => main}/pub/tree/src/js/components/LoadComponent.coffee (100%) rename {docs => main}/pub/tree/src/js/dispatcher/Dispatcher.coffee (100%) rename {docs => main}/pub/tree/src/js/main.coffee (100%) rename {docs => main}/pub/tree/src/js/main.js (100%) rename {docs => main}/pub/tree/src/js/package.json (100%) rename {docs => main}/pub/tree/src/js/persistence/TreePersistence.coffee (100%) rename {docs => main}/pub/tree/src/js/stores/TreeStore.coffee (100%) rename {spec => main/spec}/nock/5.txt (100%) rename {docs => main}/tree/hymn.hook (100%) rename {docs => main}/tree/json.hook (100%) rename {docs => main}/tree/util.hoon (100%) rename {try => main/try}/readme.md (100%) diff --git a/main/app/reload/core.hook b/main/app/reload/core.hook index 4f595d330..0df57a087 100644 --- a/main/app/reload/core.hook +++ b/main/app/reload/core.hook @@ -14,7 +14,7 @@ %+ args-into-resp . |= all=(list ,@tas) %+ turn all - =+ ark=(arch .^(%cy /(scot %p our.hid)/arvo/(scot %da lat.hid))) + =+ ark=(arch .^(%cy /(scot %p our.hid)/main/(scot %da lat.hid)/arvo)) =+ van=(~(tap by r.ark)) |= nam=@tas =. nam @@ -25,6 +25,6 @@ ?> ?=([[@ ~] ~] zaz) `term`p.i.zaz =+ tip=(end 3 1 nam) - =+ pax=[(scot %p our.hid) %arvo (scot %da lat.hid) nam %hoon ~] + =+ pax=[(scot %p our.hid) %main (scot %da lat.hid) %arvo nam %hoon ~] [%veer ?:(=('z' tip) %$ tip) pax (,@ .^(%cx pax))] -- diff --git a/main/app/solid/core.hook b/main/app/solid/core.hook index 54e355070..6bbac3629 100644 --- a/main/app/solid/core.hook +++ b/main/app/solid/core.hook @@ -6,7 +6,7 @@ ++ poke-solid-args |= [ost=bone you=ship ~] :_ +>.$ - =+ top=`path`/(scot %p our.hid)/arvo/(scot %da lat.hid) + =+ top=`path`/(scot %p our.hid)/main/(scot %da lat.hid)/arvo =+ pax=`path`(weld top `path`[%hoon ~]) ~& %solid-start =+ gen=(reck pax) diff --git a/arvo/ames.hoon b/main/arvo/ames.hoon similarity index 100% rename from arvo/ames.hoon rename to main/arvo/ames.hoon diff --git a/arvo/clay.hoon b/main/arvo/clay.hoon similarity index 98% rename from arvo/clay.hoon rename to main/arvo/clay.hoon index b6507af22..c03d1cd72 100644 --- a/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -72,7 +72,7 @@ $% [%flog p=[%crud p=@tas q=(list tank)]] :: to %dill == == :: $: %f :: - $% [%exec p=@p q=(unit silk)] :: + $% [%exec p=@p q=beak r=(unit silk)] :: == == :: $: %t :: $% [%wait p=@da] :: @@ -408,7 +408,7 @@ ?+ -.mis !! %mut :- [%diffing (scot %p who) syd (scot %da wen) pax] - :^ %f %exec who :- ~ + :^ %f %exec who :+ [who syd %da wen] ~ ^- silk =+ =+ (slag (dec (lent pax)) pax) =+ ?~(- %$ i.-) @@ -417,7 +417,7 @@ :: %ins :- [%casting (scot %p who) syd (scot %da wen) pax] - :^ %f %exec who :- ~ + :^ %f %exec who :+ [who syd %da wen] ~ ^- silk =+ (slag (dec (lent pax)) pax) =+ ?~(- %$ i.-) @@ -559,7 +559,7 @@ :^ hen [%ergoing (scot %p who) syd ~] %f - :^ %exec who ~ :- %tabl + :^ %exec who [who syd %da now] :+ ~ %tabl ^- (list (pair silk silk)) %+ turn sot.u.dok |= [a=path b=misu] @@ -617,7 +617,7 @@ :^ hen [%patching (scot %p who) syd ~] %f - :^ %exec who ~ :- %tabl + :^ %exec who [who syd %da now] :+ ~ %tabl ^- (list (pair silk silk)) %+ turn (~(tap by hat)) |= [a=path b=lobe] @@ -775,7 +775,7 @@ =- %_(+>.$ tag [- tag]) :* hen [%foreign-plops (scot %p who) (scot %p for) syd ~] - %f %exec who ~ %tabl + %f %exec who [him syd %da now] ~ %tabl ^- (list (pair silk silk)) %+ turn (~(tap in pop)) |= a=plop @@ -1021,7 +1021,6 @@ =< t ~| [%letdom let=let.dom hit=hit.dom hut=(~(run by hut.ran) ,~)] ~| [%getdom (~(get by hit.dom) let.dom)] - ~| [%gotdom (~(get by hut.ran) (~(got by hit.dom) let.dom))] %- aeon-to-yaki let.dom [~ let.dom] @@ -1320,6 +1319,7 @@ %init ?. =(let.dom 0) (error:he %bad-init-merge ~) + :: skim hook/hoon files/ =. new.dat ali.dat =. hut.ran (~(put by hut.ran) r.new.dat new.dat) =. erg.dat (~(run by q.ali.dat) |=(lobe %&)) @@ -1378,13 +1378,13 @@ == :: ++ diff-bas - |= [nam=term yak=yaki] + |= [nam=term yak=yaki oth=(pair ship desk)] ^+ +> =- %_(+>.$ tag [- tag]) :* hen =+ (cat 3 %diff- nam) [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali - ~] - %f %exec p.bob ~ %tabl + %f %exec p.bob [p.oth q.oth %da now] ~ %tabl ^- (list (pair silk silk)) %+ murn (~(tap by q.bas.dat)) |= [pax=path lob=lobe] @@ -1401,7 +1401,7 @@ :: ++ diff-ali ^+ . - (diff-bas %ali ali.dat) + (diff-bas %ali ali.dat ali) :: ++ diffed-ali |= res=(each bead (list tank)) @@ -1451,7 +1451,7 @@ :: ++ diff-bob ^+ . - (diff-bas %bob bob.dat) + (diff-bas %bob bob.dat bob) :: ++ diffed-bob |= res=(each bead (list tank)) @@ -1559,7 +1559,7 @@ =- %_(+.$ tag [- tag]) :* hen [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %merge ~] - %f %exec p.bob ~ %tabl + %f %exec p.bob [p.bob q.bob %da now] ~ %tabl ^- (list (pair silk silk)) %+ turn (~(tap by (~(int by can.dal.dat) can.dob.dat))) |= [pax=path *] @@ -1689,9 +1689,10 @@ ++ checkout ^+ . =- %_(+ tag [- tag]) + =+ val=?:(?=(%init gem.dat) ali bob) :* hen [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %checkout ~] - %f %exec p.bob ~ %tabl + %f %exec p.bob [p.val q.val cas.dat] ~ %tabl ^- (list (pair silk silk)) %+ turn (~(tap by q.new.dat)) |= [a=path b=lobe] @@ -1742,9 +1743,10 @@ ^+ . =- %_(+ tag [- tag]) =+ zez=ze(ank.dom ank.dat) + =+ val=?:(?=(%init gem.dat) ali bob) :* hen [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %ergo ~] - %f %exec p.bob ~ %tabl + %f %exec p.bob [p.val q.val %da now] ~ %tabl ^- (list (pair silk silk)) %+ turn (~(tap by erg.dat)) |= [a=path b=?] @@ -1950,7 +1952,7 @@ ~& [%bos bos p.q.hic] ?: =(bos p.q.hic) ~ ^- (list move) - %+ turn (limo ~[%main %arvo %try]) + %+ turn (limo ~[%main]) |= syd=@tas [hen %pass / %c %font p.q.hic syd bos syd] :: @@ -2173,7 +2175,9 @@ %mere ~& ?: ?=(%& -.p.+.q.hin) ['merge succeeded' p.p.+.q.hin] - ['merge failed' p.p.p.+.q.hin] + :+ 'merge failed' + p.p.p.+.q.hin + (turn q.p.p.+.q.hin |=(tank ~(ram re +<))) [~ ..^$] :: %waft diff --git a/arvo/dill.hoon b/main/arvo/dill.hoon similarity index 100% rename from arvo/dill.hoon rename to main/arvo/dill.hoon diff --git a/arvo/eyre.hoon b/main/arvo/eyre.hoon similarity index 99% rename from arvo/eyre.hoon rename to main/arvo/eyre.hoon index 4f286c9b4..86d017d1a 100644 --- a/arvo/eyre.hoon +++ b/main/arvo/eyre.hoon @@ -40,7 +40,7 @@ [%thud ~] :: == == :: $: %f :: to %ford - $% [%exec p=@p q=(unit silk)] :: + $% [%exec p=@p q=beak r=(unit silk)] :: == == :: $: %g :: to %gall $% [%mess p=hapt q=ship r=cage] :: @@ -720,7 +720,8 @@ %_ +> mow :_ mow - [hen %pass [%honk (scot %p our) ses (scot %ud num) ~] %f [%exec our ~]] + =+ [%exec our [our %main %da now] ~] + [hen %pass [%honk (scot %p our) ses (scot %ud num) ~] %f -] == :: ++ honk :: ford request @@ -729,7 +730,8 @@ %_ +> mow :_ mow - [hen %pass [%honk (scot %p our) ses (scot %ud num) ~] %f [%exec our `kas]] + =+ [%exec our [our %main %da now] `kas] + [hen %pass [%honk (scot %p our) ses (scot %ud num) ~] %f -] == :: ++ hooj :: ford json request @@ -739,7 +741,7 @@ :_ mow :^ hen %pass ~[%hooj (scot %p our) ses (scot %ud nap) (scot %ud can) (scot %f ful)] - [%f [%exec our `kas]] + [%f [%exec our [our %main %da now] `kas]] == :: ++ hops :: cancel remote @@ -2165,7 +2167,7 @@ =. +>.$ ?. =(cnt num.meg.siq) +>.$ %+ pass(num.meg.siq +(num.meg.siq)) [%| hap] - `note`[%f %exec our ~ %cast for %done ~ %json !>(jon)] + [%f %exec our [our %main %da now] ~ %cast for %done ~ %json !>(jon)] ?. =(+(cnt) num.meg.siq) +>.$(..yo (bust 204 num)) (hire:(yule %meg) cnt num) diff --git a/arvo/ford.hoon b/main/arvo/ford.hoon similarity index 96% rename from arvo/ford.hoon rename to main/arvo/ford.hoon index 730ebaba4..6c587f6ae 100644 --- a/arvo/ford.hoon +++ b/main/arvo/ford.hoon @@ -48,7 +48,7 @@ [%toy p=mark] :: /mark/ static == :: ++ kiss :: in request ->$ - $% [%exec p=@p q=(unit silk)] :: make / kill + $% [%exec p=@p q=beak r=(unit silk)] :: make / kill == :: ++ move ,[p=duct q=(mold note gift)] :: local move ++ note :: out request $-> @@ -169,6 +169,8 @@ [p=`cafe`a q=[%0 p=*(set beam) q=b]] :: ++ flaw |=([a=cafe b=(list tank)] [p=a q=[%2 p=b]]) :: bolt from error :: +++ clean-beak |=([now=@da bek=beak] [p.bek q.bek %da now]) +:: ++ grom :: merge sets |* [one=(set) two=(set)] ^+ one @@ -196,6 +198,7 @@ :: ++ za :: per event =| $: $: $: our=ship :: computation owner + bek=beak :: desk context hen=duct :: event floor == :: $: now=@da :: event date @@ -261,9 +264,11 @@ ?~ kiz +> %= $ kiz t.kiz - mow :_ mow + mow + :_ mow :- hen - :^ %pass [(scot %p our) (scot %ud num) (scot %ud p.i.kiz) ~] + :^ %pass + [(scot %p our) (scot %ud num) (scot %ud p.i.kiz) (tope bek ~)] %c [%warp [our p.q.q.i.kiz] q.q.q.i.kiz ~] == @@ -273,9 +278,11 @@ ^+ +> %= +> kig [+(p.kig) (~(put by q.kig) p.kig [ren bem])] - mow :_ mow + mow + :_ mow :- hen - :^ %pass [(scot %p our) (scot %ud num) (scot %ud p.kig) ~] + :^ %pass + [(scot %p our) (scot %ud num) (scot %ud p.kig) (tope bek ~)] %c [%warp [our p.bem] q.bem [~ %& ren r.bem (flop s.bem)]] == @@ -410,7 +417,7 @@ leaf/"diff on data of different marks: {(trip p.cay)} {(trip p.coy)}" ?: =(q.q.cay q.q.coy) (fine cof %null [%atom %n] ~) - %+ cope (fang cof p.cay [our %main %da now]) + %+ cope (fang cof p.cay) |= [cof=cafe pro=vase] ?. (slab %grad p.pro) (flaw cof leaf/"no ++grad" ~) @@ -487,17 +494,10 @@ (fine cof p.u.q.vex) :: ++ fang :: protocol door - |= [cof=cafe for=mark bek=beak] + |= [cof=cafe for=mark] ^- (bolt vase) =+ pax=/door/[for]/mar - =+ ^= bem ^- beam - :_ pax - ?: &(=(p.bek our) =(q.bek %main)) bek - =+ oak=[our %main %da now] - ?: ?=([~ ~ *] (ska ~ %cy [oak pax])) - oak - bek - (cope (fade cof %hook bem) abut:(meow bem ~)) + (cope (fade cof %hook [bek pax]) abut:(meow [bek pax] ~)) :: ++ fair :: hood parsing rule |= bem=beam @@ -663,7 +663,7 @@ |= [cof=cafe cay=gage coy=gage] ?. &(?=(@ p.cay) ?=(@ p.coy)) (flaw cof leaf/"bad join marc: {} {}" ~) - %+ cope (fang cof for [our %main %da now]) + %+ cope (fang cof for) |= [cof=cafe pro=vase] ?. (slab %grad p.pro) (flaw cof leaf/"no ++grad" ~) @@ -733,19 +733,18 @@ ++ lace :: load and check |= [cof=cafe for=mark bem=beam arg=heel] ^- (bolt (unit vase)) - =+ bek=`beak`[p.bem q.bem r.bem] %+ cope (lend cof bem) |= [cof=cafe arc=arch] ?^ q.arc - (cope (cope (liar cof bem) (lake for bek)) fest) + (cope (cope (liar cof bem) (lake for)) fest) ?: (~(has by r.arc) %hook) %+ cope (fade cof %hook bem) |= [cof=cafe hyd=hood] - (cope (cope (abut:(meow bem arg) cof hyd) (lake for bek)) fest) + (cope (cope (abut:(meow bem arg) cof hyd) (lake for)) fest) (fine cof ~) :: ++ lake :: check/coerce - |= [for=mark bek=beak] + |= for=mark |= [cof=cafe sam=vase] ^- (bolt vase) %+ cool |.(leaf/"ford: check {<[for bek `@p`(mug q.sam)]>}") @@ -757,7 +756,7 @@ ?~ mas (flaw cof [leaf/"ford: bad hoon or hook: {<[for bek]>}"]~) (fine cof [%atom %t] u.mas) - %+ cope (fang cof for bek) + %+ cope (fang cof for) |= [cof=cafe tux=vase] =+ bob=(slot 6 tux) ?: (~(nest ut p.bob) | p.sam) @@ -785,7 +784,7 @@ ++ lave :: validate |= [cof=cafe for=mark his=ship som=*] ^- (bolt vase) - ((lake for [our %main [%da now]]) cof [%noun som]) + ((lake for) cof [%noun som]) :: ++ lane :: type infer |= [cof=cafe typ=type gen=twig] @@ -818,9 +817,9 @@ (fine cof q.u.u.von) :: ++ lily :: translation targets - |= [cof=cafe for=mark bek=beak] + |= [cof=cafe for=mark] ^- (bolt (list ,@tas)) - =+ raf=(fang cof for bek) + =+ raf=(fang cof for) ?: =(%2 -.q.raf) (fine p.raf ~) %+ cope raf |= [cof=cafe vax=vase] @@ -844,13 +843,13 @@ (lace cof for bem(s [for s.bem]) arg) =+ haz=(turn (~(tap by r.arc) ~) |=([a=@tas b=~] a)) ?~ haz (fine cof ~) - %+ cope (lion cof for -.bem haz) + %+ cope (lion cof for haz) |= [cof=cafe wuy=(unit (list ,@tas))] ?~ wuy (fine cof ~) ?> ?=(^ u.wuy) %+ cope (make cof %bake i.u.wuy bem arg) |= [cof=cafe hoc=gage] - %+ cope (lope cof i.u.wuy t.u.wuy -.bem q.hoc) + %+ cope (lope cof i.u.wuy t.u.wuy q.hoc) |= [cof=cafe vax=vase] (fine cof ~ vax) :: @@ -866,18 +865,18 @@ ^$(s.mob t.s.mob, mer [i.s.mob mer]) :: ++ link :: translate - |= [cof=cafe too=mark for=mark bek=beak vax=vase] + |= [cof=cafe too=mark for=mark vax=vase] ^- (bolt vase) ?: =(too for) (fine cof vax) ?: |(=(%noun for) =(%$ for)) - ((lake too bek) cof vax) - %+ cope (fang cof for bek) + ((lake too) cof vax) + %+ cope (fang cof for) |= [cof=cafe pro=vase] ?: &((slob %grow p.pro) (slob too p:(slap pro [%cnzy %grow]))) %+ cope (keel cof pro [[%& 6]~ vax]~) |= [cof=cafe pox=vase] (maim cof pox [%tsgr [%cnzy %grow] [%cnzy too]]) - %+ cope (fang cof too bek) + %+ cope (fang cof too) |= [cof=cafe pro=vase] =+ ^= zat ^- (unit vase) ?. (slob %grab p.pro) ~ @@ -889,7 +888,7 @@ (maul cof u.zat vax) :: ++ lion :: translation search - |= [cof=cafe too=@tas bek=beak fro=(list ,@tas)] + |= [cof=cafe too=@tas fro=(list ,@tas)] ^- (bolt (unit (list ,@tas))) =| war=(set ,@tas) =< -:(apex (fine cof fro)) @@ -914,7 +913,7 @@ [(fine cof [~ too ~]) +>.$] ?: (~(has in war) for) [(fine cof ~) +>] =. war (~(put in war) for) - =^ hoc +>.$ (apex (lily cof for bek)) + =^ hoc +>.$ (apex (lily cof for)) :_ +>.$ %+ cope hoc |= [cof=cafe ked=(unit (list ,@tas))] @@ -922,10 +921,10 @@ -- :: ++ lope :: translation pipe - |= [cof=cafe for=mark yaw=(list mark) bek=beak vax=vase] + |= [cof=cafe for=mark yaw=(list mark) vax=vase] ^- (bolt vase) ?~ yaw (fine cof vax) - %+ cope (link cof i.yaw for bek vax) + %+ cope (link cof i.yaw for vax) |= [cof=cafe yed=vase] ^$(cof cof, for i.yaw, yaw t.yaw, vax yed) :: @@ -985,7 +984,7 @@ %+ cool |.(leaf/"ford: bunt {}") ?: ?=(?(%hoon %hook) p.kas) (fine cof p.kas [%atom %t] '') - %+ cope (fang cof p.kas [our %main [%da now]]) + %+ cope (fang cof p.kas) |= [cof=cafe tux=vase] (fine cof [p.kas (slot 6 tux)]) :: @@ -1013,14 +1012,13 @@ %+ cool |.(leaf/"ford: casting {} to {}") ?. ?=(@ p.cay) (flaw cof leaf/"bad cast marc" ~) - =+ bek=[our %main %da now] :: XX - %+ cope (link cof p.kas p.cay bek q.cay) + %+ cope (link cof p.kas p.cay q.cay) |= [cof=cafe vax=vase] (fine cof [p.kas vax]) -:: %+ cope (lion cof p.kas bek [p.cay]~) +:: %+ cope (lion cof p.kas [p.cay]~) :: |= [cof=cafe wuy=(list ,@tas)] :: ?~ wuy (flaw cof [%leaf "ford: no path: {<[p.cay p.kas]>}"]~) -:: %+ cope (lope cof i.wuy t.wuy bek q.cay) +:: %+ cope (lope cof i.wuy t.wuy q.cay) :: |= [cof=cafe vax=vase] :: (fine cof [p.kas vax]) :: @@ -1402,7 +1400,7 @@ |= [cof=cafe cay=gage coy=gage] ?. &(?=(@ p.cay) ?=(@ p.coy)) (flaw cof leaf/"bad pact marc" ~) - %+ cope (fang cof p.cay [our %main %da now]) + %+ cope (fang cof p.cay) |= [cof=cafe pro=vase] ?. (slab %grad p.pro) (flaw cof leaf/"no ++grad" ~) @@ -1463,8 +1461,9 @@ =+ ^= bay ^- baby =+ buy=(~(get by pol.lex) our) ?~(buy *baby u.buy) + =+ bek=(clean-beak now q.q.hic) =^ mos bay - abet:(~(apex za [[our hen] [now eny ski] ~] bay) q.q.hic) + abet:(~(apex za [[our bek hen] [now eny ski] ~] bay) r.q.hic) [mos ..^$(pol (~(put by pol) our bay))] :: ++ doze @@ -1500,13 +1499,14 @@ ++ take :: response |= [tea=wire hen=duct hin=(hypo sign)] ^- [p=(list move) q=_..^$] - ?> ?=([@ @ @ ~] tea) - =+ :* our=(need (slaw %p i.tea)) - num=(need (slaw %ud i.t.tea)) - tik=(need (slaw %ud i.t.t.tea)) + ?> ?=([@ @ @ @ @ @ ~] tea) + =+ :* our=(slav %p i.tea) + num=(slav %ud i.t.tea) + tik=(slav %ud i.t.t.tea) + bek=(clean-beak now -:(need (tome t.t.t.tea))) == =+ bay=(~(got by pol.lex) our) =^ mos bay - abet:(~(axon za [[our hen] [now eny ski] ~] bay) num tik q.hin) + abet:(~(axon za [[our bek hen] [now eny ski] ~] bay) num tik q.hin) [mos ..^$(pol (~(put by pol) our bay))] -- diff --git a/arvo/gall.hoon b/main/arvo/gall.hoon similarity index 98% rename from arvo/gall.hoon rename to main/arvo/gall.hoon index a09bda752..1458b81e1 100644 --- a/arvo/gall.hoon +++ b/main/arvo/gall.hoon @@ -63,7 +63,7 @@ $% [%warp p=sock q=riff] :: == == :: $: %f :: to %ford - $% [%exec p=@p q=(unit silk)] :: + $% [%exec p=@p q=beak r=(unit silk)] :: == == :: $: %g :: to %gall $% [%show p=hapt q=ship r=path] :: @@ -338,6 +338,7 @@ -- |% :: inner core :: +++ leak |=(our=ship `beak`[our %main %da now]) :: default beak ++ best :: cage to gift |= [sem=?(%rush %rust) cay=cage] ^- gift @@ -497,9 +498,9 @@ :- [hen %give %nice ~] :_ ~ ^- move :- neh ?- -.ron - %d [%pass /x/d `note`[%f %exec p.saq ~ %vale p.ron q.saq q.ron]] + %d [%pass /x/d %f %exec p.saq (leak p.saq) ~ %vale p.ron q.saq q.ron] %e [%give %mean p.ron] - %f [%pass /x/f `note`[%f %exec p.saq ~ %vale p.ron q.saq q.ron]] + %f [%pass /x/f %f %exec p.saq (leak p.saq) ~ %vale p.ron q.saq q.ron] %k [%give %nice ~] == :: @@ -518,7 +519,7 @@ == ^- note ?- -.rok - %m [%f %exec p.saq ~ %vale p.rok q.saq q.rok] + %m [%f %exec p.saq (leak p.saq) ~ %vale p.rok q.saq q.rok] %s [%g %show [p.saq imp] q.saq p.rok] %u [%g %nuke [p.saq imp] q.saq] == @@ -757,9 +758,9 @@ :+ %dude leaf/"error in app {} on {} at instance {}" kas - %_ +> - mow :_(mow [hen %pass (away pax) %f [%exec our `kas]]) - onz.sat `[hen pax] + %_ +> + mow :_(mow [hen %pass (away pax) %f [%exec our (leak our) `kas]]) + onz.sat `[hen pax] == :: ++ give :: give a gift @@ -954,7 +955,9 @@ =. ped.sat (~(del by ped.sat) [our syd]) ?~ p.+.sin +>.$ - +>.$(vey.sat (~(put to vey.sat) hen %boot ~)) + ~& %not-restarting-gall-apps + +>.$ + ::+>.$(vey.sat (~(put to vey.sat) hen %boot ~)) == :: ++ morn :: install core @@ -997,7 +1000,7 @@ %= +> onz.sat ~ mow - :_(mow [hen %pass (away q.u.onz.sat) %f [%exec our ~]]) + :_(mow [hen %pass (away q.u.onz.sat) %f [%exec our (leak our) ~]]) == +>.$(vey.sat (~(put to vey.sat) hen kon)) :: diff --git a/arvo/hoon.hoon b/main/arvo/hoon.hoon similarity index 99% rename from arvo/hoon.hoon rename to main/arvo/hoon.hoon index a3fe3f6a5..0909e7d86 100644 --- a/arvo/hoon.hoon +++ b/main/arvo/hoon.hoon @@ -10204,6 +10204,7 @@ eny=@ :: entropy niz=(pair worm (list ,[p=@tas q=vase])) :: modules == :: +=. lac %| =< |% ++ come |= [@ (list ovum) pone] :: 11 ^- [(list ovum) _+>] diff --git a/arvo/jael.hoon b/main/arvo/jael.hoon similarity index 100% rename from arvo/jael.hoon rename to main/arvo/jael.hoon diff --git a/arvo/kahn.hoon b/main/arvo/kahn.hoon similarity index 100% rename from arvo/kahn.hoon rename to main/arvo/kahn.hoon diff --git a/arvo/lunt.hoon b/main/arvo/lunt.hoon similarity index 100% rename from arvo/lunt.hoon rename to main/arvo/lunt.hoon diff --git a/arvo/musk.hoon b/main/arvo/musk.hoon similarity index 100% rename from arvo/musk.hoon rename to main/arvo/musk.hoon diff --git a/arvo/time.hoon b/main/arvo/time.hoon similarity index 100% rename from arvo/time.hoon rename to main/arvo/time.hoon diff --git a/arvo/zuse.hoon b/main/arvo/zuse.hoon similarity index 100% rename from arvo/zuse.hoon rename to main/arvo/zuse.hoon diff --git a/docs/psal.hook b/main/psal.hook similarity index 100% rename from docs/psal.hook rename to main/psal.hook diff --git a/docs/pub/doc.md b/main/pub/doc.md similarity index 100% rename from docs/pub/doc.md rename to main/pub/doc.md diff --git a/docs/pub/doc/arvo.md b/main/pub/doc/arvo.md similarity index 100% rename from docs/pub/doc/arvo.md rename to main/pub/doc/arvo.md diff --git a/docs/pub/doc/arvo/ames.md b/main/pub/doc/arvo/ames.md similarity index 100% rename from docs/pub/doc/arvo/ames.md rename to main/pub/doc/arvo/ames.md diff --git a/docs/pub/doc/arvo/ames/commentary.md b/main/pub/doc/arvo/ames/commentary.md similarity index 100% rename from docs/pub/doc/arvo/ames/commentary.md rename to main/pub/doc/arvo/ames/commentary.md diff --git a/docs/pub/doc/arvo/arvo.md b/main/pub/doc/arvo/arvo.md similarity index 100% rename from docs/pub/doc/arvo/arvo.md rename to main/pub/doc/arvo/arvo.md diff --git a/docs/pub/doc/arvo/arvo/commentary.md b/main/pub/doc/arvo/arvo/commentary.md similarity index 100% rename from docs/pub/doc/arvo/arvo/commentary.md rename to main/pub/doc/arvo/arvo/commentary.md diff --git a/docs/pub/doc/arvo/clay.md b/main/pub/doc/arvo/clay.md similarity index 100% rename from docs/pub/doc/arvo/clay.md rename to main/pub/doc/arvo/clay.md diff --git a/docs/pub/doc/arvo/clay/commentary.md b/main/pub/doc/arvo/clay/commentary.md similarity index 100% rename from docs/pub/doc/arvo/clay/commentary.md rename to main/pub/doc/arvo/clay/commentary.md diff --git a/docs/pub/doc/arvo/dill.md b/main/pub/doc/arvo/dill.md similarity index 100% rename from docs/pub/doc/arvo/dill.md rename to main/pub/doc/arvo/dill.md diff --git a/docs/pub/doc/arvo/dill/commentary.md b/main/pub/doc/arvo/dill/commentary.md similarity index 100% rename from docs/pub/doc/arvo/dill/commentary.md rename to main/pub/doc/arvo/dill/commentary.md diff --git a/docs/pub/doc/arvo/eyre.md b/main/pub/doc/arvo/eyre.md similarity index 100% rename from docs/pub/doc/arvo/eyre.md rename to main/pub/doc/arvo/eyre.md diff --git a/docs/pub/doc/arvo/eyre/commentary.md b/main/pub/doc/arvo/eyre/commentary.md similarity index 100% rename from docs/pub/doc/arvo/eyre/commentary.md rename to main/pub/doc/arvo/eyre/commentary.md diff --git a/docs/pub/doc/arvo/ford.md b/main/pub/doc/arvo/ford.md similarity index 100% rename from docs/pub/doc/arvo/ford.md rename to main/pub/doc/arvo/ford.md diff --git a/docs/pub/doc/arvo/ford/commentary.md b/main/pub/doc/arvo/ford/commentary.md similarity index 100% rename from docs/pub/doc/arvo/ford/commentary.md rename to main/pub/doc/arvo/ford/commentary.md diff --git a/docs/pub/doc/arvo/gall.md b/main/pub/doc/arvo/gall.md similarity index 100% rename from docs/pub/doc/arvo/gall.md rename to main/pub/doc/arvo/gall.md diff --git a/docs/pub/doc/arvo/gall/gall.md b/main/pub/doc/arvo/gall/gall.md similarity index 100% rename from docs/pub/doc/arvo/gall/gall.md rename to main/pub/doc/arvo/gall/gall.md diff --git a/docs/pub/doc/arvo/ives.md b/main/pub/doc/arvo/ives.md similarity index 100% rename from docs/pub/doc/arvo/ives.md rename to main/pub/doc/arvo/ives.md diff --git a/docs/pub/doc/arvo/ives/ives.md b/main/pub/doc/arvo/ives/ives.md similarity index 100% rename from docs/pub/doc/arvo/ives/ives.md rename to main/pub/doc/arvo/ives/ives.md diff --git a/docs/pub/doc/arvo/jael.md b/main/pub/doc/arvo/jael.md similarity index 100% rename from docs/pub/doc/arvo/jael.md rename to main/pub/doc/arvo/jael.md diff --git a/docs/pub/doc/arvo/jael/jael.md b/main/pub/doc/arvo/jael/jael.md similarity index 100% rename from docs/pub/doc/arvo/jael/jael.md rename to main/pub/doc/arvo/jael/jael.md diff --git a/docs/pub/doc/arvo/kahn.md b/main/pub/doc/arvo/kahn.md similarity index 100% rename from docs/pub/doc/arvo/kahn.md rename to main/pub/doc/arvo/kahn.md diff --git a/docs/pub/doc/arvo/kahn/kahn.md b/main/pub/doc/arvo/kahn/kahn.md similarity index 100% rename from docs/pub/doc/arvo/kahn/kahn.md rename to main/pub/doc/arvo/kahn/kahn.md diff --git a/docs/pub/doc/arvo/lunt.md b/main/pub/doc/arvo/lunt.md similarity index 100% rename from docs/pub/doc/arvo/lunt.md rename to main/pub/doc/arvo/lunt.md diff --git a/docs/pub/doc/arvo/lunt/lunt.md b/main/pub/doc/arvo/lunt/lunt.md similarity index 100% rename from docs/pub/doc/arvo/lunt/lunt.md rename to main/pub/doc/arvo/lunt/lunt.md diff --git a/docs/pub/doc/arvo/time.md b/main/pub/doc/arvo/time.md similarity index 100% rename from docs/pub/doc/arvo/time.md rename to main/pub/doc/arvo/time.md diff --git a/docs/pub/doc/arvo/util.md b/main/pub/doc/arvo/util.md similarity index 100% rename from docs/pub/doc/arvo/util.md rename to main/pub/doc/arvo/util.md diff --git a/docs/pub/doc/guide.md b/main/pub/doc/guide.md similarity index 100% rename from docs/pub/doc/guide.md rename to main/pub/doc/guide.md diff --git a/docs/pub/doc/guide/a-ford.md b/main/pub/doc/guide/a-ford.md similarity index 100% rename from docs/pub/doc/guide/a-ford.md rename to main/pub/doc/guide/a-ford.md diff --git a/docs/pub/doc/guide/b-cli.md b/main/pub/doc/guide/b-cli.md similarity index 100% rename from docs/pub/doc/guide/b-cli.md rename to main/pub/doc/guide/b-cli.md diff --git a/docs/pub/doc/guide/c-gall.md b/main/pub/doc/guide/c-gall.md similarity index 100% rename from docs/pub/doc/guide/c-gall.md rename to main/pub/doc/guide/c-gall.md diff --git a/docs/pub/doc/guide/d-app.md b/main/pub/doc/guide/d-app.md similarity index 100% rename from docs/pub/doc/guide/d-app.md rename to main/pub/doc/guide/d-app.md diff --git a/docs/pub/doc/guide/e-dev.md b/main/pub/doc/guide/e-dev.md similarity index 100% rename from docs/pub/doc/guide/e-dev.md rename to main/pub/doc/guide/e-dev.md diff --git a/docs/pub/doc/hoon.md b/main/pub/doc/hoon.md similarity index 100% rename from docs/pub/doc/hoon.md rename to main/pub/doc/hoon.md diff --git a/docs/pub/doc/hoon/library.md b/main/pub/doc/hoon/library.md similarity index 100% rename from docs/pub/doc/hoon/library.md rename to main/pub/doc/hoon/library.md diff --git a/docs/pub/doc/hoon/library/0.md b/main/pub/doc/hoon/library/0.md similarity index 100% rename from docs/pub/doc/hoon/library/0.md rename to main/pub/doc/hoon/library/0.md diff --git a/docs/pub/doc/hoon/library/1.md b/main/pub/doc/hoon/library/1.md similarity index 100% rename from docs/pub/doc/hoon/library/1.md rename to main/pub/doc/hoon/library/1.md diff --git a/docs/pub/doc/hoon/library/2a.md b/main/pub/doc/hoon/library/2a.md similarity index 100% rename from docs/pub/doc/hoon/library/2a.md rename to main/pub/doc/hoon/library/2a.md diff --git a/docs/pub/doc/hoon/library/2b.md b/main/pub/doc/hoon/library/2b.md similarity index 100% rename from docs/pub/doc/hoon/library/2b.md rename to main/pub/doc/hoon/library/2b.md diff --git a/docs/pub/doc/hoon/library/2c.md b/main/pub/doc/hoon/library/2c.md similarity index 100% rename from docs/pub/doc/hoon/library/2c.md rename to main/pub/doc/hoon/library/2c.md diff --git a/docs/pub/doc/hoon/library/2da.md b/main/pub/doc/hoon/library/2da.md similarity index 100% rename from docs/pub/doc/hoon/library/2da.md rename to main/pub/doc/hoon/library/2da.md diff --git a/docs/pub/doc/hoon/library/2db.md b/main/pub/doc/hoon/library/2db.md similarity index 100% rename from docs/pub/doc/hoon/library/2db.md rename to main/pub/doc/hoon/library/2db.md diff --git a/docs/pub/doc/hoon/library/2dc.md b/main/pub/doc/hoon/library/2dc.md similarity index 100% rename from docs/pub/doc/hoon/library/2dc.md rename to main/pub/doc/hoon/library/2dc.md diff --git a/docs/pub/doc/hoon/library/2dd.md b/main/pub/doc/hoon/library/2dd.md similarity index 100% rename from docs/pub/doc/hoon/library/2dd.md rename to main/pub/doc/hoon/library/2dd.md diff --git a/docs/pub/doc/hoon/library/2ea.md b/main/pub/doc/hoon/library/2ea.md similarity index 100% rename from docs/pub/doc/hoon/library/2ea.md rename to main/pub/doc/hoon/library/2ea.md diff --git a/docs/pub/doc/hoon/library/2eb.md b/main/pub/doc/hoon/library/2eb.md similarity index 100% rename from docs/pub/doc/hoon/library/2eb.md rename to main/pub/doc/hoon/library/2eb.md diff --git a/docs/pub/doc/hoon/library/2ec.md b/main/pub/doc/hoon/library/2ec.md similarity index 100% rename from docs/pub/doc/hoon/library/2ec.md rename to main/pub/doc/hoon/library/2ec.md diff --git a/docs/pub/doc/hoon/library/2ed.md b/main/pub/doc/hoon/library/2ed.md similarity index 100% rename from docs/pub/doc/hoon/library/2ed.md rename to main/pub/doc/hoon/library/2ed.md diff --git a/docs/pub/doc/hoon/library/2ee.md b/main/pub/doc/hoon/library/2ee.md similarity index 100% rename from docs/pub/doc/hoon/library/2ee.md rename to main/pub/doc/hoon/library/2ee.md diff --git a/docs/pub/doc/hoon/library/2ef.md b/main/pub/doc/hoon/library/2ef.md similarity index 100% rename from docs/pub/doc/hoon/library/2ef.md rename to main/pub/doc/hoon/library/2ef.md diff --git a/docs/pub/doc/hoon/library/2eg.md b/main/pub/doc/hoon/library/2eg.md similarity index 100% rename from docs/pub/doc/hoon/library/2eg.md rename to main/pub/doc/hoon/library/2eg.md diff --git a/docs/pub/doc/hoon/library/2eh.md b/main/pub/doc/hoon/library/2eh.md similarity index 100% rename from docs/pub/doc/hoon/library/2eh.md rename to main/pub/doc/hoon/library/2eh.md diff --git a/docs/pub/doc/hoon/library/2ei.md b/main/pub/doc/hoon/library/2ei.md similarity index 100% rename from docs/pub/doc/hoon/library/2ei.md rename to main/pub/doc/hoon/library/2ei.md diff --git a/docs/pub/doc/hoon/library/2ej.md b/main/pub/doc/hoon/library/2ej.md similarity index 100% rename from docs/pub/doc/hoon/library/2ej.md rename to main/pub/doc/hoon/library/2ej.md diff --git a/docs/pub/doc/hoon/library/2ek.md b/main/pub/doc/hoon/library/2ek.md similarity index 100% rename from docs/pub/doc/hoon/library/2ek.md rename to main/pub/doc/hoon/library/2ek.md diff --git a/docs/pub/doc/hoon/library/2el.md b/main/pub/doc/hoon/library/2el.md similarity index 100% rename from docs/pub/doc/hoon/library/2el.md rename to main/pub/doc/hoon/library/2el.md diff --git a/docs/pub/doc/hoon/library/2em.md b/main/pub/doc/hoon/library/2em.md similarity index 100% rename from docs/pub/doc/hoon/library/2em.md rename to main/pub/doc/hoon/library/2em.md diff --git a/docs/pub/doc/hoon/library/2en.md b/main/pub/doc/hoon/library/2en.md similarity index 100% rename from docs/pub/doc/hoon/library/2en.md rename to main/pub/doc/hoon/library/2en.md diff --git a/docs/pub/doc/hoon/library/2eo.md b/main/pub/doc/hoon/library/2eo.md similarity index 100% rename from docs/pub/doc/hoon/library/2eo.md rename to main/pub/doc/hoon/library/2eo.md diff --git a/docs/pub/doc/hoon/library/2ep.md b/main/pub/doc/hoon/library/2ep.md similarity index 100% rename from docs/pub/doc/hoon/library/2ep.md rename to main/pub/doc/hoon/library/2ep.md diff --git a/docs/pub/doc/hoon/library/2ew.md b/main/pub/doc/hoon/library/2ew.md similarity index 100% rename from docs/pub/doc/hoon/library/2ew.md rename to main/pub/doc/hoon/library/2ew.md diff --git a/docs/pub/doc/hoon/library/2ex.md b/main/pub/doc/hoon/library/2ex.md similarity index 100% rename from docs/pub/doc/hoon/library/2ex.md rename to main/pub/doc/hoon/library/2ex.md diff --git a/docs/pub/doc/hoon/library/2ey.md b/main/pub/doc/hoon/library/2ey.md similarity index 100% rename from docs/pub/doc/hoon/library/2ey.md rename to main/pub/doc/hoon/library/2ey.md diff --git a/docs/pub/doc/hoon/library/2ez.md b/main/pub/doc/hoon/library/2ez.md similarity index 100% rename from docs/pub/doc/hoon/library/2ez.md rename to main/pub/doc/hoon/library/2ez.md diff --git a/docs/pub/doc/hoon/library/3ba.md b/main/pub/doc/hoon/library/3ba.md similarity index 100% rename from docs/pub/doc/hoon/library/3ba.md rename to main/pub/doc/hoon/library/3ba.md diff --git a/docs/pub/doc/hoon/library/3bb.md b/main/pub/doc/hoon/library/3bb.md similarity index 100% rename from docs/pub/doc/hoon/library/3bb.md rename to main/pub/doc/hoon/library/3bb.md diff --git a/docs/pub/doc/hoon/library/3bc.md b/main/pub/doc/hoon/library/3bc.md similarity index 100% rename from docs/pub/doc/hoon/library/3bc.md rename to main/pub/doc/hoon/library/3bc.md diff --git a/docs/pub/doc/hoon/library/3bd.md b/main/pub/doc/hoon/library/3bd.md similarity index 100% rename from docs/pub/doc/hoon/library/3bd.md rename to main/pub/doc/hoon/library/3bd.md diff --git a/docs/pub/doc/hoon/library/3be.md b/main/pub/doc/hoon/library/3be.md similarity index 100% rename from docs/pub/doc/hoon/library/3be.md rename to main/pub/doc/hoon/library/3be.md diff --git a/docs/pub/doc/hoon/library/3bf.md b/main/pub/doc/hoon/library/3bf.md similarity index 100% rename from docs/pub/doc/hoon/library/3bf.md rename to main/pub/doc/hoon/library/3bf.md diff --git a/docs/pub/doc/hoon/library/3bg.md b/main/pub/doc/hoon/library/3bg.md similarity index 100% rename from docs/pub/doc/hoon/library/3bg.md rename to main/pub/doc/hoon/library/3bg.md diff --git a/docs/pub/doc/hoon/library/3bh.md b/main/pub/doc/hoon/library/3bh.md similarity index 100% rename from docs/pub/doc/hoon/library/3bh.md rename to main/pub/doc/hoon/library/3bh.md diff --git a/docs/pub/doc/hoon/library/3bi.md b/main/pub/doc/hoon/library/3bi.md similarity index 100% rename from docs/pub/doc/hoon/library/3bi.md rename to main/pub/doc/hoon/library/3bi.md diff --git a/docs/pub/doc/hoon/reference.md b/main/pub/doc/hoon/reference.md similarity index 100% rename from docs/pub/doc/hoon/reference.md rename to main/pub/doc/hoon/reference.md diff --git a/docs/pub/doc/hoon/reference/odors.md b/main/pub/doc/hoon/reference/odors.md similarity index 100% rename from docs/pub/doc/hoon/reference/odors.md rename to main/pub/doc/hoon/reference/odors.md diff --git a/docs/pub/doc/hoon/runes.md b/main/pub/doc/hoon/runes.md similarity index 100% rename from docs/pub/doc/hoon/runes.md rename to main/pub/doc/hoon/runes.md diff --git a/docs/pub/doc/hoon/runes/bc.md b/main/pub/doc/hoon/runes/bc.md similarity index 100% rename from docs/pub/doc/hoon/runes/bc.md rename to main/pub/doc/hoon/runes/bc.md diff --git a/docs/pub/doc/hoon/runes/bc/bcbr.md b/main/pub/doc/hoon/runes/bc/bcbr.md similarity index 100% rename from docs/pub/doc/hoon/runes/bc/bcbr.md rename to main/pub/doc/hoon/runes/bc/bcbr.md diff --git a/docs/pub/doc/hoon/runes/bc/bccb.md b/main/pub/doc/hoon/runes/bc/bccb.md similarity index 100% rename from docs/pub/doc/hoon/runes/bc/bccb.md rename to main/pub/doc/hoon/runes/bc/bccb.md diff --git a/docs/pub/doc/hoon/runes/bc/bccl.md b/main/pub/doc/hoon/runes/bc/bccl.md similarity index 100% rename from docs/pub/doc/hoon/runes/bc/bccl.md rename to main/pub/doc/hoon/runes/bc/bccl.md diff --git a/docs/pub/doc/hoon/runes/bc/bccm.md b/main/pub/doc/hoon/runes/bc/bccm.md similarity index 100% rename from docs/pub/doc/hoon/runes/bc/bccm.md rename to main/pub/doc/hoon/runes/bc/bccm.md diff --git a/docs/pub/doc/hoon/runes/bc/bccn.md b/main/pub/doc/hoon/runes/bc/bccn.md similarity index 100% rename from docs/pub/doc/hoon/runes/bc/bccn.md rename to main/pub/doc/hoon/runes/bc/bccn.md diff --git a/docs/pub/doc/hoon/runes/bc/bckt.md b/main/pub/doc/hoon/runes/bc/bckt.md similarity index 100% rename from docs/pub/doc/hoon/runes/bc/bckt.md rename to main/pub/doc/hoon/runes/bc/bckt.md diff --git a/docs/pub/doc/hoon/runes/bc/bcls.md b/main/pub/doc/hoon/runes/bc/bcls.md similarity index 100% rename from docs/pub/doc/hoon/runes/bc/bcls.md rename to main/pub/doc/hoon/runes/bc/bcls.md diff --git a/docs/pub/doc/hoon/runes/bc/bcpm.md b/main/pub/doc/hoon/runes/bc/bcpm.md similarity index 100% rename from docs/pub/doc/hoon/runes/bc/bcpm.md rename to main/pub/doc/hoon/runes/bc/bcpm.md diff --git a/docs/pub/doc/hoon/runes/bc/bcpt.md b/main/pub/doc/hoon/runes/bc/bcpt.md similarity index 100% rename from docs/pub/doc/hoon/runes/bc/bcpt.md rename to main/pub/doc/hoon/runes/bc/bcpt.md diff --git a/docs/pub/doc/hoon/runes/bc/bctr.md b/main/pub/doc/hoon/runes/bc/bctr.md similarity index 100% rename from docs/pub/doc/hoon/runes/bc/bctr.md rename to main/pub/doc/hoon/runes/bc/bctr.md diff --git a/docs/pub/doc/hoon/runes/bc/bcts.md b/main/pub/doc/hoon/runes/bc/bcts.md similarity index 100% rename from docs/pub/doc/hoon/runes/bc/bcts.md rename to main/pub/doc/hoon/runes/bc/bcts.md diff --git a/docs/pub/doc/hoon/runes/bc/bcwt.md b/main/pub/doc/hoon/runes/bc/bcwt.md similarity index 100% rename from docs/pub/doc/hoon/runes/bc/bcwt.md rename to main/pub/doc/hoon/runes/bc/bcwt.md diff --git a/docs/pub/doc/hoon/runes/bc/bczp.md b/main/pub/doc/hoon/runes/bc/bczp.md similarity index 100% rename from docs/pub/doc/hoon/runes/bc/bczp.md rename to main/pub/doc/hoon/runes/bc/bczp.md diff --git a/docs/pub/doc/hoon/runes/br.md b/main/pub/doc/hoon/runes/br.md similarity index 100% rename from docs/pub/doc/hoon/runes/br.md rename to main/pub/doc/hoon/runes/br.md diff --git a/docs/pub/doc/hoon/runes/br/brcb.md b/main/pub/doc/hoon/runes/br/brcb.md similarity index 100% rename from docs/pub/doc/hoon/runes/br/brcb.md rename to main/pub/doc/hoon/runes/br/brcb.md diff --git a/docs/pub/doc/hoon/runes/br/brcn.md b/main/pub/doc/hoon/runes/br/brcn.md similarity index 100% rename from docs/pub/doc/hoon/runes/br/brcn.md rename to main/pub/doc/hoon/runes/br/brcn.md diff --git a/docs/pub/doc/hoon/runes/br/brdt.md b/main/pub/doc/hoon/runes/br/brdt.md similarity index 100% rename from docs/pub/doc/hoon/runes/br/brdt.md rename to main/pub/doc/hoon/runes/br/brdt.md diff --git a/docs/pub/doc/hoon/runes/br/brfs.md b/main/pub/doc/hoon/runes/br/brfs.md similarity index 100% rename from docs/pub/doc/hoon/runes/br/brfs.md rename to main/pub/doc/hoon/runes/br/brfs.md diff --git a/docs/pub/doc/hoon/runes/br/brhp.md b/main/pub/doc/hoon/runes/br/brhp.md similarity index 100% rename from docs/pub/doc/hoon/runes/br/brhp.md rename to main/pub/doc/hoon/runes/br/brhp.md diff --git a/docs/pub/doc/hoon/runes/br/brkt.md b/main/pub/doc/hoon/runes/br/brkt.md similarity index 100% rename from docs/pub/doc/hoon/runes/br/brkt.md rename to main/pub/doc/hoon/runes/br/brkt.md diff --git a/docs/pub/doc/hoon/runes/br/brls.md b/main/pub/doc/hoon/runes/br/brls.md similarity index 100% rename from docs/pub/doc/hoon/runes/br/brls.md rename to main/pub/doc/hoon/runes/br/brls.md diff --git a/docs/pub/doc/hoon/runes/br/brtr.md b/main/pub/doc/hoon/runes/br/brtr.md similarity index 100% rename from docs/pub/doc/hoon/runes/br/brtr.md rename to main/pub/doc/hoon/runes/br/brtr.md diff --git a/docs/pub/doc/hoon/runes/br/brts.md b/main/pub/doc/hoon/runes/br/brts.md similarity index 100% rename from docs/pub/doc/hoon/runes/br/brts.md rename to main/pub/doc/hoon/runes/br/brts.md diff --git a/docs/pub/doc/hoon/runes/br/brwt.md b/main/pub/doc/hoon/runes/br/brwt.md similarity index 100% rename from docs/pub/doc/hoon/runes/br/brwt.md rename to main/pub/doc/hoon/runes/br/brwt.md diff --git a/docs/pub/doc/hoon/runes/cl.md b/main/pub/doc/hoon/runes/cl.md similarity index 100% rename from docs/pub/doc/hoon/runes/cl.md rename to main/pub/doc/hoon/runes/cl.md diff --git a/docs/pub/doc/hoon/runes/cl/clcb.md b/main/pub/doc/hoon/runes/cl/clcb.md similarity index 100% rename from docs/pub/doc/hoon/runes/cl/clcb.md rename to main/pub/doc/hoon/runes/cl/clcb.md diff --git a/docs/pub/doc/hoon/runes/cl/clfs.md b/main/pub/doc/hoon/runes/cl/clfs.md similarity index 100% rename from docs/pub/doc/hoon/runes/cl/clfs.md rename to main/pub/doc/hoon/runes/cl/clfs.md diff --git a/docs/pub/doc/hoon/runes/cl/clhp.md b/main/pub/doc/hoon/runes/cl/clhp.md similarity index 100% rename from docs/pub/doc/hoon/runes/cl/clhp.md rename to main/pub/doc/hoon/runes/cl/clhp.md diff --git a/docs/pub/doc/hoon/runes/cl/clkt.md b/main/pub/doc/hoon/runes/cl/clkt.md similarity index 100% rename from docs/pub/doc/hoon/runes/cl/clkt.md rename to main/pub/doc/hoon/runes/cl/clkt.md diff --git a/docs/pub/doc/hoon/runes/cl/clls.md b/main/pub/doc/hoon/runes/cl/clls.md similarity index 100% rename from docs/pub/doc/hoon/runes/cl/clls.md rename to main/pub/doc/hoon/runes/cl/clls.md diff --git a/docs/pub/doc/hoon/runes/cl/clsg.md b/main/pub/doc/hoon/runes/cl/clsg.md similarity index 100% rename from docs/pub/doc/hoon/runes/cl/clsg.md rename to main/pub/doc/hoon/runes/cl/clsg.md diff --git a/docs/pub/doc/hoon/runes/cl/cltr.md b/main/pub/doc/hoon/runes/cl/cltr.md similarity index 100% rename from docs/pub/doc/hoon/runes/cl/cltr.md rename to main/pub/doc/hoon/runes/cl/cltr.md diff --git a/docs/pub/doc/hoon/runes/cn.md b/main/pub/doc/hoon/runes/cn.md similarity index 100% rename from docs/pub/doc/hoon/runes/cn.md rename to main/pub/doc/hoon/runes/cn.md diff --git a/docs/pub/doc/hoon/runes/cn/cncb.md b/main/pub/doc/hoon/runes/cn/cncb.md similarity index 100% rename from docs/pub/doc/hoon/runes/cn/cncb.md rename to main/pub/doc/hoon/runes/cn/cncb.md diff --git a/docs/pub/doc/hoon/runes/cn/cncl.md b/main/pub/doc/hoon/runes/cn/cncl.md similarity index 100% rename from docs/pub/doc/hoon/runes/cn/cncl.md rename to main/pub/doc/hoon/runes/cn/cncl.md diff --git a/docs/pub/doc/hoon/runes/cn/cndt.md b/main/pub/doc/hoon/runes/cn/cndt.md similarity index 100% rename from docs/pub/doc/hoon/runes/cn/cndt.md rename to main/pub/doc/hoon/runes/cn/cndt.md diff --git a/docs/pub/doc/hoon/runes/cn/cnhp.md b/main/pub/doc/hoon/runes/cn/cnhp.md similarity index 100% rename from docs/pub/doc/hoon/runes/cn/cnhp.md rename to main/pub/doc/hoon/runes/cn/cnhp.md diff --git a/docs/pub/doc/hoon/runes/cn/cnkt.md b/main/pub/doc/hoon/runes/cn/cnkt.md similarity index 100% rename from docs/pub/doc/hoon/runes/cn/cnkt.md rename to main/pub/doc/hoon/runes/cn/cnkt.md diff --git a/docs/pub/doc/hoon/runes/cn/cnls.md b/main/pub/doc/hoon/runes/cn/cnls.md similarity index 100% rename from docs/pub/doc/hoon/runes/cn/cnls.md rename to main/pub/doc/hoon/runes/cn/cnls.md diff --git a/docs/pub/doc/hoon/runes/cn/cnsg.md b/main/pub/doc/hoon/runes/cn/cnsg.md similarity index 100% rename from docs/pub/doc/hoon/runes/cn/cnsg.md rename to main/pub/doc/hoon/runes/cn/cnsg.md diff --git a/docs/pub/doc/hoon/runes/cn/cntr.md b/main/pub/doc/hoon/runes/cn/cntr.md similarity index 100% rename from docs/pub/doc/hoon/runes/cn/cntr.md rename to main/pub/doc/hoon/runes/cn/cntr.md diff --git a/docs/pub/doc/hoon/runes/cn/cnts.md b/main/pub/doc/hoon/runes/cn/cnts.md similarity index 100% rename from docs/pub/doc/hoon/runes/cn/cnts.md rename to main/pub/doc/hoon/runes/cn/cnts.md diff --git a/docs/pub/doc/hoon/runes/cn/cnzy.md b/main/pub/doc/hoon/runes/cn/cnzy.md similarity index 100% rename from docs/pub/doc/hoon/runes/cn/cnzy.md rename to main/pub/doc/hoon/runes/cn/cnzy.md diff --git a/docs/pub/doc/hoon/runes/cn/cnzz.md b/main/pub/doc/hoon/runes/cn/cnzz.md similarity index 100% rename from docs/pub/doc/hoon/runes/cn/cnzz.md rename to main/pub/doc/hoon/runes/cn/cnzz.md diff --git a/docs/pub/doc/hoon/runes/dt.md b/main/pub/doc/hoon/runes/dt.md similarity index 100% rename from docs/pub/doc/hoon/runes/dt.md rename to main/pub/doc/hoon/runes/dt.md diff --git a/docs/pub/doc/hoon/runes/dt/dtkt.md b/main/pub/doc/hoon/runes/dt/dtkt.md similarity index 100% rename from docs/pub/doc/hoon/runes/dt/dtkt.md rename to main/pub/doc/hoon/runes/dt/dtkt.md diff --git a/docs/pub/doc/hoon/runes/dt/dtls.md b/main/pub/doc/hoon/runes/dt/dtls.md similarity index 100% rename from docs/pub/doc/hoon/runes/dt/dtls.md rename to main/pub/doc/hoon/runes/dt/dtls.md diff --git a/docs/pub/doc/hoon/runes/dt/dttr.md b/main/pub/doc/hoon/runes/dt/dttr.md similarity index 100% rename from docs/pub/doc/hoon/runes/dt/dttr.md rename to main/pub/doc/hoon/runes/dt/dttr.md diff --git a/docs/pub/doc/hoon/runes/dt/dtts.md b/main/pub/doc/hoon/runes/dt/dtts.md similarity index 100% rename from docs/pub/doc/hoon/runes/dt/dtts.md rename to main/pub/doc/hoon/runes/dt/dtts.md diff --git a/docs/pub/doc/hoon/runes/dt/dtwt.md b/main/pub/doc/hoon/runes/dt/dtwt.md similarity index 100% rename from docs/pub/doc/hoon/runes/dt/dtwt.md rename to main/pub/doc/hoon/runes/dt/dtwt.md diff --git a/docs/pub/doc/hoon/runes/dt/dtzy.md b/main/pub/doc/hoon/runes/dt/dtzy.md similarity index 100% rename from docs/pub/doc/hoon/runes/dt/dtzy.md rename to main/pub/doc/hoon/runes/dt/dtzy.md diff --git a/docs/pub/doc/hoon/runes/dt/dtzz.md b/main/pub/doc/hoon/runes/dt/dtzz.md similarity index 100% rename from docs/pub/doc/hoon/runes/dt/dtzz.md rename to main/pub/doc/hoon/runes/dt/dtzz.md diff --git a/docs/pub/doc/hoon/runes/hx.md b/main/pub/doc/hoon/runes/hx.md similarity index 100% rename from docs/pub/doc/hoon/runes/hx.md rename to main/pub/doc/hoon/runes/hx.md diff --git a/docs/pub/doc/hoon/runes/hx/hxgl.md b/main/pub/doc/hoon/runes/hx/hxgl.md similarity index 100% rename from docs/pub/doc/hoon/runes/hx/hxgl.md rename to main/pub/doc/hoon/runes/hx/hxgl.md diff --git a/docs/pub/doc/hoon/runes/hx/hxgr.md b/main/pub/doc/hoon/runes/hx/hxgr.md similarity index 100% rename from docs/pub/doc/hoon/runes/hx/hxgr.md rename to main/pub/doc/hoon/runes/hx/hxgr.md diff --git a/docs/pub/doc/hoon/runes/kt.md b/main/pub/doc/hoon/runes/kt.md similarity index 100% rename from docs/pub/doc/hoon/runes/kt.md rename to main/pub/doc/hoon/runes/kt.md diff --git a/docs/pub/doc/hoon/runes/kt/ktbr.md b/main/pub/doc/hoon/runes/kt/ktbr.md similarity index 100% rename from docs/pub/doc/hoon/runes/kt/ktbr.md rename to main/pub/doc/hoon/runes/kt/ktbr.md diff --git a/docs/pub/doc/hoon/runes/kt/ktdt.md b/main/pub/doc/hoon/runes/kt/ktdt.md similarity index 100% rename from docs/pub/doc/hoon/runes/kt/ktdt.md rename to main/pub/doc/hoon/runes/kt/ktdt.md diff --git a/docs/pub/doc/hoon/runes/kt/kthp.md b/main/pub/doc/hoon/runes/kt/kthp.md similarity index 100% rename from docs/pub/doc/hoon/runes/kt/kthp.md rename to main/pub/doc/hoon/runes/kt/kthp.md diff --git a/docs/pub/doc/hoon/runes/kt/ktls.md b/main/pub/doc/hoon/runes/kt/ktls.md similarity index 100% rename from docs/pub/doc/hoon/runes/kt/ktls.md rename to main/pub/doc/hoon/runes/kt/ktls.md diff --git a/docs/pub/doc/hoon/runes/kt/ktpm.md b/main/pub/doc/hoon/runes/kt/ktpm.md similarity index 100% rename from docs/pub/doc/hoon/runes/kt/ktpm.md rename to main/pub/doc/hoon/runes/kt/ktpm.md diff --git a/docs/pub/doc/hoon/runes/kt/ktsg.md b/main/pub/doc/hoon/runes/kt/ktsg.md similarity index 100% rename from docs/pub/doc/hoon/runes/kt/ktsg.md rename to main/pub/doc/hoon/runes/kt/ktsg.md diff --git a/docs/pub/doc/hoon/runes/kt/ktts.md b/main/pub/doc/hoon/runes/kt/ktts.md similarity index 100% rename from docs/pub/doc/hoon/runes/kt/ktts.md rename to main/pub/doc/hoon/runes/kt/ktts.md diff --git a/docs/pub/doc/hoon/runes/kt/ktwt.md b/main/pub/doc/hoon/runes/kt/ktwt.md similarity index 100% rename from docs/pub/doc/hoon/runes/kt/ktwt.md rename to main/pub/doc/hoon/runes/kt/ktwt.md diff --git a/docs/pub/doc/hoon/runes/sg.md b/main/pub/doc/hoon/runes/sg.md similarity index 100% rename from docs/pub/doc/hoon/runes/sg.md rename to main/pub/doc/hoon/runes/sg.md diff --git a/docs/pub/doc/hoon/runes/sg/sgbc.md b/main/pub/doc/hoon/runes/sg/sgbc.md similarity index 100% rename from docs/pub/doc/hoon/runes/sg/sgbc.md rename to main/pub/doc/hoon/runes/sg/sgbc.md diff --git a/docs/pub/doc/hoon/runes/sg/sgbr.md b/main/pub/doc/hoon/runes/sg/sgbr.md similarity index 100% rename from docs/pub/doc/hoon/runes/sg/sgbr.md rename to main/pub/doc/hoon/runes/sg/sgbr.md diff --git a/docs/pub/doc/hoon/runes/sg/sgcb.md b/main/pub/doc/hoon/runes/sg/sgcb.md similarity index 100% rename from docs/pub/doc/hoon/runes/sg/sgcb.md rename to main/pub/doc/hoon/runes/sg/sgcb.md diff --git a/docs/pub/doc/hoon/runes/sg/sgcn.md b/main/pub/doc/hoon/runes/sg/sgcn.md similarity index 100% rename from docs/pub/doc/hoon/runes/sg/sgcn.md rename to main/pub/doc/hoon/runes/sg/sgcn.md diff --git a/docs/pub/doc/hoon/runes/sg/sgfs.md b/main/pub/doc/hoon/runes/sg/sgfs.md similarity index 100% rename from docs/pub/doc/hoon/runes/sg/sgfs.md rename to main/pub/doc/hoon/runes/sg/sgfs.md diff --git a/docs/pub/doc/hoon/runes/sg/sggl.md b/main/pub/doc/hoon/runes/sg/sggl.md similarity index 100% rename from docs/pub/doc/hoon/runes/sg/sggl.md rename to main/pub/doc/hoon/runes/sg/sggl.md diff --git a/docs/pub/doc/hoon/runes/sg/sggr.md b/main/pub/doc/hoon/runes/sg/sggr.md similarity index 100% rename from docs/pub/doc/hoon/runes/sg/sggr.md rename to main/pub/doc/hoon/runes/sg/sggr.md diff --git a/docs/pub/doc/hoon/runes/sg/sgls.md b/main/pub/doc/hoon/runes/sg/sgls.md similarity index 100% rename from docs/pub/doc/hoon/runes/sg/sgls.md rename to main/pub/doc/hoon/runes/sg/sgls.md diff --git a/docs/pub/doc/hoon/runes/sg/sgpm.md b/main/pub/doc/hoon/runes/sg/sgpm.md similarity index 100% rename from docs/pub/doc/hoon/runes/sg/sgpm.md rename to main/pub/doc/hoon/runes/sg/sgpm.md diff --git a/docs/pub/doc/hoon/runes/sg/sgts.md b/main/pub/doc/hoon/runes/sg/sgts.md similarity index 100% rename from docs/pub/doc/hoon/runes/sg/sgts.md rename to main/pub/doc/hoon/runes/sg/sgts.md diff --git a/docs/pub/doc/hoon/runes/sg/sgwt.md b/main/pub/doc/hoon/runes/sg/sgwt.md similarity index 100% rename from docs/pub/doc/hoon/runes/sg/sgwt.md rename to main/pub/doc/hoon/runes/sg/sgwt.md diff --git a/docs/pub/doc/hoon/runes/sg/sgzp.md b/main/pub/doc/hoon/runes/sg/sgzp.md similarity index 100% rename from docs/pub/doc/hoon/runes/sg/sgzp.md rename to main/pub/doc/hoon/runes/sg/sgzp.md diff --git a/docs/pub/doc/hoon/runes/sm.md b/main/pub/doc/hoon/runes/sm.md similarity index 100% rename from docs/pub/doc/hoon/runes/sm.md rename to main/pub/doc/hoon/runes/sm.md diff --git a/docs/pub/doc/hoon/runes/sm/smcl.md b/main/pub/doc/hoon/runes/sm/smcl.md similarity index 100% rename from docs/pub/doc/hoon/runes/sm/smcl.md rename to main/pub/doc/hoon/runes/sm/smcl.md diff --git a/docs/pub/doc/hoon/runes/sm/smcn.md b/main/pub/doc/hoon/runes/sm/smcn.md similarity index 100% rename from docs/pub/doc/hoon/runes/sm/smcn.md rename to main/pub/doc/hoon/runes/sm/smcn.md diff --git a/docs/pub/doc/hoon/runes/sm/smdq.md b/main/pub/doc/hoon/runes/sm/smdq.md similarity index 100% rename from docs/pub/doc/hoon/runes/sm/smdq.md rename to main/pub/doc/hoon/runes/sm/smdq.md diff --git a/docs/pub/doc/hoon/runes/sm/smhp.md b/main/pub/doc/hoon/runes/sm/smhp.md similarity index 100% rename from docs/pub/doc/hoon/runes/sm/smhp.md rename to main/pub/doc/hoon/runes/sm/smhp.md diff --git a/docs/pub/doc/hoon/runes/sm/smls.md b/main/pub/doc/hoon/runes/sm/smls.md similarity index 100% rename from docs/pub/doc/hoon/runes/sm/smls.md rename to main/pub/doc/hoon/runes/sm/smls.md diff --git a/docs/pub/doc/hoon/runes/sm/smsg.md b/main/pub/doc/hoon/runes/sm/smsg.md similarity index 100% rename from docs/pub/doc/hoon/runes/sm/smsg.md rename to main/pub/doc/hoon/runes/sm/smsg.md diff --git a/docs/pub/doc/hoon/runes/sm/smsm.md b/main/pub/doc/hoon/runes/sm/smsm.md similarity index 100% rename from docs/pub/doc/hoon/runes/sm/smsm.md rename to main/pub/doc/hoon/runes/sm/smsm.md diff --git a/docs/pub/doc/hoon/runes/sm/smtr.md b/main/pub/doc/hoon/runes/sm/smtr.md similarity index 100% rename from docs/pub/doc/hoon/runes/sm/smtr.md rename to main/pub/doc/hoon/runes/sm/smtr.md diff --git a/docs/pub/doc/hoon/runes/sm/smzz.md b/main/pub/doc/hoon/runes/sm/smzz.md similarity index 100% rename from docs/pub/doc/hoon/runes/sm/smzz.md rename to main/pub/doc/hoon/runes/sm/smzz.md diff --git a/docs/pub/doc/hoon/runes/ts.md b/main/pub/doc/hoon/runes/ts.md similarity index 100% rename from docs/pub/doc/hoon/runes/ts.md rename to main/pub/doc/hoon/runes/ts.md diff --git a/docs/pub/doc/hoon/runes/ts/tsbr.md b/main/pub/doc/hoon/runes/ts/tsbr.md similarity index 100% rename from docs/pub/doc/hoon/runes/ts/tsbr.md rename to main/pub/doc/hoon/runes/ts/tsbr.md diff --git a/docs/pub/doc/hoon/runes/ts/tscl.md b/main/pub/doc/hoon/runes/ts/tscl.md similarity index 100% rename from docs/pub/doc/hoon/runes/ts/tscl.md rename to main/pub/doc/hoon/runes/ts/tscl.md diff --git a/docs/pub/doc/hoon/runes/ts/tsdt.md b/main/pub/doc/hoon/runes/ts/tsdt.md similarity index 100% rename from docs/pub/doc/hoon/runes/ts/tsdt.md rename to main/pub/doc/hoon/runes/ts/tsdt.md diff --git a/docs/pub/doc/hoon/runes/ts/tsgl.md b/main/pub/doc/hoon/runes/ts/tsgl.md similarity index 100% rename from docs/pub/doc/hoon/runes/ts/tsgl.md rename to main/pub/doc/hoon/runes/ts/tsgl.md diff --git a/docs/pub/doc/hoon/runes/ts/tsgr.md b/main/pub/doc/hoon/runes/ts/tsgr.md similarity index 100% rename from docs/pub/doc/hoon/runes/ts/tsgr.md rename to main/pub/doc/hoon/runes/ts/tsgr.md diff --git a/docs/pub/doc/hoon/runes/ts/tshp.md b/main/pub/doc/hoon/runes/ts/tshp.md similarity index 100% rename from docs/pub/doc/hoon/runes/ts/tshp.md rename to main/pub/doc/hoon/runes/ts/tshp.md diff --git a/docs/pub/doc/hoon/runes/ts/tskt.md b/main/pub/doc/hoon/runes/ts/tskt.md similarity index 100% rename from docs/pub/doc/hoon/runes/ts/tskt.md rename to main/pub/doc/hoon/runes/ts/tskt.md diff --git a/docs/pub/doc/hoon/runes/ts/tsls.md b/main/pub/doc/hoon/runes/ts/tsls.md similarity index 100% rename from docs/pub/doc/hoon/runes/ts/tsls.md rename to main/pub/doc/hoon/runes/ts/tsls.md diff --git a/docs/pub/doc/hoon/runes/ts/tssg.md b/main/pub/doc/hoon/runes/ts/tssg.md similarity index 100% rename from docs/pub/doc/hoon/runes/ts/tssg.md rename to main/pub/doc/hoon/runes/ts/tssg.md diff --git a/docs/pub/doc/hoon/runes/ts/tstr.md b/main/pub/doc/hoon/runes/ts/tstr.md similarity index 100% rename from docs/pub/doc/hoon/runes/ts/tstr.md rename to main/pub/doc/hoon/runes/ts/tstr.md diff --git a/docs/pub/doc/hoon/runes/wt.md b/main/pub/doc/hoon/runes/wt.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt.md rename to main/pub/doc/hoon/runes/wt.md diff --git a/docs/pub/doc/hoon/runes/wt/wtbr.md b/main/pub/doc/hoon/runes/wt/wtbr.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wtbr.md rename to main/pub/doc/hoon/runes/wt/wtbr.md diff --git a/docs/pub/doc/hoon/runes/wt/wtcl.md b/main/pub/doc/hoon/runes/wt/wtcl.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wtcl.md rename to main/pub/doc/hoon/runes/wt/wtcl.md diff --git a/docs/pub/doc/hoon/runes/wt/wtdt.md b/main/pub/doc/hoon/runes/wt/wtdt.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wtdt.md rename to main/pub/doc/hoon/runes/wt/wtdt.md diff --git a/docs/pub/doc/hoon/runes/wt/wtgl.md b/main/pub/doc/hoon/runes/wt/wtgl.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wtgl.md rename to main/pub/doc/hoon/runes/wt/wtgl.md diff --git a/docs/pub/doc/hoon/runes/wt/wtgr.md b/main/pub/doc/hoon/runes/wt/wtgr.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wtgr.md rename to main/pub/doc/hoon/runes/wt/wtgr.md diff --git a/docs/pub/doc/hoon/runes/wt/wthp.md b/main/pub/doc/hoon/runes/wt/wthp.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wthp.md rename to main/pub/doc/hoon/runes/wt/wthp.md diff --git a/docs/pub/doc/hoon/runes/wt/wthz.md b/main/pub/doc/hoon/runes/wt/wthz.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wthz.md rename to main/pub/doc/hoon/runes/wt/wthz.md diff --git a/docs/pub/doc/hoon/runes/wt/wtkt.md b/main/pub/doc/hoon/runes/wt/wtkt.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wtkt.md rename to main/pub/doc/hoon/runes/wt/wtkt.md diff --git a/docs/pub/doc/hoon/runes/wt/wtkz.md b/main/pub/doc/hoon/runes/wt/wtkz.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wtkz.md rename to main/pub/doc/hoon/runes/wt/wtkz.md diff --git a/docs/pub/doc/hoon/runes/wt/wtls.md b/main/pub/doc/hoon/runes/wt/wtls.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wtls.md rename to main/pub/doc/hoon/runes/wt/wtls.md diff --git a/docs/pub/doc/hoon/runes/wt/wtlz.md b/main/pub/doc/hoon/runes/wt/wtlz.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wtlz.md rename to main/pub/doc/hoon/runes/wt/wtlz.md diff --git a/docs/pub/doc/hoon/runes/wt/wtpm.md b/main/pub/doc/hoon/runes/wt/wtpm.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wtpm.md rename to main/pub/doc/hoon/runes/wt/wtpm.md diff --git a/docs/pub/doc/hoon/runes/wt/wtpt.md b/main/pub/doc/hoon/runes/wt/wtpt.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wtpt.md rename to main/pub/doc/hoon/runes/wt/wtpt.md diff --git a/docs/pub/doc/hoon/runes/wt/wtpz.md b/main/pub/doc/hoon/runes/wt/wtpz.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wtpz.md rename to main/pub/doc/hoon/runes/wt/wtpz.md diff --git a/docs/pub/doc/hoon/runes/wt/wtsg.md b/main/pub/doc/hoon/runes/wt/wtsg.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wtsg.md rename to main/pub/doc/hoon/runes/wt/wtsg.md diff --git a/docs/pub/doc/hoon/runes/wt/wtsz.md b/main/pub/doc/hoon/runes/wt/wtsz.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wtsz.md rename to main/pub/doc/hoon/runes/wt/wtsz.md diff --git a/docs/pub/doc/hoon/runes/wt/wtts.md b/main/pub/doc/hoon/runes/wt/wtts.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wtts.md rename to main/pub/doc/hoon/runes/wt/wtts.md diff --git a/docs/pub/doc/hoon/runes/wt/wttz.md b/main/pub/doc/hoon/runes/wt/wttz.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wttz.md rename to main/pub/doc/hoon/runes/wt/wttz.md diff --git a/docs/pub/doc/hoon/runes/wt/wtzp.md b/main/pub/doc/hoon/runes/wt/wtzp.md similarity index 100% rename from docs/pub/doc/hoon/runes/wt/wtzp.md rename to main/pub/doc/hoon/runes/wt/wtzp.md diff --git a/docs/pub/doc/hoon/runes/zp.md b/main/pub/doc/hoon/runes/zp.md similarity index 100% rename from docs/pub/doc/hoon/runes/zp.md rename to main/pub/doc/hoon/runes/zp.md diff --git a/docs/pub/doc/hoon/runes/zp/zpcb.md b/main/pub/doc/hoon/runes/zp/zpcb.md similarity index 100% rename from docs/pub/doc/hoon/runes/zp/zpcb.md rename to main/pub/doc/hoon/runes/zp/zpcb.md diff --git a/docs/pub/doc/hoon/runes/zp/zpcm.md b/main/pub/doc/hoon/runes/zp/zpcm.md similarity index 100% rename from docs/pub/doc/hoon/runes/zp/zpcm.md rename to main/pub/doc/hoon/runes/zp/zpcm.md diff --git a/docs/pub/doc/hoon/runes/zp/zpfs.md b/main/pub/doc/hoon/runes/zp/zpfs.md similarity index 100% rename from docs/pub/doc/hoon/runes/zp/zpfs.md rename to main/pub/doc/hoon/runes/zp/zpfs.md diff --git a/docs/pub/doc/hoon/runes/zp/zpgr.md b/main/pub/doc/hoon/runes/zp/zpgr.md similarity index 100% rename from docs/pub/doc/hoon/runes/zp/zpgr.md rename to main/pub/doc/hoon/runes/zp/zpgr.md diff --git a/docs/pub/doc/hoon/runes/zp/zpsm.md b/main/pub/doc/hoon/runes/zp/zpsm.md similarity index 100% rename from docs/pub/doc/hoon/runes/zp/zpsm.md rename to main/pub/doc/hoon/runes/zp/zpsm.md diff --git a/docs/pub/doc/hoon/runes/zp/zpts.md b/main/pub/doc/hoon/runes/zp/zpts.md similarity index 100% rename from docs/pub/doc/hoon/runes/zp/zpts.md rename to main/pub/doc/hoon/runes/zp/zpts.md diff --git a/docs/pub/doc/hoon/runes/zp/zpwt.md b/main/pub/doc/hoon/runes/zp/zpwt.md similarity index 100% rename from docs/pub/doc/hoon/runes/zp/zpwt.md rename to main/pub/doc/hoon/runes/zp/zpwt.md diff --git a/docs/pub/doc/hoon/runes/zp/zpzp.md b/main/pub/doc/hoon/runes/zp/zpzp.md similarity index 100% rename from docs/pub/doc/hoon/runes/zp/zpzp.md rename to main/pub/doc/hoon/runes/zp/zpzp.md diff --git a/docs/pub/doc/nock.md b/main/pub/doc/nock.md similarity index 100% rename from docs/pub/doc/nock.md rename to main/pub/doc/nock.md diff --git a/docs/pub/doc/nock/reference.md b/main/pub/doc/nock/reference.md similarity index 100% rename from docs/pub/doc/nock/reference.md rename to main/pub/doc/nock/reference.md diff --git a/docs/pub/doc/reference.md b/main/pub/doc/reference.md similarity index 100% rename from docs/pub/doc/reference.md rename to main/pub/doc/reference.md diff --git a/docs/pub/doc/reference/glossary.md b/main/pub/doc/reference/glossary.md similarity index 100% rename from docs/pub/doc/reference/glossary.md rename to main/pub/doc/reference/glossary.md diff --git a/docs/pub/doc/reference/vere.md b/main/pub/doc/reference/vere.md similarity index 100% rename from docs/pub/doc/reference/vere.md rename to main/pub/doc/reference/vere.md diff --git a/docs/pub/tree/src/css/fonts.styl b/main/pub/tree/src/css/fonts.styl similarity index 100% rename from docs/pub/tree/src/css/fonts.styl rename to main/pub/tree/src/css/fonts.styl diff --git a/docs/pub/tree/src/css/main.css b/main/pub/tree/src/css/main.css similarity index 100% rename from docs/pub/tree/src/css/main.css rename to main/pub/tree/src/css/main.css diff --git a/docs/pub/tree/src/css/main.styl b/main/pub/tree/src/css/main.styl similarity index 100% rename from docs/pub/tree/src/css/main.styl rename to main/pub/tree/src/css/main.styl diff --git a/docs/pub/tree/src/css/mobile.styl b/main/pub/tree/src/css/mobile.styl similarity index 100% rename from docs/pub/tree/src/css/mobile.styl rename to main/pub/tree/src/css/mobile.styl diff --git a/docs/pub/tree/src/js/actions/TreeActions.coffee b/main/pub/tree/src/js/actions/TreeActions.coffee similarity index 100% rename from docs/pub/tree/src/js/actions/TreeActions.coffee rename to main/pub/tree/src/js/actions/TreeActions.coffee diff --git a/docs/pub/tree/src/js/components/AnchorComponent.coffee b/main/pub/tree/src/js/components/AnchorComponent.coffee similarity index 100% rename from docs/pub/tree/src/js/components/AnchorComponent.coffee rename to main/pub/tree/src/js/components/AnchorComponent.coffee diff --git a/docs/pub/tree/src/js/components/BodyComponent.coffee b/main/pub/tree/src/js/components/BodyComponent.coffee similarity index 100% rename from docs/pub/tree/src/js/components/BodyComponent.coffee rename to main/pub/tree/src/js/components/BodyComponent.coffee diff --git a/docs/pub/tree/src/js/components/KidsComponent.coffee b/main/pub/tree/src/js/components/KidsComponent.coffee similarity index 100% rename from docs/pub/tree/src/js/components/KidsComponent.coffee rename to main/pub/tree/src/js/components/KidsComponent.coffee diff --git a/docs/pub/tree/src/js/components/ListComponent.coffee b/main/pub/tree/src/js/components/ListComponent.coffee similarity index 100% rename from docs/pub/tree/src/js/components/ListComponent.coffee rename to main/pub/tree/src/js/components/ListComponent.coffee diff --git a/docs/pub/tree/src/js/components/LoadComponent.coffee b/main/pub/tree/src/js/components/LoadComponent.coffee similarity index 100% rename from docs/pub/tree/src/js/components/LoadComponent.coffee rename to main/pub/tree/src/js/components/LoadComponent.coffee diff --git a/docs/pub/tree/src/js/dispatcher/Dispatcher.coffee b/main/pub/tree/src/js/dispatcher/Dispatcher.coffee similarity index 100% rename from docs/pub/tree/src/js/dispatcher/Dispatcher.coffee rename to main/pub/tree/src/js/dispatcher/Dispatcher.coffee diff --git a/docs/pub/tree/src/js/main.coffee b/main/pub/tree/src/js/main.coffee similarity index 100% rename from docs/pub/tree/src/js/main.coffee rename to main/pub/tree/src/js/main.coffee diff --git a/docs/pub/tree/src/js/main.js b/main/pub/tree/src/js/main.js similarity index 100% rename from docs/pub/tree/src/js/main.js rename to main/pub/tree/src/js/main.js diff --git a/docs/pub/tree/src/js/package.json b/main/pub/tree/src/js/package.json similarity index 100% rename from docs/pub/tree/src/js/package.json rename to main/pub/tree/src/js/package.json diff --git a/docs/pub/tree/src/js/persistence/TreePersistence.coffee b/main/pub/tree/src/js/persistence/TreePersistence.coffee similarity index 100% rename from docs/pub/tree/src/js/persistence/TreePersistence.coffee rename to main/pub/tree/src/js/persistence/TreePersistence.coffee diff --git a/docs/pub/tree/src/js/stores/TreeStore.coffee b/main/pub/tree/src/js/stores/TreeStore.coffee similarity index 100% rename from docs/pub/tree/src/js/stores/TreeStore.coffee rename to main/pub/tree/src/js/stores/TreeStore.coffee diff --git a/spec/nock/5.txt b/main/spec/nock/5.txt similarity index 100% rename from spec/nock/5.txt rename to main/spec/nock/5.txt diff --git a/docs/tree/hymn.hook b/main/tree/hymn.hook similarity index 100% rename from docs/tree/hymn.hook rename to main/tree/hymn.hook diff --git a/docs/tree/json.hook b/main/tree/json.hook similarity index 100% rename from docs/tree/json.hook rename to main/tree/json.hook diff --git a/docs/tree/util.hoon b/main/tree/util.hoon similarity index 100% rename from docs/tree/util.hoon rename to main/tree/util.hoon diff --git a/try/readme.md b/main/try/readme.md similarity index 100% rename from try/readme.md rename to main/try/readme.md From 995d006e7a0404e284e1db63efab19adf5176eb0 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Thu, 12 Mar 2015 20:38:12 -0400 Subject: [PATCH 16/89] sub downloads files, but doesn't start terminal --- main/arvo/clay.hoon | 113 +++++++++++++++++++++++++++++----------- main/arvo/ford.hoon | 16 ++++-- main/arvo/zuse.hoon | 6 +-- main/mar/hook/door.hook | 3 +- 4 files changed, 98 insertions(+), 40 deletions(-) diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index c03d1cd72..7bfe19aeb 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -205,7 +205,7 @@ ?^ ezy ezy =+ nao=(case-to-aeon:ze q.mun) :: ~& [%aver-mun nao [%from syd lim q.mun]] - ?~(nao ~ [~ (read-at-aeon:ze u.nao mun)]) + ?~(nao ~ (read-at-aeon:ze u.nao mun)) :: ++ made-to-tage |= res=(each bead (list tank)) @@ -229,10 +229,9 @@ [?^(q.i.p.tab !! q.i.p.tab) (slot 5 q.tab)] :: ++ balk :: read and send - |= [hen=duct yon=@ud mun=mood] + |= [hen=duct cay=(unit cage) mun=mood] ^+ +> - =+ vid=(read-at-aeon:ze yon mun) - ?~ vid (blub hen) (blab hen mun u.vid) + ?~ cay (blub hen) (blab hen mun u.cay) :: ++ bait |= [hen=duct tym=@da] @@ -644,8 +643,8 @@ lat.ran %- ~(uni by lat.ran) %- mo ^- (list (pair lobe blob)) %+ turn (~(tap in bar)) - |= bob=blob - [p.bob bob] + |= bol=blob + [p.bol bol] == :: ++ exec :: change and update @@ -748,7 +747,7 @@ ++ rand-to-rant |= rut=rand ^+ +> - ~| %x-over-network-not-implemented !! + ~| [%x-over-network-not-implemented [p q -.r]:rut hen] !! :: =- %_(+>.$ tag [- tag]) :: :* hen :: [%foreign-plops (scot %p who) (scot %p for) syd ~] @@ -817,10 +816,10 @@ ?@ q.coy ~| %plop-strange-coy !! - =+ bob=((hard blob) -.q.coy) - ?- -.bob - %delta [-.bob p.bob q.bob q.i.p.p.cay +.q.coy] - %direct [-.bob p.bob q.i.p.p.cay +.q.coy] + =+ bol=((hard blob) -.q.coy) + ?- -.bol + %delta [-.bol p.bol q.bol q.i.p.p.cay +.q.coy] + %direct [-.bol p.bol q.i.p.p.cay +.q.coy] %indirect ~| %plop-indirect-not-implemented !! == %^ apply-foreign-update @@ -876,7 +875,9 @@ == =+ nao=(case-to-aeon:ze q.p.q.i.xiq) ?~ nao $(xiq t.xiq, xaq [i.xiq xaq]) - $(xiq t.xiq, ..wake (balk p.i.xiq u.nao p.q.i.xiq)) + =+ vid=(read-at-aeon:ze u.nao p.q.i.xiq) + ?~ vid ~& %':( oh well' $(xiq t.xiq, xaq [i.xiq xaq]) + $(xiq t.xiq, ..wake (balk p.i.xiq u.vid p.q.i.xiq)) :: | =+ mot=`moot`p.q.i.xiq @@ -922,11 +923,11 @@ ++ lobe-to-silk |= a=lobe |- ^- silk - =+ bob=(~(got by lat.ran) a) - ?- -.bob - %direct [%volt ~ q.bob] - %indirect [%volt ~ q.bob] - %delta [%pact $(a q.q.bob) [%volt ~ r.bob]] + =+ bol=(~(got by lat.ran) a) + ?- -.bol + %direct [%volt ~ q.bol] + %indirect [%volt ~ q.bol] + %delta [%pact $(a q.q.bol) [%volt ~ r.bol]] == :: ++ make-direct :: make blob @@ -1016,7 +1017,7 @@ %da ?: (gth p.lok lim) ~ |- ^- (unit aeon) - ?: =(0 let.dom) [~ 0] :: avoid underflow + ?: =(0 let.dom) [~ 0] :: avoid underflow ?: %+ gte p.lok =< t ~| [%letdom let=let.dom hit=hit.dom hut=(~(run by hut.ran) ,~)] @@ -1193,25 +1194,76 @@ ?^(r.mun ~ [~ %w !>([t.yak (forge-nori yak)])]) (query(ank.dom ank:(descend-path:(zu ank.dom) r.mun)) p.mun) :: + ++ read-x + |= [yon=aeon pax=path] + ^- (unit (unit cage)) + =+ yak=(aeon-to-yaki yon) + =+ lob=(~(get by q.yak) pax) + ?~ lob + [~ ~] + =+ mar=(lobe-to-mark u.lob) + ?. ?=(?(%hoon %hook) mar) + ~ + :^ ~ ~ mar + :- [%atom %t] + |- ^- @t :: (urge cord) would be faster + =+ bol=(lobe-to-blob u.lob) + ?: ?=(%direct -.bol) + ((hard ,@t) q.q.bol) + ?: ?=(%indirect -.bol) + ((hard ,@t) q.q.bol) + ?> ?=(%delta -.bol) + =+ txt=$(u.lob q.q.bol) + ?> ?=(%txt-diff p.r.bol) + =+ dif=((hard (urge cord)) q.r.bol) + =+ pac=(role (lurk (lore (cat 3 txt '\0a')) dif)) + (end 3 (dec (met 3 pac)) pac) + :: + ++ read-y + |= [yon=aeon pax=path] + ^- (unit (unit (cask (hypo arch)))) + =+ yak=(aeon-to-yaki yon) + =+ len=(lent pax) + :^ ~ ~ %arch + :- -:!>(*arch) + ^- arch + :+ *@uvI + ?.((~(has by q.yak) pax) ~ `0vfak.ehash) + ^- (map span ,~) + %- mo ^- (list (pair span ,~)) + %+ turn + %+ skim (~(tap by (~(del by q.yak) pax))) + |= [paf=path lob=lobe] + =(pax (scag len paf)) + |= [paf=path lob=lobe] + [(snag len paf) ~] + :: ++ read-at-aeon :: read-at-aeon:ze |= [yon=aeon mun=mood] :: seek and read - ^- (unit cage) + ^- (unit (unit cage)) ?: &(?=(%w p.mun) !?=(%ud -.q.mun)) :: NB only for speed - ?^(r.mun ~ [~ %aeon !>(yon)]) + ?^(r.mun [~ ~] [~ ~ %aeon !>(yon)]) + ?: ?=(%x p.mun) + (read-x yon r.mun) + ?: ?=(%y p.mun) + (read-y yon r.mun) %+ biff (rewind yon) - |= a=_+>.$ - (read:a mun) + |= a=(unit ,_+>.$) + ^- (unit (unit cage)) + ?~ a + [~ ~] + `(read:u.a mun) :: ++ rewind :: rewind:ze |= yon=aeon :: rewind to aeon - ^- (unit ,_+>) - ?: =(let.dom yon) `+> - ?: (gth yon let.dom) !! :: don't have version + ^- (unit (unit ,_+>)) + ?: =(let.dom yon) ``+> + ?: (gth yon let.dom) !! :: don't have version =+ hat=q:(aeon-to-yaki yon) ?: (~(any by hat) |=(a=lobe ?=(%delta [-:(lobe-to-blob a)]))) ~ - !! + ~ ::=+ ^- (map path cage) :: %- ~(run by hat) :: |= a=lobe @@ -1746,7 +1798,7 @@ =+ val=?:(?=(%init gem.dat) ali bob) :* hen [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %ergo ~] - %f %exec p.bob [p.val q.val %da now] ~ %tabl + %f %exec p.bob [p.val q.val cas.dat] ~ %tabl ^- (list (pair silk silk)) %+ turn (~(tap by erg.dat)) |= [a=path b=?] @@ -2173,9 +2225,10 @@ == :: %mere - ~& ?: ?=(%& -.p.+.q.hin) - ['merge succeeded' p.p.+.q.hin] - :+ 'merge failed' + ?: ?=(%& -.p.+.q.hin) + ~& ['merge succeeded' p.p.+.q.hin] + [~ ..^$] + ~& :+ 'merge failed' p.p.p.+.q.hin (turn q.p.p.+.q.hin |=(tank ~(ram re +<))) [~ ..^$] diff --git a/main/arvo/ford.hoon b/main/arvo/ford.hoon index 6c587f6ae..a3f465cf4 100644 --- a/main/arvo/ford.hoon +++ b/main/arvo/ford.hoon @@ -168,9 +168,8 @@ ++ fine |* [a=cafe b=*] :: bolt from data [p=`cafe`a q=[%0 p=*(set beam) q=b]] :: ++ flaw |=([a=cafe b=(list tank)] [p=a q=[%2 p=b]]) :: bolt from error -:: -++ clean-beak |=([now=@da bek=beak] [p.bek q.bek %da now]) -:: +++ clean-beak ::|=([now=@da bek=beak] [p.bek q.bek %da now]) + |=([now=@da bek=beak] bek) ++ grom :: merge sets |* [one=(set) two=(set)] ^+ one @@ -1400,6 +1399,17 @@ |= [cof=cafe cay=gage coy=gage] ?. &(?=(@ p.cay) ?=(@ p.coy)) (flaw cof leaf/"bad pact marc" ~) + ?: ?=(?(%hoon %hook) p.cay) + ?. ?=(%txt-diff p.coy) + (flaw cof leaf/"{} mark with bad diff type: {}" ~) + =+ txt=((soft ,@t) q.q.cay) + ?~ txt + (flaw cof leaf/"{} mark on bad data" ~) + =+ dif=((soft (urge cord)) q.q.coy) + ?~ dif + (flaw cof leaf/"{} data with bad diff" ~) + =+ pac=(role (lurk (lore (cat 3 u.txt '\0a')) u.dif)) + (fine cof p.cay [%atom %t] (end 3 (dec (met 3 pac)) pac)) %+ cope (fang cof p.cay) |= [cof=cafe pro=vase] ?. (slab %grad p.pro) diff --git a/main/arvo/zuse.hoon b/main/arvo/zuse.hoon index d9e911c0b..7a6fc8d8d 100644 --- a/main/arvo/zuse.hoon +++ b/main/arvo/zuse.hoon @@ -2104,16 +2104,12 @@ ++ rang $: hut=(map tako yaki) :: lat=(map lobe blob) :: == :: +++ rand rant :: unvalidated rant ++ rant :: namespace binding $: p=[p=care q=case r=@tas] :: clade release book q=path :: spur r=cage :: data == :: -++ rand :: vaseless rant - $: p=[p=care q=case r=@tas] :: clade release book - q=path :: spur - r=page :: data - == :: ++ rave :: general request $% [& p=mood] :: single request [| p=moat] :: change range diff --git a/main/mar/hook/door.hook b/main/mar/hook/door.hook index 88789caa3..7e2659b08 100644 --- a/main/mar/hook/door.hook +++ b/main/mar/hook/door.hook @@ -10,8 +10,7 @@ ++ mime [/text/hoon (taco own)] :: convert to %mime ++ psal ;div:(pre:"{(trip own)}") :: convert to %html ++ hymn ;html:(head:title:"Source" "+{psal}") - ++ txt - (lore (cat 3 own '\0a')) + ++ txt (lore (cat 3 own '\0a')) -- ++ grab |% :: convert from From 681b8e3960f0cef13a0eec775ab9f01db46e6f46 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Fri, 13 Mar 2015 17:47:29 -0400 Subject: [PATCH 17/89] subs boot --- main/arvo/clay.hoon | 32 ++++++++++++++++++++++++-------- main/arvo/dill.hoon | 2 ++ main/arvo/zuse.hoon | 6 +++++- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index 7bfe19aeb..ce5649393 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -176,12 +176,13 @@ ++ abet ^- [(list move) rede] :_ red + ~& > %welding ;: weld %+ turn (flop yel) |=([a=duct b=gift] [hun %give b]) :: %+ turn (flop byn) - |=([a=duct b=riot] [a %give [%writ b]]) + |=([a=duct b=riot] ~&(%giving-response [a %give [%writ b]])) :: %+ turn (flop reg) |=([a=duct b=gift] [a %give b]) @@ -192,7 +193,7 @@ [%pass b %a %want [who c] [%q %re p.q.d (scot %ud p.d) ~] q.d] :: %+ turn (flop tag) - |=([a=duct b=path c=note] [a %pass b c]) + |=([a=duct b=path c=note] ~&(%tagging [a %pass b c])) == :: ++ aver :: read @@ -231,7 +232,9 @@ ++ balk :: read and send |= [hen=duct cay=(unit cage) mun=mood] ^+ +> - ?~ cay (blub hen) (blab hen mun u.cay) + ?~ cay (blub hen) + ~& > [%affirmative-balking hen mun] + (blab hen mun u.cay) :: ++ bait |= [hen=duct tym=@da] @@ -712,7 +715,7 @@ p.r.u.rut ?+ p.r.u.rut ~| %strange-w-over-nextwork !! %aeon !>(((hard aeon) q.r.u.rut)) - %nako !>(((hard nako) q.r.u.rut)) + %nako !>(~|([%harding [&1 &2 &3]:q.r.u.rut] ((hard nako) q.r.u.rut))) == ?. ?=(%nako p.r.u.rut) +>+.$ |- ^+ +>+.^$ @@ -874,9 +877,12 @@ (blab p.i.xiq p.q.i.xiq u.u.cas) == =+ nao=(case-to-aeon:ze q.p.q.i.xiq) + ~& > [%checking-on p.q.i.xiq] ?~ nao $(xiq t.xiq, xaq [i.xiq xaq]) + ~& > %found-aeon =+ vid=(read-at-aeon:ze u.nao p.q.i.xiq) ?~ vid ~& %':( oh well' $(xiq t.xiq, xaq [i.xiq xaq]) + ~& > %found-the-thing $(xiq t.xiq, ..wake (balk p.i.xiq u.vid p.q.i.xiq)) :: | @@ -1197,7 +1203,10 @@ ++ read-x |= [yon=aeon pax=path] ^- (unit (unit cage)) - =+ yak=(aeon-to-yaki yon) + =+ tak=(~(get by hit.dom) yon) + ?~ tak + ~ + =+ yak=(tako-to-yaki u.tak) =+ lob=(~(get by q.yak) pax) ?~ lob [~ ~] @@ -1222,7 +1231,10 @@ ++ read-y |= [yon=aeon pax=path] ^- (unit (unit (cask (hypo arch)))) - =+ yak=(aeon-to-yaki yon) + =+ tak=(~(get by hit.dom) yon) + ?~ tak + ~ + =+ yak=(tako-to-yaki u.tak) =+ len=(lent pax) :^ ~ ~ %arch :- -:!>(*arch) @@ -2145,11 +2157,15 @@ =* sud i.t.t.t.t.tea =* sat i.t.t.t.t.t.tea =+ une=(un our now hen ruf) - =+ wex=(di:une syd) + =+ wak=wake:une + =+ wex=(di:wak syd) =+ dat=?-(+<.q.hin %writ [%& p.q.hin], %made [%| p.q.hin]) + ~& > %pre-abet =+ wao=abet:(route:(me:ze:wex her sud) sat dat) + ~& > %post-abet =+ woo=abet:wao - [-.woo ..^$(ruf abet:(pish:une syd +.woo ran.wao))] + ~& > [%merge-giving (turn -.woo |=(move ?+(-.q ~ %give -.p.q)))] + [(weld -.wak -.woo) ..^$(ruf abet:(pish:une syd +.woo ran.wao))] ?- -.+.q.hin %crud [[[hen %slip %d %flog +.q.hin] ~] ..^$] diff --git a/main/arvo/dill.hoon b/main/arvo/dill.hoon index e80969847..b9a77e595 100644 --- a/main/arvo/dill.hoon +++ b/main/arvo/dill.hoon @@ -366,6 +366,7 @@ ?(%init %logo %veer %vega %verb) :: drop-throughs +>(mos :_(mos [hen %give +.sih])) %writ :: file exists + ~& > %dill-got-writ %_ +>.$ mos :_ mos @@ -664,6 +665,7 @@ :: %init =. def `(fall def +.hen) + ~& > %dill-sending-warp %= +>.$ our p.kyz mos diff --git a/main/arvo/zuse.hoon b/main/arvo/zuse.hoon index 7a6fc8d8d..01ef78e19 100644 --- a/main/arvo/zuse.hoon +++ b/main/arvo/zuse.hoon @@ -2104,7 +2104,11 @@ ++ rang $: hut=(map tako yaki) :: lat=(map lobe blob) :: == :: -++ rand rant :: unvalidated rant +++ rand :: unvalidated rant + $: p=[p=care q=case r=@tas] :: clade release book + q=path :: spur + r=page :: data + == :: ++ rant :: namespace binding $: p=[p=care q=case r=@tas] :: clade release book q=path :: spur From 7c8e49c54f6f55e3d8bc86351a0a64f8e40808c5 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Fri, 13 Mar 2015 18:52:15 -0400 Subject: [PATCH 18/89] cleanup --- main/arvo/clay.hoon | 13 ++----------- main/arvo/dill.hoon | 2 -- main/arvo/hoon.hoon | 1 - 3 files changed, 2 insertions(+), 14 deletions(-) diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index ce5649393..288b17793 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -176,13 +176,12 @@ ++ abet ^- [(list move) rede] :_ red - ~& > %welding ;: weld %+ turn (flop yel) |=([a=duct b=gift] [hun %give b]) :: %+ turn (flop byn) - |=([a=duct b=riot] ~&(%giving-response [a %give [%writ b]])) + |=([a=duct b=riot] [a %give [%writ b]]) :: %+ turn (flop reg) |=([a=duct b=gift] [a %give b]) @@ -193,7 +192,7 @@ [%pass b %a %want [who c] [%q %re p.q.d (scot %ud p.d) ~] q.d] :: %+ turn (flop tag) - |=([a=duct b=path c=note] ~&(%tagging [a %pass b c])) + |=([a=duct b=path c=note] [a %pass b c]) == :: ++ aver :: read @@ -233,7 +232,6 @@ |= [hen=duct cay=(unit cage) mun=mood] ^+ +> ?~ cay (blub hen) - ~& > [%affirmative-balking hen mun] (blab hen mun u.cay) :: ++ bait @@ -877,12 +875,9 @@ (blab p.i.xiq p.q.i.xiq u.u.cas) == =+ nao=(case-to-aeon:ze q.p.q.i.xiq) - ~& > [%checking-on p.q.i.xiq] ?~ nao $(xiq t.xiq, xaq [i.xiq xaq]) - ~& > %found-aeon =+ vid=(read-at-aeon:ze u.nao p.q.i.xiq) ?~ vid ~& %':( oh well' $(xiq t.xiq, xaq [i.xiq xaq]) - ~& > %found-the-thing $(xiq t.xiq, ..wake (balk p.i.xiq u.vid p.q.i.xiq)) :: | @@ -2160,11 +2155,8 @@ =+ wak=wake:une =+ wex=(di:wak syd) =+ dat=?-(+<.q.hin %writ [%& p.q.hin], %made [%| p.q.hin]) - ~& > %pre-abet =+ wao=abet:(route:(me:ze:wex her sud) sat dat) - ~& > %post-abet =+ woo=abet:wao - ~& > [%merge-giving (turn -.woo |=(move ?+(-.q ~ %give -.p.q)))] [(weld -.wak -.woo) ..^$(ruf abet:(pish:une syd +.woo ran.wao))] ?- -.+.q.hin %crud @@ -2256,7 +2248,6 @@ =+ ^= zat =< wake %- take-foreign-update:(do now hen p.+.q.hin syd ruf) -:: ~& [%rand q.+.q.hin ((soft (unit rand)) q.+.q.hin)] [inx ((hard (unit rand)) q.+.q.hin)] =^ mos ruf =+ zot=abet.zat diff --git a/main/arvo/dill.hoon b/main/arvo/dill.hoon index b9a77e595..e80969847 100644 --- a/main/arvo/dill.hoon +++ b/main/arvo/dill.hoon @@ -366,7 +366,6 @@ ?(%init %logo %veer %vega %verb) :: drop-throughs +>(mos :_(mos [hen %give +.sih])) %writ :: file exists - ~& > %dill-got-writ %_ +>.$ mos :_ mos @@ -665,7 +664,6 @@ :: %init =. def `(fall def +.hen) - ~& > %dill-sending-warp %= +>.$ our p.kyz mos diff --git a/main/arvo/hoon.hoon b/main/arvo/hoon.hoon index 0909e7d86..a3fe3f6a5 100644 --- a/main/arvo/hoon.hoon +++ b/main/arvo/hoon.hoon @@ -10204,7 +10204,6 @@ eny=@ :: entropy niz=(pair worm (list ,[p=@tas q=vase])) :: modules == :: -=. lac %| =< |% ++ come |= [@ (list ovum) pone] :: 11 ^- [(list ovum) _+>] From 874c7ea21ed0eec42f2395d0c23f1133ebbacd39 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Wed, 18 Mar 2015 17:25:01 -0400 Subject: [PATCH 19/89] performance improvements --- main/arvo/clay.hoon | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index 288b17793..0d1f6a217 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -623,7 +623,7 @@ |= [a=path b=lobe] ^- (pair silk silk) :- [%done ~ %path !>(a)] - (lobe-to-silk:ze b) + (lobe-to-silk:ze a b) == :: ++ apply-foreign-update :: apply subscription @@ -922,13 +922,20 @@ %indirect p.q == ++ lobe-to-silk - |= a=lobe + |= [pax=path lob=lobe] + ^- silk + =+ ^- hat=(map path lobe) + ?: =(let.dom 0) + ~ + q:(aeon-to-yaki let.dom) + ?: =([~ lob] (~(get by hat) pax)) + [%done ~ (need (read %x [%ud let.dom] pax))] |- ^- silk - =+ bol=(~(got by lat.ran) a) + =+ bol=(~(got by lat.ran) lob) ?- -.bol %direct [%volt ~ q.bol] %indirect [%volt ~ q.bol] - %delta [%pact $(a q.q.bol) [%volt ~ r.bol]] + %delta [%pact $(lob q.q.bol) [%volt ~ r.bol]] == :: ++ make-direct :: make blob @@ -1455,7 +1462,7 @@ ~ :- ~ :- [%done ~ %path !>(pax)] - [%diff (lobe-to-silk lob) (lobe-to-silk u.-)] + [%diff (lobe-to-silk pax lob) (lobe-to-silk pax u.-)] == :: ++ diff-ali @@ -1756,7 +1763,7 @@ %+ turn (~(tap by q.new.dat)) |= [a=path b=lobe] ^- (pair silk silk) - [[%done ~ %path !>(a)] (lobe-to-silk b)] + [[%done ~ %path !>(a)] (lobe-to-silk a b)] == :: ++ checked-out From fb6b5245ceb039dc1f96c58a330f6a94ff1f0f3b Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Thu, 19 Mar 2015 15:34:25 -0400 Subject: [PATCH 20/89] validate plops with correct case --- main/arvo/clay.hoon | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index 0d1f6a217..a443e0303 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -268,6 +268,8 @@ ?. ?=([%& %v *] rav) rav [%| [%ud let.dom] `case`q.p.rav r.p.rav] =+ inx=nix.u.ref + ~? ?=([%& %x *] vaw) + [%remote-x-ing vaw hen] %= +>+.$ say [[hen [(scot %ud inx) ~] for [inx syd ~ vaw]] say] nix.u.ref +(nix.u.ref) @@ -726,7 +728,7 @@ ?: =(0 let.dom) => (apply-foreign-update (need nak.u.ref)) ?>(?=(^ ref) .) - => (validate-plops for bar:(need nak.u.ref)) + => (validate-plops [%ud let.dom] bar:(need nak.u.ref)) ?>(?=(^ ref) .) %= $ haw.u.ref (~(del by haw.u.ref) nez) @@ -770,23 +772,23 @@ :: == :: ++ validate-plops - |= [him=ship pop=(set plop)] + |= [cas=case pop=(set plop)] ^+ +> =- %_(+>.$ tag [- tag]) :* hen [%foreign-plops (scot %p who) (scot %p for) syd ~] - %f %exec who [him syd %da now] ~ %tabl + %f %exec who [for syd cas] ~ %tabl ^- (list (pair silk silk)) %+ turn (~(tap in pop)) |= a=plop ?- -.a %delta :- [%done ~ %blob !>([%delta p.a q.a *page])] - [%vale p.r.a him q.r.a] + [%vale p.r.a for q.r.a] :: %direct :- [%done ~ %blob !>([%direct p.a *page])] - [%vale p.q.a him q.q.a] + [%vale p.q.a for q.q.a] :: %indirect ~| %foreign-indirect-not-implemented !! == @@ -1320,7 +1322,7 @@ |% ++ abet ^+ ..me - ?~ don + ?: don ..me(mer (~(put by mer) ali dat)) ..me(mer (~(del by mer) ali), reg :_(reg [hen %mere gon.dat])) :: @@ -1393,11 +1395,15 @@ :: %fine ?: =(r.ali.dat r.bob.dat) + ~& > [%fine-trivial ali= bob= r.ali.dat r.bob.dat] (done:he ~) ?: (~(has in (reachable-takos r.bob.dat)) r.ali.dat) + ~& > [%fine-mostly-trivial ali= bob=] (done:he ~) ?. (~(has in (reachable-takos r.ali.dat)) r.bob.dat) + ~& > [%fine-not-so-trivial ali= bob=] (error:he %bad-fine-merge ~) + ~& > [%fine-lets-go ali= bob=] =. new.dat ali.dat =. erg.dat %- ~(uni by `(map path ,?)`(~(run by q.bob.dat) |=(lobe %|))) @@ -1450,7 +1456,7 @@ :* hen =+ (cat 3 %diff- nam) [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali - ~] - %f %exec p.bob [p.oth q.oth %da now] ~ %tabl + %f %exec p.bob [p.oth q.oth cas.dat] ~ %tabl ^- (list (pair silk silk)) %+ murn (~(tap by q.bas.dat)) |= [pax=path lob=lobe] @@ -1625,7 +1631,7 @@ =- %_(+.$ tag [- tag]) :* hen [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %merge ~] - %f %exec p.bob [p.bob q.bob %da now] ~ %tabl + %f %exec p.bob [p.bob q.bob cas.dat] ~ %tabl ^- (list (pair silk silk)) %+ turn (~(tap by (~(int by can.dal.dat) can.dob.dat))) |= [pax=path *] From f8928f908ace46e2280fc0c966541f0e4a4cb05a Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Fri, 20 Mar 2015 15:20:17 -0400 Subject: [PATCH 21/89] network clay performance --- main/arvo/clay.hoon | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index a443e0303..75cff2c33 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -353,7 +353,7 @@ :_ $(q.p.lem t.q.p.lem) :- hen :+ %note - ?-(-.q.i.q.p.lem %del '-', %ins '+', %mut ':', %dif ';') + ?-(-.q.i.q.p.lem %del '-', %ins '+', %mut ';', %dif ':') [%leaf (spud (weld pre p.i.q.p.lem))] == == @@ -1165,18 +1165,37 @@ %z [~ %ankh !>(ank.dom)] == :: + ++ new-lobes :: object hash set + |= [b=(set lobe) a=(set tako)] :: that aren't in b + ^- (set lobe) + %+ roll (~(tap in a) ~) + |= [tak=tako bar=(set lobe)] + ^- (set lobe) + =+ yak=(tako-to-yaki tak) + %+ roll (~(tap by q.yak) ~) + =< .(far bar) + |= [[path lob=lobe] far=(set lobe)] + ^- (set lobe) + ?~ (~(has in b) lob) :: don't need + far + =+ gar=(lobe-to-blob lob) + ?- -.gar + %direct (~(put in far) lob) + %delta (~(put in $(lob q.q.gar)) lob) + %indirect (~(put in $(lob r.gar)) lob) + == + :: ++ data-twixt-takos |= [a=(unit tako) b=tako] ^- [(set yaki) (set plop)] - =+ yal=(turn (~(tap in (reachable-takos b))) tako-to-yaki) - :- (sa yal) - %- sa ^- (list plop) - %- zing ^- (list (list plop)) - %+ turn yal - |= yak=yaki - %+ turn (~(tap by q.yak)) - |= [pax=path lob=lobe] - `plop`(lobe-to-blob lob) + =+ old=?~(a ~ (reachable-takos u.a)) + =+ ^- yal=(set tako) + %- sa + %+ skip + (~(tap in (reachable-takos b))) + |=(tak=tako (~(has in old) tak)) + :- (sa (turn (~(tap in yal)) tako-to-yaki)) + (sa (turn (~(tap in (new-lobes (new-lobes ~ old) yal))) lobe-to-blob)) :: ++ reachable-takos :: reachable |= p=tako :: XX slow From a8409da5cf1aaa49f3bd3e27746d1002d773efb5 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Mon, 23 Mar 2015 16:40:33 -0400 Subject: [PATCH 22/89] autosync works --- main/app/shell/core.hook | 2 +- main/arvo/clay.hoon | 45 +++++++++++++++++++++++++--------------- 2 files changed, 29 insertions(+), 18 deletions(-) diff --git a/main/app/shell/core.hook b/main/app/shell/core.hook index 19c61608f..0857b65f5 100644 --- a/main/app/shell/core.hook +++ b/main/app/shell/core.hook @@ -14,7 +14,7 @@ tiv=? :: typing? wit=[p=@u q=(map ,@u coma)] :: waiting commands pid=@u :: next process id - pax=_`path`/=try= :: working directory + pax=_`path`/=main=/try :: working directory act=(unit span) :: active child pip=(jar span span) :: pipe out->in pop=(jar span span) :: pipe in->out diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index 75cff2c33..798979eea 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -120,7 +120,8 @@ $: fat=(map ship room) :: domestic hoy=(map ship rung) :: foreign ran=rang :: hashes - sor=(map ,[p=@p q=@tas r=@p s=@tas] duct) :: upstreams + $= sor :: upstreams + (map ,[p=@p q=@tas r=@p s=@tas] ,[let=@ud hen=duct]) == :: ++ rave :: general request $% [& p=mood] :: single request @@ -2028,7 +2029,7 @@ ?- -.q.hic %font ?: (~(has by sor.ruf) +.q.hic) `..^$ - :_ ..^$(sor.ruf (~(put by sor.ruf) +.q.hic hen)) + :_ ..^$(sor.ruf (~(put by sor.ruf) +.q.hic [0 hen])) :: XX pass %merg and handle response :~ ^- move :* hen %pass @@ -2104,13 +2105,9 @@ %plug ?. (~(has by sor.ruf) +.q.hic) `..^$ :_ ..^$(sor.ruf (~(del by sor.ruf) +.q.hic)) - =+ hyn=(~(got by sor.ruf) +.q.hic) + =+ hyn=hen:(~(got by sor.ruf) +.q.hic) :~ :* hyn %pass - /auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic]/y - %c %warp [p.q.hic r.q.hic] s.q.hic ~ - == - :* hyn %pass - /auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic]/v + /auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic] %c %warp [p.q.hic r.q.hic] s.q.hic ~ == == @@ -2190,6 +2187,28 @@ =+ wao=abet:(route:(me:ze:wex her sud) sat dat) =+ woo=abet:wao [(weld -.wak -.woo) ..^$(ruf abet:(pish:une syd +.woo ran.wao))] + ?: ?=([%auto @ @ @ @ ~] tea) + =+ our=(slav %p i.t.tea) + =* syd i.t.t.tea + =+ her=(slav %p i.t.t.t.tea) + =* sud i.t.t.t.t.tea + ?+ +<.q.hin ~|(%weird-auto !!) + %mere + =+ nex=+(let:(~(got by sor.ruf) our syd her sud)) + =. sor.ruf (~(put by sor.ruf) [our syd her sud] [nex hen]) + =+ `move`[hen %pass tea %c %warp [our her] sud ~ %& %y [%ud nex] /] + ?: ?=(%& -.p.+.q.hin) + ~& ['merge succeeded' p.p.+.q.hin] + [[- ~] ..^$] + ~& :+ 'merge failed' + p.p.p.+.q.hin + (turn q.p.p.+.q.hin |=(tank ~(ram re +<))) + [[- ~] ..^$] + :: + %writ + =+ nex=let:(~(got by sor.ruf) our syd her sud) + [[hen %pass tea %c %merg our syd her sud %mate]~ ..^$] + == ?- -.+.q.hin %crud [[[hen %slip %d %flog +.q.hin] ~] ..^$] @@ -2264,15 +2283,7 @@ [mos ..^$(ran.ruf ran.zat)] == :: - %mere - ?: ?=(%& -.p.+.q.hin) - ~& ['merge succeeded' p.p.+.q.hin] - [~ ..^$] - ~& :+ 'merge failed' - p.p.p.+.q.hin - (turn q.p.p.+.q.hin |=(tank ~(ram re +<))) - [~ ..^$] - :: + %mere !! %waft ?> ?=([@ @ ~] tea) =+ syd=(slav %tas i.tea) From cc45140ca686023bc3f91f2a682598470aefaf37 Mon Sep 17 00:00:00 2001 From: Anton Dyudin Date: Fri, 20 Feb 2015 13:42:57 -0800 Subject: [PATCH 23/89] Cached %bake Conflicts: urb/zod/main/arvo/ford.hoon urb/zod/main/mar/react-snip/door.hook urb/zod/main/mar/react/door.hook v/raft.c --- main/arvo/ford.hoon | 59 +++++++++++++++++++++++++++-------- main/arvo/hoon.hoon | 8 ++++- main/mar/react-snip/door.hook | 4 +-- main/mar/react/door.hook | 4 +-- 4 files changed, 57 insertions(+), 18 deletions(-) diff --git a/main/arvo/ford.hoon b/main/arvo/ford.hoon index a3f465cf4..781e28438 100644 --- a/main/arvo/ford.hoon +++ b/main/arvo/ford.hoon @@ -121,6 +121,7 @@ == :: ++ calx :: concrete cache line $% [%hood p=calm q=(pair beam gage) r=hood] :: compile + [%bake p=calm q=(trel mark beam heel) r=(unit vase)]:: load [%slit p=calm q=[p=type q=type] r=type] :: slam type [%slim p=calm q=[p=type q=twig] r=(pair type nock)]:: mint [%slap p=calm q=[p=vase q=twig] r=vase] :: compute @@ -138,6 +139,7 @@ |= cax=calx ?+ sem !! %hood ?>(?=(%hood -.cax) r.cax) + %bake ?>(?=(%bake -.cax) r.cax) %slap ?>(?=(%slap -.cax) r.cax) %slam ?>(?=(%slam -.cax) r.cax) %slim ?>(?=(%slim -.cax) r.cax) @@ -249,6 +251,19 @@ == :: ++ zo + ~% %ford-z + ..is + == + %fade fade + %fair fair + %fang fang + %lime lime + %lima lima + %link link + %lope lope + %make make + %meow meow + == |_ [num=@ud task] ++ abet %_(..zo q.tad.bay (~(put by q.tad.bay) num +<+)) ++ amok @@ -294,16 +309,16 @@ %1 hoc %0 =^ cux p.hoc ((calk p.hoc) sem q.q.hoc) - ?~ cux - =+ nuf=(cope hoc fun) - ?- -.q.nuf - %2 nuf - %1 nuf - %0 - :- p=(came p.nuf `calx`[sem `calm`[now p.q.nuf] q.q.hoc q.q.nuf]) - q=q.nuf - == - [p=p.hoc q=[%0 p=p.q.hoc q=((calf sem) u.cux)]] + ?^ cux + [p=p.hoc q=[%0 p=p.q.hoc q=((calf sem) u.cux)]] + =+ nuf=(cope hoc fun) + ?- -.q.nuf + %2 nuf + %1 nuf + %0 + :- p=(came p.nuf `calx`[sem `calm`[now p.q.nuf] q.q.hoc q.q.nuf]) + q=q.nuf + == == :: ++ coax :: bolt across @@ -502,7 +517,7 @@ |= bem=beam =+ :* vez=(vang | (tope bem(r [%ud 0]))) voz=(vang | (tope bem)) - == + == =< hood |% ++ case @@ -833,6 +848,8 @@ (sloe p.gow) :: ++ lima :: load at depth + |= [cof=cafe for=mark bem=beam arg=heel] + %+ (clef %bake) (fine cof for bem arg) |= [cof=cafe for=mark bem=beam arg=heel] ^- (bolt (unit vase)) %+ cope (lend cof bem) @@ -949,7 +966,7 @@ ++ make :: reduce silk |= [cof=cafe kas=silk] ^- (bolt gage) - :: ~& [%make -.kas] + :: ~& [%make (,@tas -.kas)] ?- -.kas ^ %. [cof p.kas q.kas] @@ -964,6 +981,7 @@ == :: %bake + :: ~& > (tope q.kas) %+ cool |.(leaf/"ford: bake {} {<(tope q.kas)>}") %+ cope (lima cof p.kas q.kas r.kas) |= [cof=cafe vux=(unit vase)] @@ -1111,6 +1129,21 @@ zeg=(set term) :: library guard boy=(list twig) :: body stack == + ~% %meow ..meow + == + %able able + %ably ably + %abut abut + %apex apex + %body body + %chad chad + %chai chai + %chap chap + %head head + %hone hone + %neck neck + %wilt wilt + == |% ++ able :: assemble preamble ^- twig @@ -1458,7 +1491,7 @@ =* lex - |= [now=@da eny=@ ski=sled] :: activate ^? :: opaque core -~% %ford-d +>+>+>+>+>+> ~ +~% %ford-d ..is ~ |% :: ++ call :: request |= [hen=duct hic=(hypo (hobo kiss))] diff --git a/main/arvo/hoon.hoon b/main/arvo/hoon.hoon index a3fe3f6a5..1e2424453 100644 --- a/main/arvo/hoon.hoon +++ b/main/arvo/hoon.hoon @@ -3276,6 +3276,7 @@ -- :: ++ co + ~% %co ..co ~ =< |_ lot=coin ++ rear |=(rom=tape =>(.(rex rom) rend)) ++ rent `@ta`(rap 3 rend) @@ -3487,6 +3488,7 @@ -- :: ++ so + ~% %so + ~ |% ++ bisk ;~ pose @@ -3555,6 +3557,7 @@ ;~(pfix hep (stag %c (cook turf (cook woad urs:ab)))) == ++ nuck + ~/ %nuck |= a=nail %. a %+ knee *coin |. ~+ %- stew ^. stet ^. limo @@ -3638,7 +3641,10 @@ :: ++ slay |= txt=@ta ^- (unit coin) - =+ vex=((full nuck:so) [[1 1] (trip txt)]) + =+ ^= vex + ?: (gth 0x7fff.ffff txt) :: XX petty cache + ~+ ((full nuck:so) [[1 1] (trip txt)]) + ((full nuck:so) [[1 1] (trip txt)]) ?~ q.vex ~ [~ p.u.q.vex] diff --git a/main/mar/react-snip/door.hook b/main/mar/react-snip/door.hook index 1e8dc1a87..360368cba 100644 --- a/main/mar/react-snip/door.hook +++ b/main/mar/react-snip/door.hook @@ -53,8 +53,8 @@ ")" == ++ react-snip-js (crip tape) - ++ js react-snip-js :: convert to %js - ++ mime [/text/javascript (taco js)] :: convert to %mime +:: ++ js react-snip-js :: convert to %js + ++ mime [/text/javascript (taco react-snip-js)] :: convert to %mime -- ++ grab |% :: convert from ++ noun manx :: clam from %noun diff --git a/main/mar/react/door.hook b/main/mar/react/door.hook index 3967c0f90..458e47f69 100644 --- a/main/mar/react/door.hook +++ b/main/mar/react/door.hook @@ -53,8 +53,8 @@ ")" == ++ react-js (crip tape) - ++ js react-js :: convert to %js - ++ mime [/text/javascript (taco js)] :: convert to %mime +:: ++ js react-js :: convert to %js + ++ mime [/text/javascript (taco react-js)] :: convert to %mime -- ++ grab |% :: convert from ++ noun manx :: clam from %noun From 9823077b861168572495e5ff8da1dfd522800df9 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Tue, 24 Mar 2015 17:46:32 -0400 Subject: [PATCH 24/89] waypoint --- main/arvo/clay.hoon | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index 798979eea..53d8b4318 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -530,6 +530,7 @@ ?^ lon.u.dok ~& %not-done-diffing !! =+ cay=q.p.res ?@ p.cay ~| %patch-bad-marc !! + ~& > %canning =+ ^= can |- ^- (list ,[path cage]) ?~ p.p.cay @@ -547,7 +548,10 @@ !! :- ((hard path) -.q.coy) [q.i.p.p.cay (slot 3 coy)] + ~& > %canned + ~& > %checking-out =. ank.dom (checkout-ankh:ze (mo can)) + ~& > %checked-out ?~ hez +>.$(dok ~) =+ ^= ceq |= a=miso @@ -555,6 +559,8 @@ &(?=(%ins -.a) ?=(%mime -.+.a)) &(?=(%mut -.a) ?=(%mime -.+>.a)) == + ~& > %forming-ergo + =- ~& > %formed-ergo - %_ +>.$ dok ~ tag :: ?~(hez reg :_(reg [u.hez [%ergo who syd let.dom]])) @@ -570,9 +576,10 @@ :- [%done ~ %path !>(a)] ?: ?=(%del -.b) [%done ~ %null !>(~)] - :^ %cast %mime %done =+ (~(get by mim.u.dok) a) - `?^(- [%mime !>(u.-)] (need (read:ze %x [%ud let.dom] a))) + ?^ - [%done ~ %mime !>(u.-)] + :^ %cast %mime %done :- ~ + (need (read:ze %x [%ud let.dom] a)) == :: ++ take-ergo @@ -1426,8 +1433,15 @@ ~& > [%fine-lets-go ali= bob=] =. new.dat ali.dat =. erg.dat - %- ~(uni by `(map path ,?)`(~(run by q.bob.dat) |=(lobe %|))) - `(map path ,?)`(~(run by q.ali.dat) |=(lobe %&)) + %- mo ^- (list ,[path ?]) + %+ murn (~(tap by (~(uni by q.bob.dat) q.ali.dat))) + |= [pax=path lob=lobe] + ^- (unit ,[path ?]) + =+ a=(~(get by q.ali.dat) pax) + =+ b=(~(get by q.bob.dat) pax) + ?: =(a b) + ~ + `[pax !=(~ a)] checkout :: %this @@ -1448,8 +1462,15 @@ =. new.dat (make-yaki [r.ali.dat r.bob.dat ~] q.ali.dat now) =. hut.ran (~(put by hut.ran) r.new.dat new.dat) =. erg.dat - %- ~(uni by `(map path ,?)`(~(run by q.bob.dat) |=(lobe %|))) - `(map path ,?)`(~(run by q.ali.dat) |=(lobe %&)) + %- mo ^- (list ,[path ?]) + %+ murn (~(tap by (~(uni by q.bob.dat) q.ali.dat))) + |= [pax=path lob=lobe] + ^- (unit ,[path ?]) + =+ a=(~(get by q.ali.dat) pax) + =+ b=(~(get by q.bob.dat) pax) + ?: =(a b) + ~ + `[pax !=(~ a)] checkout :: ?(%meet %mate %meld) @@ -1633,7 +1654,7 @@ =. new.dat (make-yaki [r.ali.dat r.bob.dat ~] hat now) =. hut.ran (~(put by hut.ran) r.new.dat new.dat) - =. erg.dat %- ~(uni by del) + =. erg.dat %- ~(uni by del) :: XX totes wrong `(map path ,?)`(~(run by hat) |=(lobe %&)) checkout :: From 5c489935cf9d7e0512b504dd5267ba78f203f30e Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Tue, 24 Mar 2015 19:35:04 -0400 Subject: [PATCH 25/89] another round of performance improvements --- main/arvo/clay.hoon | 14 ++++++++++++-- main/arvo/gall.hoon | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index 53d8b4318..e4b1e4702 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -506,15 +506,19 @@ ++ take-patch |= res=(each bead (list tank)) ^+ +> + ~& > %taking-patch ?: ?=(%| -.res) %_ +>.$ dok ~ yel [[hen %note '!' %rose [" " "" ""] leaf/"clay patch failed" p.res] yel] == + ~& > %editing =^ hat +>.$ (edit:ze now %& *cart ?~(dok ~|(%no-changes !!) sot.u.dok)) + ~& > %edited =. +>.$ wake + ~& > %woked ?~ dok ~& %no-dok +>.$ ?^ lon.u.dok ~& %not-done-diffing !! => @@ -886,7 +890,9 @@ == =+ nao=(case-to-aeon:ze q.p.q.i.xiq) ?~ nao $(xiq t.xiq, xaq [i.xiq xaq]) + ~& > %reading-at-aeon =+ vid=(read-at-aeon:ze u.nao p.q.i.xiq) + ~& > %red-at-aeon ?~ vid ~& %':( oh well' $(xiq t.xiq, xaq [i.xiq xaq]) $(xiq t.xiq, ..wake (balk p.i.xiq u.vid p.q.i.xiq)) :: @@ -896,6 +902,7 @@ ?~ nab $(xiq t.xiq, xaq [i.xiq xaq]) =+ huy=(case-to-aeon:ze q.mot) + ~& >> [%shipping p.i.xiq [p q r]:p.q.i.xiq] ?~ huy =+ ptr=[%ud +(let.dom)] %= $ @@ -938,9 +945,10 @@ ?: =(let.dom 0) ~ q:(aeon-to-yaki let.dom) - ?: =([~ lob] (~(get by hat) pax)) - [%done ~ (need (read %x [%ud let.dom] pax))] + =+ bol=(~(get by hat) pax) |- ^- silk + ?: =([~ lob] bol) + [%done ~ (need (read %x [%ud let.dom] pax))] =+ bol=(~(got by lat.ran) lob) ?- -.bol %direct [%volt ~ q.bol] @@ -1158,6 +1166,8 @@ ++ make-nako |= [a=aeon b=aeon] ^- nako + ~& > %making-nako + =- ~& > %made-nako - :+ hit.dom let.dom (data-twixt-takos (~(get by hit.dom) a) (aeon-to-tako b)) diff --git a/main/arvo/gall.hoon b/main/arvo/gall.hoon index 1458b81e1..bcbb8876e 100644 --- a/main/arvo/gall.hoon +++ b/main/arvo/gall.hoon @@ -736,7 +736,7 @@ :^ %pass (away %w %drug (scot %p p.a) q.a ~) %c ~& [%sync-unsubscribe our p.a q.a] [%warp [our p.a] q.a ~] - %_(+>.$ ped.sat pen, mow :(weld new old mow)) + %_(+>.$ ped.sat pen) :: , mow :(weld new old mow)) :: ++ drum :: raw dependencies |= dep=(set beam) From c246a061adad8751b1d37e5189d85e15e4044c51 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Thu, 26 Mar 2015 19:26:39 -0400 Subject: [PATCH 26/89] notification-only subscription path --- main/arvo/clay.hoon | 90 ++++++++++++++++++++++----------------------- main/arvo/dill.hoon | 2 +- main/arvo/eyre.hoon | 5 +-- main/arvo/ford.hoon | 6 +-- main/arvo/gall.hoon | 20 ++++------ main/arvo/zuse.hoon | 4 +- 6 files changed, 57 insertions(+), 70 deletions(-) diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index e4b1e4702..25443a164 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -123,10 +123,6 @@ $= sor :: upstreams (map ,[p=@p q=@tas r=@p s=@tas] ,[let=@ud hen=duct]) == :: -++ rave :: general request - $% [& p=mood] :: single request - [| p=moat] :: change range - == :: ++ rede :: universal project $: lim=@da :: complete to qyx=cult :: subscribers @@ -148,7 +144,10 @@ hez=(unit duct) :: sync duct dos=(map desk dojo) :: native desk == :: -++ rove (each mood moot) :: stored request +++ rove :: stored request + $% [%sing p=mood] :: single request + [%many p=? q=moot] :: change range + == :: ++ rung $: rus=(map desk rede) :: neighbor desks == :: ++ tage ,[[%tabl p=(list (pair marc marc))] q=vase] :: %tabl gage @@ -249,9 +248,12 @@ +>(byn [[hen ~ [p.mun q.mun syd] r.mun dat] byn]) :: ++ bleb :: ship sequence - |= [hen=duct ins=@ud hip=nako] + |= [hen=duct ins=@ud hip=(unit (pair aeon aeon))] ^+ +> - (blab hen [%w [%ud ins] ~] %nako !>(hip)) + %^ blab hen [%w [%ud ins] ~] + ?~ hip + [%null [%atom %n] ~] + [%nako !>((make-nako:ze u.hip))] :: ++ blub :: ship stop |= hen=duct @@ -266,10 +268,10 @@ |- ^+ +>+.$ :: XX why? =+ rav=(reve rov) =+ ^= vaw ^- rave - ?. ?=([%& %v *] rav) rav - [%| [%ud let.dom] `case`q.p.rav r.p.rav] + ?. ?=([%sing %v *] rav) rav + [%many %| [%ud let.dom] `case`q.p.rav r.p.rav] =+ inx=nix.u.ref - ~? ?=([%& %x *] vaw) + ~? ?=([%sing %x *] vaw) [%remote-x-ing vaw hen] %= +>+.$ say [[hen [(scot %ud inx) ~] for [inx syd ~ vaw]] say] @@ -298,7 +300,7 @@ |= rav=rave ^+ +> ?- -.rav - & + %sing ?: &(=(p.p.rav %u) !=(p.q.p.rav now)) ~& [%clay-fail p.q.p.rav %now now] !! @@ -309,26 +311,25 @@ (blub hen) (blab hen p.rav u.u.ver) :: - | - =+ nab=(case-to-aeon:ze p.p.rav) + %many + =+ nab=(case-to-aeon:ze p.q.rav) ?~ nab - ?> =(~ (case-to-aeon:ze q.p.rav)) + ?> =(~ (case-to-aeon:ze q.q.rav)) (duce (rive rav)) - =+ huy=(case-to-aeon:ze q.p.rav) + =+ huy=(case-to-aeon:ze q.q.rav) ?: &(?=(^ huy) |((lth u.huy u.nab) &(=(0 u.huy) =(0 u.nab)))) (blub hen) =+ top=?~(huy let.dom u.huy) - =+ sar=(lobes-at-path:ze u.nab r.p.rav) - =+ ear=(lobes-at-path:ze top r.p.rav) + =+ sar=(lobes-at-path:ze u.nab r.q.rav) + =+ ear=(lobes-at-path:ze top r.q.rav) =. +>.$ ?: =(sar ear) +>.$ - =+ fud=(make-nako:ze u.nab top) - (bleb hen u.nab fud) + (bleb hen u.nab ?:(p.rav ~ `[u.nab top])) ?^ huy (blub hen) =+ ^= ptr ^- case [%ud +(let.dom)] - (duce `rove`[%| ptr q.p.rav r.p.rav ear]) + (duce `rove`[%many p.rav ptr q.q.rav r.q.rav ear]) == :: ++ echa :: announce raw @@ -691,7 +692,7 @@ |- ^+ +>+.$ =+ ruv=(~(get by bom.u.ref) inx) ?~ ruv +>+.$ - => ?. |(?=(~ rut) ?=(& -.q.u.ruv)) . + => ?. |(?=(~ rut) ?=(%sing -.q.u.ruv)) . %_ . bom.u.ref (~(del by bom.u.ref) inx) fod.u.ref (~(del by fod.u.ref) p.u.ruv) @@ -700,10 +701,10 @@ =+ rav=`rave`q.u.ruv %= +>+.$ lim - ?.(&(?=(| -.rav) ?=(%da -.q.p.rav)) lim `@da`p.q.p.rav) + ?.(&(?=(%many -.rav) ?=(%da -.q.q.rav)) lim `@da`p.q.q.rav) :: haw.u.ref - ?. ?=(& -.rav) haw.u.ref + ?. ?=(%sing -.rav) haw.u.ref (~(put by haw.u.ref) p.rav ~) == ?- p.p.u.rut @@ -727,6 +728,7 @@ p.r.u.rut ?+ p.r.u.rut ~| %strange-w-over-nextwork !! %aeon !>(((hard aeon) q.r.u.rut)) + %null [[%atom %n] ~] %nako !>(~|([%harding [&1 &2 &3]:q.r.u.rut] ((hard nako) q.r.u.rut))) == ?. ?=(%nako p.r.u.rut) +>+.$ @@ -849,11 +851,11 @@ %- bind :_ fun ^- (unit ,@da) ?- -.rov - %& + %sing ?. ?=(%da -.q.p.rov) ~ `p.q.p.rov - %| - =* mot p.rov + %many + =* mot q.rov %+ hunt ?. ?=(%da -.p.mot) ~ ?.((lth now p.p.mot) ~ [~ p.p.mot]) @@ -864,13 +866,13 @@ ++ reve |= rov=rove ^- rave - ?: ?=(%& -.rov) rov - [%| p.p.rov q.p.rov r.p.rov] + ?: ?=(%sing -.rov) rov + [%many p.rov p.q.rov q.q.rov r.q.rov] :: ++ rive - |= rav=[%| p=moat] + |= rav=[%many p=? q=moat] ^- rove - [%| p.p.rav q.p.rav r.p.rav ~] + [%many p.rav p.q.rav q.q.rav r.q.rav ~] :: ++ wake :: update subscribers ^+ . @@ -880,7 +882,7 @@ ?~ xiq ..wake(qyx (~(gas by *cult) xaq)) ?- -.q.i.xiq - & + %sing =+ cas=?~(ref ~ (~(get by haw.u.ref) `mood`p.q.i.xiq)) ?^ cas %= $ @@ -896,32 +898,30 @@ ?~ vid ~& %':( oh well' $(xiq t.xiq, xaq [i.xiq xaq]) $(xiq t.xiq, ..wake (balk p.i.xiq u.vid p.q.i.xiq)) :: - | - =+ mot=`moot`p.q.i.xiq + %many + =+ mot=`moot`q.q.i.xiq =+ nab=(case-to-aeon:ze p.mot) ?~ nab $(xiq t.xiq, xaq [i.xiq xaq]) =+ huy=(case-to-aeon:ze q.mot) - ~& >> [%shipping p.i.xiq [p q r]:p.q.i.xiq] + ~& >> [%shipping p.i.xiq [p q r]:mot] ?~ huy =+ ptr=[%ud +(let.dom)] %= $ xiq t.xiq - xaq [[p.i.xiq [%| ptr q.mot r.mot s.mot]] xaq] + xaq [[p.i.xiq [%many p.q.i.xiq ptr q.mot r.mot s.mot]] xaq] ..wake =+ ^= ear - (lobes-at-path:ze let.dom r.p.q.i.xiq) - ?: =(s.p.q.i.xiq ear) ..wake - =+ fud=(make-nako:ze u.nab let.dom) - (bleb p.i.xiq let.dom fud) + (lobes-at-path:ze let.dom r.mot) + ?: =(s.mot ear) ..wake + (bleb p.i.xiq let.dom ?:(p.q.i.xiq ~ `[u.nab let.dom])) == %= $ xiq t.xiq ..wake =- (blub:- p.i.xiq) =+ ^= ear - (lobes-at-path:ze u.huy r.p.q.i.xiq) - ?: =(s.p.q.i.xiq ear) (blub p.i.xiq) - =+ fud=(make-nako:ze u.nab u.huy) - (bleb p.i.xiq +(u.nab) fud) + (lobes-at-path:ze u.huy r.mot) + ?: =(s.mot ear) (blub p.i.xiq) + (bleb p.i.xiq +(u.nab) ?:(p.q.i.xiq ~ `[u.nab u.huy])) == == ++ ze @@ -1399,7 +1399,7 @@ =- %_(+ tag [- tag]) :* hen [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %ali ~] %c %warp [p.bob p.ali] q.ali - `[%& %v cas.dat /] + `[%sing %v cas.dat /] == :: ++ fetched-ali @@ -2227,7 +2227,7 @@ %mere =+ nex=+(let:(~(got by sor.ruf) our syd her sud)) =. sor.ruf (~(put by sor.ruf) [our syd her sud] [nex hen]) - =+ `move`[hen %pass tea %c %warp [our her] sud ~ %& %y [%ud nex] /] + =+ `move`[hen %pass tea %c %warp [our her] sud ~ %sing %y [%ud nex] /] ?: ?=(%& -.p.+.q.hin) ~& ['merge succeeded' p.p.+.q.hin] [[- ~] ..^$] diff --git a/main/arvo/dill.hoon b/main/arvo/dill.hoon index e80969847..26424650f 100644 --- a/main/arvo/dill.hoon +++ b/main/arvo/dill.hoon @@ -668,7 +668,7 @@ our p.kyz mos :_ mos - [(need def) %pass / %c %warp [p.kyz p.kyz] %main `[%& %y [%ud 1] /]] + [(need def) %pass / %c %warp [p.kyz p.kyz] %main `[%sing %y [%ud 1] /]] == :: %talk (furl (~(win re p.kyz) 0 p.q.yar)) :: program output diff --git a/main/arvo/eyre.hoon b/main/arvo/eyre.hoon index 86d017d1a..9e252d3d9 100644 --- a/main/arvo/eyre.hoon +++ b/main/arvo/eyre.hoon @@ -52,9 +52,6 @@ $% [%wait p=@da] :: [%rest p=@da] :: == == == :: -++ rave :: see %clay - $% [| p=moat] :: - == :: ++ riff ,[p=desk q=(unit rave)] :: see %clay ++ silk :: see %ford $& [p=silk q=silk] :: @@ -1884,7 +1881,7 @@ :: %det :- [~ pip(pez %way)] - +>.$(..ya (hoot our num ses [p.som.pip ~ [%| q.som.pip]])) + +>.$(..ya (hoot our num ses [p.som.pip ~ [%many %& q.som.pip]])) :: %fun :- [~ pip(pez %way)] diff --git a/main/arvo/ford.hoon b/main/arvo/ford.hoon index 781e28438..6d14f6704 100644 --- a/main/arvo/ford.hoon +++ b/main/arvo/ford.hoon @@ -55,10 +55,6 @@ $% $: %c :: to %clay $% [%warp p=sock q=riff] :: == == == :: -++ rave :: see %clay - $% [& p=mood] :: single request - [| p=moat] :: change range - == :: ++ riff ,[p=desk q=(unit rave)] :: see %clay ++ sign :: in result $<- $% $: %c :: by %clay @@ -298,7 +294,7 @@ :^ %pass [(scot %p our) (scot %ud num) (scot %ud p.kig) (tope bek ~)] %c - [%warp [our p.bem] q.bem [~ %& ren r.bem (flop s.bem)]] + [%warp [our p.bem] q.bem [~ %sing ren r.bem (flop s.bem)]] == :: ++ clef :: cache a result diff --git a/main/arvo/gall.hoon b/main/arvo/gall.hoon index bcbb8876e..64a411242 100644 --- a/main/arvo/gall.hoon +++ b/main/arvo/gall.hoon @@ -75,10 +75,6 @@ $: @tas :: to any $% [%meta p=vase] :: == == == :: -++ rave :: see %clay - $% [& p=mood] :: single request - [| p=moat] :: change range - == :: ++ riff ,[p=desk q=(unit rave)] :: see %clay ++ scad :: opaque for foreign $: p=@ud :: index @@ -723,10 +719,10 @@ %+ skip (~(tap in pen) ~) |=(a=(pair ship desk) (~(has in ped.sat) a)) |= a=(pair ship desk) - :- hun.mat - :^ %pass (away %w %drug (scot %p p.a) q.a ~) %c - :: ~& [%sync-subscribe our p.a q.a] - [%warp [our p.a] q.a ~ %| [%da +(now)] [%da (add now ~d1000)] /] + :* hun.mat %pass (away %w %drug (scot %p p.a) q.a ~) %c + %warp [our p.a] q.a ~ + %many %& [%da +(now)] [%da (add now ~d1000)] / + == =+ ^= old ^- (list move) %+ turn %+ skip (~(tap in ped.sat) ~) @@ -734,9 +730,9 @@ |= a=(pair ship desk) :- hun.mat :^ %pass (away %w %drug (scot %p p.a) q.a ~) %c - ~& [%sync-unsubscribe our p.a q.a] + :: ~& [%sync-unsubscribe our p.a q.a] [%warp [our p.a] q.a ~] - %_(+>.$ ped.sat pen) :: , mow :(weld new old mow)) + %_(+>.$ ped.sat pen, mow :(weld new old mow)) :: ++ drum :: raw dependencies |= dep=(set beam) @@ -955,9 +951,7 @@ =. ped.sat (~(del by ped.sat) [our syd]) ?~ p.+.sin +>.$ - ~& %not-restarting-gall-apps - +>.$ - ::+>.$(vey.sat (~(put to vey.sat) hen %boot ~)) + +>.$(vey.sat (~(put to vey.sat) hen %boot ~)) == :: ++ morn :: install core diff --git a/main/arvo/zuse.hoon b/main/arvo/zuse.hoon index 01ef78e19..b70903b34 100644 --- a/main/arvo/zuse.hoon +++ b/main/arvo/zuse.hoon @@ -2115,8 +2115,8 @@ r=cage :: data == :: ++ rave :: general request - $% [& p=mood] :: single request - [| p=moat] :: change range + $% [%sing p=mood] :: single request + [%many p=? q=moat] :: change range == :: ++ rill :: outbound stream $: sed=@ud :: sent From 21e3d981d41d24b652d6d86c916a1cf6002e5ae9 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Mon, 30 Mar 2015 18:12:18 -0400 Subject: [PATCH 27/89] historical .^ --- main/arvo/clay.hoon | 79 ++++++++++++++++++++++++++++++--------------- main/arvo/ford.hoon | 24 ++++++++++---- main/arvo/hoon.hoon | 18 ++++++----- 3 files changed, 81 insertions(+), 40 deletions(-) diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index 25443a164..e39f09615 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -197,12 +197,13 @@ :: ++ aver :: read |= mun=mood - ^- (unit (unit cage)) + ^- (unit (unit (each cage silk))) ?: &(=(p.mun %u) !=(p.q.mun now)) :: prevent bad things ~& [%clay-fail p.q.mun %now now] !! =+ ezy=?~(ref ~ (~(get by haw.u.ref) mun)) - ?^ ezy ezy + ?^ ezy + `(bind u.ezy (cury same %&)) =+ nao=(case-to-aeon:ze q.mun) :: ~& [%aver-mun nao [%from syd lim q.mun]] ?~(nao ~ (read-at-aeon:ze u.nao mun)) @@ -229,7 +230,7 @@ [?^(q.i.p.tab !! q.i.p.tab) (slot 5 q.tab)] :: ++ balk :: read and send - |= [hen=duct cay=(unit cage) mun=mood] + |= [hen=duct cay=(unit (each cage silk)) mun=mood] ^+ +> ?~ cay (blub hen) (blab hen mun u.cay) @@ -243,14 +244,20 @@ %_(+> tag :_(tag [hen /tyme %t %rest tym])) :: ++ blab :: ship result - |= [hen=duct mun=mood dat=cage] + |= [hen=duct mun=mood dat=(each cage silk)] ^+ +> - +>(byn [[hen ~ [p.mun q.mun syd] r.mun dat] byn]) + ?: ?=(%& -.dat) + +>.$(byn [[hen ~ [p.mun q.mun syd] r.mun p.dat] byn]) + =- +>.$(tag [- tag]) + :* hen [%blab p.mun (scot q.mun) syd r.mun] + %f %exec who [who syd q.mun] ~ p.dat + == :: ++ bleb :: ship sequence |= [hen=duct ins=@ud hip=(unit (pair aeon aeon))] ^+ +> %^ blab hen [%w [%ud ins] ~] + :- %& ?~ hip [%null [%atom %n] ~] [%nako !>((make-nako:ze u.hip))] @@ -888,7 +895,7 @@ %= $ xiq t.xiq ..wake ?~ u.cas (blub p.i.xiq) - (blab p.i.xiq p.q.i.xiq u.u.cas) + (blab p.i.xiq p.q.i.xiq %& u.u.cas) == =+ nao=(case-to-aeon:ze q.p.q.i.xiq) ?~ nao $(xiq t.xiq, xaq [i.xiq xaq]) @@ -904,7 +911,6 @@ ?~ nab $(xiq t.xiq, xaq [i.xiq xaq]) =+ huy=(case-to-aeon:ze q.mot) - ~& >> [%shipping p.i.xiq [p q r]:mot] ?~ huy =+ ptr=[%ud +(let.dom)] %= $ @@ -948,7 +954,9 @@ =+ bol=(~(get by hat) pax) |- ^- silk ?: =([~ lob] bol) - [%done ~ (need (read %x [%ud let.dom] pax))] + =+ (need (need (read-x let.dom pax))) + ?> ?=(%& -<) + [%done ~ p.-] =+ bol=(~(got by lat.ran) lob) ?- -.bol %direct [%volt ~ q.bol] @@ -1243,19 +1251,21 @@ :: ++ read-x |= [yon=aeon pax=path] - ^- (unit (unit cage)) + ^- (unit (unit (each cage silk))) =+ tak=(~(get by hit.dom) yon) ?~ tak ~ + ?: =(yon let.dom) + `(bind q.ank:(descend-path:(zu ank.dom) pax) (corl (cury same %&) tail)) =+ yak=(tako-to-yaki u.tak) =+ lob=(~(get by q.yak) pax) ?~ lob [~ ~] =+ mar=(lobe-to-mark u.lob) ?. ?=(?(%hoon %hook) mar) - ~ - :^ ~ ~ mar - :- [%atom %t] + [~ ~ %| (lobe-to-silk pax u.lob)] + :^ ~ %& ~ + :+ mar [%atom %t] |- ^- @t :: (urge cord) would be faster =+ bol=(lobe-to-blob u.lob) ?: ?=(%direct -.bol) @@ -1293,20 +1303,20 @@ :: ++ read-at-aeon :: read-at-aeon:ze |= [yon=aeon mun=mood] :: seek and read - ^- (unit (unit cage)) + ^- (unit (unit (each cage silk))) ?: &(?=(%w p.mun) !?=(%ud -.q.mun)) :: NB only for speed - ?^(r.mun [~ ~] [~ ~ %aeon !>(yon)]) + ?^(r.mun [~ ~] [~ ~ %& %aeon !>(yon)]) ?: ?=(%x p.mun) (read-x yon r.mun) ?: ?=(%y p.mun) - (read-y yon r.mun) - %+ biff + (bind (read-y yon r.mun) (curr bind (cury same %&))) + %+ bind (rewind yon) |= a=(unit ,_+>.$) - ^- (unit (unit cage)) + ^- (unit (each cage silk)) ?~ a - [~ ~] - `(read:u.a mun) + ~ + `(unit (each cage silk))`(bind (read:u.a mun) (cury same %&)) :: ++ rewind :: rewind:ze |= yon=aeon :: rewind to aeon @@ -1877,8 +1887,8 @@ :- [%done ~ %path !>(a)] ?. b [%done ~ %null !>(~)] - :^ %cast %mime %done - `(need (read:zez %x [%ud let.dom] a)) + :+ %cast %mime + (lobe-to-silk:zez a (~(got by q.new.dat) a)) == :: ++ ergoed @@ -2194,11 +2204,15 @@ [~ ~] =+ run=((soft care) ren) ?~ run [~ ~] - %. [u.run u.luk tyl] - =< aver - ?: got - (di:(un his now ~ ruf) syd) - (do now ~ [his his] syd ruf) + =+ %. [u.run u.luk tyl] + =< aver + ?: got + (di:(un his now ~ ruf) syd) + (do now ~ [his his] syd ruf) + ?~ - - + ?~ u.- - + ?: ?=(%& -.u.u.-) ``p.u.u.- + ~ :: ++ stay [%0 ruf] ++ take :: accept response @@ -2240,6 +2254,19 @@ =+ nex=let:(~(got by sor.ruf) our syd her sud) [[hen %pass tea %c %merg our syd her sud %mate]~ ..^$] == + ?: ?=([%blab care @ @ *] tea) + ?> ?=(%made +<.q.hin) + ?: ?=(%| -.p.q.hin) + ~| %blab-fail + ~> %mean.|.(p.p.q.hin) :: interpolate ford fail into stack trace + !! + ?^ p.q.p.p.q.hin + ~|(%bad-marc !!) + :_ ..^$ :_ ~ + :* hen %give %writ ~ + `[care case @tas]`[i.t.tea ((hard case) +>:(slay i.t.t.tea)) i.t.t.t.tea] + `path`t.t.t.t.tea `cage`q.p.p.q.hin + == ?- -.+.q.hin %crud [[[hen %slip %d %flog +.q.hin] ~] ..^$] diff --git a/main/arvo/ford.hoon b/main/arvo/ford.hoon index 6d14f6704..8f3ab6b65 100644 --- a/main/arvo/ford.hoon +++ b/main/arvo/ford.hoon @@ -126,6 +126,7 @@ ++ task :: problem in progress $: nah=duct :: cause kas=silk :: problem + keg=(map (pair term beam) cage) :: block results kig=[p=@ud q=(map ,@ud ,[p=care q=beam])] :: blocks == :: -- :: @@ -226,13 +227,13 @@ =: p.tad.bay +(p.tad.bay) dym.bay (~(put by dym.bay) hen num) == - ~(exec zo [num `task`[hen u.kus 0 ~]]) + ~(exec zo [num `task`[hen u.kus ~ 0 ~]]) :: ++ apel :: stateless |= [hen=duct kus=silk] ^- (unit gift) =+ num=0 :: XX - ~(exit zo [num `task`[hen kus 0 ~]]) + ~(exit zo [num `task`[hen kus ~ 0 ~]]) :: ++ axon :: take |= [num=@ud tik=@ud sih=sign] @@ -956,7 +957,7 @@ ^- (bolt vase) %+ cope (mail cof p.vax gen) |= [cof=cafe typ=type fol=nock] - %+ (coup cof) (mock [q.vax fol] (mole (slod ska))) + %+ (coup cof) (mock [q.vax fol] (mole (slod (save ska)))) |=(val=* `vase`[typ val]) :: ++ make :: reduce silk @@ -1114,7 +1115,7 @@ ^- (bolt vase) %+ cope (malt cof p.gat p.sam) |= [cof=cafe typ=type] - %+ (coup cof) (mong [q.gat q.sam] (mole (slod ska))) + %+ (coup cof) (mong [q.gat q.sam] (mole (slod (save ska)))) |=(val=* `vase`[typ val]) :: ++ meow :: assemble @@ -1474,10 +1475,21 @@ |= [tik=@ud rot=riot] ^+ ..zo ?> (~(has by q.kig) tik) + =+ `[ren=care bem=beam]`(~(got by q.kig) tik) ?~ rot - =+ `[ren=care bem=beam]`(~(got by q.kig) tik) amok:(expo [%made %| (smyt ren (tope bem)) ~]) - exec(q.kig (~(del by q.kig) tik)) + =+ (cat 3 'c' ren) + exec(q.kig (~(del by q.kig) tik), keg (~(put by keg) [- bem] r.u.rot)) + :: + ++ save + |= sky=sled + ^- sled + |= [(unit (set monk)) tem=term bem=beam] + ^- (unit (unit cage)) + =+ (~(get by keg) tem bem) + ?^ - + ``u.- + (sky +<.$) -- -- :: diff --git a/main/arvo/hoon.hoon b/main/arvo/hoon.hoon index 1e2424453..e8951537e 100644 --- a/main/arvo/hoon.hoon +++ b/main/arvo/hoon.hoon @@ -1764,6 +1764,16 @@ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: section 2cI, almost macros :: :: +++ same |*(* +<) :: identity +++ head |*(^ +<-) :: get head +++ tail |*(^ +<+) :: get head +++ cork |*([a=_,* b=gate] (corl b a)) :: compose forward +++ corl :: compose backwards + |* [a=gate b=_,*] + =< +:|.((a (b))) :: type check + |* c=_+<.b + (a (b c)) +:: ++ cury :: curry left |* [a=_|=(^ **) b=*] |* c=_+<+.a @@ -1774,14 +1784,6 @@ |* b=_+<+.a (a b c) :: -++ cork |*([a=_,* b=gate] (corl b a)) :: compose forward -:: -++ corl :: compose backwards - |* [a=gate b=_,*] - =< +:|.((a (b))) :: type check - |* c=_+<.b - (a (b c)) -:: ++ hard :: force coerce to type |* han=$+(* *) |= fud=* ^- han From ca85c9728ea4a4e723a269a0cbd2cf7bf788f2b3 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Tue, 31 Mar 2015 15:52:47 -0400 Subject: [PATCH 28/89] make subs boot again --- main/arvo/clay.hoon | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index e39f09615..3eeedbe9c 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -1255,7 +1255,7 @@ =+ tak=(~(get by hit.dom) yon) ?~ tak ~ - ?: =(yon let.dom) + ?: &(?=(~ ref) =(yon let.dom)) `(bind q.ank:(descend-path:(zu ank.dom) pax) (corl (cury same %&) tail)) =+ yak=(tako-to-yaki u.tak) =+ lob=(~(get by q.yak) pax) @@ -1264,7 +1264,7 @@ =+ mar=(lobe-to-mark u.lob) ?. ?=(?(%hoon %hook) mar) [~ ~ %| (lobe-to-silk pax u.lob)] - :^ ~ %& ~ + :^ ~ ~ %& :+ mar [%atom %t] |- ^- @t :: (urge cord) would be faster =+ bol=(lobe-to-blob u.lob) From ff6a9c31982f305d9c65bc43f6f09ad3c988f26d Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Wed, 1 Apr 2015 19:57:38 -0400 Subject: [PATCH 29/89] ~doznec boots --- main/arvo/clay.hoon | 4 ++-- main/arvo/dill.hoon | 10 +++++++--- main/arvo/gall.hoon | 11 ++++++++++- main/arvo/zuse.hoon | 2 +- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index 3eeedbe9c..ffe4e03fa 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -902,7 +902,7 @@ ~& > %reading-at-aeon =+ vid=(read-at-aeon:ze u.nao p.q.i.xiq) ~& > %red-at-aeon - ?~ vid ~& %':( oh well' $(xiq t.xiq, xaq [i.xiq xaq]) + ?~ vid ~& [%oh-well mood=p.q.i.xiq] $(xiq t.xiq, xaq [i.xiq xaq]) $(xiq t.xiq, ..wake (balk p.i.xiq u.vid p.q.i.xiq)) :: %many @@ -967,7 +967,7 @@ ++ make-direct :: make blob |= p=page ^- blob - [%direct (mug p) p] + [%direct (shax (jam p)) p] :: ++ make-delta :: make blob delta |= [p=[p=mark q=lobe] q=page] diff --git a/main/arvo/dill.hoon b/main/arvo/dill.hoon index 26424650f..6063e5000 100644 --- a/main/arvo/dill.hoon +++ b/main/arvo/dill.hoon @@ -369,7 +369,7 @@ %_ +>.$ mos :_ mos - [hen %pass /term-show %g %show [our /terminal] our /lines] + [hen %pass /term-show/(scot %p our) %g %show [our /terminal] our /lines] == :: %wake @@ -510,8 +510,12 @@ %o %_ +>.$ mos :_ :_ mos - [hen %pass /term-show %g %nuke [our /terminal] our] - [hen %pass /term-show %g %show [our /terminal] our /lines] + :* hen %pass /term-show/(scot %p our) + %g %nuke [our /terminal] our + == + :* hen %pass /term-show/(scot %p our) + %g %show [our /terminal] our /lines + == == %p $(kyz [%belt %aro %u]) %u ?: =(0 bus.u.q.q.yar) diff --git a/main/arvo/gall.hoon b/main/arvo/gall.hoon index 64a411242..d9166d588 100644 --- a/main/arvo/gall.hoon +++ b/main/arvo/gall.hoon @@ -770,7 +770,8 @@ :: ++ home :: load application ^- silk - [%boil %core [[our %main [%da now]] app.sat %app ~] ~] + =+ let=((hard ,@) q.q:(need (need (ska ~ %cw [our %main %da now] /)))) + [%boil %core [[our %main %ud ?:(=(let 0) 1 let)] app.sat %app ~] ~] :: ++ leav %_ . @@ -1080,6 +1081,14 @@ :: ++ work :: eat queue |- ^+ + + :: ~& > :* %workeando + :: our=our + :: vey==(~ vey.sat) + :: ^= qic + :: ?: ?=(^ qic.sat) + :: [p -.q]:u.qic.sat + :: ~ + :: == ?: |(?=(^ qic.sat) =(~ vey.sat)) +.$ :: nothing to do =^ yev vey.sat [p q]:~(get to vey.sat) ?: (~(has in nuc.sat) p.yev) $ diff --git a/main/arvo/zuse.hoon b/main/arvo/zuse.hoon index b70903b34..5ac989bc4 100644 --- a/main/arvo/zuse.hoon +++ b/main/arvo/zuse.hoon @@ -1997,7 +1997,7 @@ ++ lice ,[p=ship q=buck] :: full license ++ life ,@ud :: regime number ++ lint (list rock) :: fragment array -++ lobe ,@uvF :: blob ref +++ lobe ,@uvI :: blob ref ++ love $% :: http response [%ham p=manx] :: html node [%mid p=mite q=octs] :: mime-typed data From 76fd6824a6cb96f1439b7ccae44ec01da7e80962 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Fri, 3 Apr 2015 21:31:57 -0400 Subject: [PATCH 30/89] :merge rework --- main/app/merge/core.hook | 200 +++++++++++++++++++++++++-------------- main/arvo/clay.hoon | 2 - main/arvo/ford.hoon | 50 ++++++++++ main/mar/txt/door.hook | 5 + 4 files changed, 185 insertions(+), 72 deletions(-) diff --git a/main/app/merge/core.hook b/main/app/merge/core.hook index dbbb4b95f..67230954d 100644 --- a/main/app/merge/core.hook +++ b/main/app/merge/core.hook @@ -2,10 +2,16 @@ :: :::: /hook/core/sync/app :: -:: XX give %nice |% +++ merge-state + $: auto=? + gem=germ + her=@p + sud=@tas + == ++ gift - $% [%nice ~] + $% [%mean p=ares] + [%nice ~] [%rush %tang (list tank)] == ++ move ,[p=bone q=(mold note gift)] @@ -15,95 +21,149 @@ == == $: %g $% [%cide span] + [%mess p=[ship path] q=ship r=cage] + == == == +++ sign + $% $: %c + $% [%mere are=(each (set path) (pair term (list tank)))] + == == + $: %g + $% [%mean p=ares] + [%nice ~] == == == -- !: :::: :: -|_ [hid=hide auto=? gem=germ syd=@tas her=@p sud=@tas] +|_ [hid=hide merges=(map desk merge-state)] +++ me + |= [ost=bone syd=desk] + =+ `merge-state`(fall (~(get by merges) syd) *merge-state) + =| mow=(list move) + |% + ++ abet + [(flop mow) ..me(merges (~(put by merges) syd auto gem her sud))] + :: + ++ blab + |= new=(list move) + ^+ +> + +>.$(mow (welp new mow)) + :: + ++ end ?:(?=([* ~ ~] merges) . (blab [0 %pass / %g %cide %$] ~)) + ++ win end:(blab [ost %give %nice ~] ~) + ++ lose end:(blab [ost %give %mean ~] ~) + :: + ++ merge + ^+ . + (blab [ost %pass /[syd] %c %merg our.hid syd her sud gem] ~) + :: + ++ fancy-merge :: recurse + |= [syd=desk her=@p sud=desk gem=$|(%auto germ)] + ^+ +> + %- blab :_ ~ + :* ost %pass /[syd] %g %mess [our.hid imp.hid] our.hid + %merge-args !>([our.hid syd her sud gem ~]) + == + :: + ++ spam (corl blab ^spam) + ++ start + |= [her=@p sud=@tas gim=$|(%auto germ)] + ^+ +> + ?. ?=(%auto gim) + merge(auto |, gem gim, her her, sud sud) + ?: =(0 .^(%cw /(scot %p our.hid)/[syd]/(scot %da lat.hid))) + => $(gim %init) + .(auto &) + => $(gim %fine) + .(auto &) + :: + ++ work + |= sih=sign + ^+ +> + ?: ?=(%meld gem) + ?: ?=(%g -.sih) + ?: ?=(%nice +<.sih) + => (spam leaf/"set up scratch space" ~) + merge(syd (cat 3 syd '-scratch')) + =+ :- "failed to set up conflict resolution scratch space" + "I'm out of ideas" + lose:(spam leaf/-< leaf/-> ~) + ?> ?=(%c -.sih) + ?: ?=(%& -.are.sih) + ?. auto + =+ "successfully merged with strategy {}" + win:(spam leaf/- ?~(p.are.sih ~ [>`(set path)`p.are.sih< ~])) + =+ (trip (cat 3 syd '-scratch')) + =+ ^- (list tape) + :~ "done setting up scratch space in %{-}" + "please resolve conflicts in the following files and run" + ":merge %{(trip syd)} {} %{-}" + "" + "conflicts in:" + == + win:(spam (welp (turn - (cury same %leaf)) [>p.are.sih< ~])) + =+ "failed to merge with strategy {}" + lose:(spam leaf/- q.p.are.sih) + ?> ?=(%c -.sih) + ?: ?=(%& -.are.sih) + =+ "successfully merged with strategy {}" + win:(spam leaf/- ?~(p.are.sih ~ [>`(set path)`p.are.sih< ~])) + ?. auto + =+ "failed to merge with strategy {}" + lose:(spam leaf/- q.p.are.sih) + ?+ gem + (spam leaf/"strange auto" >gem< ~) + :: + %init + =+ :- "auto merge failed on strategy %init" + "I'm out of ideas" + lose:(spam leaf/-< leaf/-> [>p.p.are.sih< q.p.are.sih]) + :: + %fine + ?. ?=(%bad-fine-merge p.p.are.sih) + =+ "auto merge failed on strategy %fine" + lose:(spam leaf/- >p.p.are.sih< q.p.are.sih) + => (spam leaf/"%fine merge failed, trying %meet" ~) + merge(gem %meet) + :: + %meet + ?. ?=(%meet-conflict p.p.are.sih) + =+ "auto merge failed on strategy %meet" + lose:(spam leaf/- >p.p.are.sih< q.p.are.sih) + => (spam leaf/"%meet merge failed, trying %mate" ~) + merge(gem %mate) + :: + %mate + ?. ?=(%mate-conflict p.p.are.sih) + =+ "auto merge failed on strategy %mate" + lose:(spam leaf/- >p.p.are.sih< q.p.are.sih) + => .(gem %meld) + =+ tic=(cat 3 syd '-scratch') + => =+ "%mate merge failed with conflicts, %melding into %{(trip tic)}" + [tic=tic (spam leaf/- ~)] + (fancy-merge tic our.hid syd %auto) + == + -- ++ peer ,_`. ++ poke--args |= [ost=bone you=ship syd=@tas her=@p sud=@tas gim=?([$|(%auto germ) ~] ~)] ^- [(list move) _+>.$] ?~ gim $(gim [%auto ~]) - ?. ?=(%auto -.gim) - =: auto | - gem -.gim - ^syd syd - ^her her - ^sud sud - == - [[(merge ost) ~] +>.$] - =. auto & - ?: =(0 .^(%cw /(scot %p our.hid)/[syd]/(scot %da lat.hid))) - => $(-.gim %init) - [- +(auto &)] - => $(-.gim %fine) - [- +(auto &)] + abet:(start:(me ost syd) her sud -.gim) :: ++ pour |= [ost=bone pax=path sih=*] ^- [(list move) _+>.$] - =+ ((soft ,[%c %mere are=(each (set path) (pair term (list tank)))]) sih) + =+ ((soft sign) sih) ?~ - [(spam leaf/"not working so well" >sih< ~) +>.$] - ?: ?=(%& -.are.u) - %+ end - leaf/"successfully merged with strategy {}" - ?~(p.are.u ~ [>`(set path)`p.are.u< ~]) - ?. auto - (end leaf/"failed to merge with strategy {}" q.p.are.u) - ?+ gem - [(spam leaf/"strange auto" >gem< ~) +>.$] - :: - %init - %^ end - leaf/"auto merge failed on strategy %init" - leaf/"I'm out of ideas" - [>p.p.are.u< q.p.are.u] - :: - %fine - ?. ?=(%bad-fine-merge p.p.are.u) - (end leaf/"auto merge failed on strategy %fine" >p.p.are.u< q.p.are.u) - => .(gem %meet) - :_ +>.$ - (flop i=(merge ost) t=(spam leaf/"%fine merge failed, trying %meet" ~)) - :: - %meet - ?. ?=(%meet-conflict p.p.are.u) - (end leaf/"auto merge failed on strategy %meet" >p.p.are.u< q.p.are.u) - => .(gem %mate) - :_ +>.$ - (flop i=(merge ost) t=(spam leaf/"%meet merge failed, trying %mate" ~)) - %mate - :: - ?. ?=(%mate-conflict p.p.are.u) - (end leaf/"auto merge failed on strategy %mate" >p.p.are.u< q.p.are.u) - => .(gem %meld) - :_ +>.$ - (flop i=(merge ost) t=(spam leaf/"%mate merge failed, trying %meld" ~)) - :: - %meld - %^ end - leaf/"auto merge failed on strategy %meld" - leaf/"I'm out of ideas" - [>p.p.are.u< q.p.are.u] - == -:: -++ merge - |= ost=bone - ^- move - [ost %pass / %c %merg our.hid syd her sud gem] + abet:(work:(me ost -.pax) u) :: ++ spam |= mes=(list tank) + ^- (list move) %+ turn (~(tap in (~(get ju pus.hid) /out))) |= ost=bone [ost %give %rush %tang mes] -:: -++ end - |= mes=(list tank) - ^- [(list move) _+>.$] - [(flop i=[0 %pass / %g %cide %$] t=(spam mes)) +>.$] -- diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index ffe4e03fa..ba1fd80b2 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -1174,8 +1174,6 @@ ++ make-nako |= [a=aeon b=aeon] ^- nako - ~& > %making-nako - =- ~& > %made-nako - :+ hit.dom let.dom (data-twixt-takos (~(get by hit.dom) a) (aeon-to-tako b)) diff --git a/main/arvo/ford.hoon b/main/arvo/ford.hoon index 8f3ab6b65..c28869695 100644 --- a/main/arvo/ford.hoon +++ b/main/arvo/ford.hoon @@ -72,6 +72,7 @@ [%dude p=tank q=silk] :: error wrap [%dune p=(set beam) q=(unit gage)] :: unit literal [%join p=mark q=silk r=silk] :: merge + [%mash p=mark q=silk r=silk] :: merge [%mute p=silk q=(list (pair wing silk))] :: mutant [%pact p=silk q=silk] :: patch [%plan p=beam q=spur r=hood] :: structured assembly @@ -707,6 +708,49 @@ (fine cof u.fom (slot 3 dif)) == :: + ++ mash + |= [cof=cafe for=mark kas=silk kos=silk] + ^- (bolt gage) + %. [cof kas kos] + ;~ cope + ;~ coax + |=([cof=cafe p=silk q=silk] (make cof p)) + |=([cof=cafe p=silk q=silk] (make cof q)) + == + |= [cof=cafe cay=gage coy=gage] + ?. &(?=(@ p.cay) ?=(@ p.coy)) + (flaw cof leaf/"bad mash marc: {} {}" ~) + %+ cope (fang cof for) + |= [cof=cafe pro=vase] + ?. (slab %grad p.pro) + (flaw cof leaf/"no ++grad" ~) + =+ gar=(slap pro [%cnzy %grad]) + ?. (slab %form p.gar) + ?. (slab %sted p.gar) + (flaw cof leaf/"no ++form:grad nor ++sted:grad" ~) + =+ too=((soft ,@tas) q:(slap gar [%cnzy %sted])) + ?~ too + (flaw cof leaf/"bad ++sted:grad" ~) + (make cof %mash u.too [%done ~ cay] [%done ~ coy]) + =+ fom=((soft ,@tas) q:(slap gar [%cnzy %form])) + ?~ fom + (flaw cof leaf/"bad ++form:grad" ~) + ?. &(=(u.fom p.cay) =(u.fom p.coy)) + %+ flaw cof :_ :_ ~ + leaf/"mash on data of bad marks: {(trip p.cay)} {(trip p.coy)}" + leaf/"expected mark {(trip u.fom)}" + ?: =(q.q.cay q.q.coy) + (fine cof cay) + ?. (slab %mash p.gar) + (fine cof %null [%atom %n] ~) + %+ cope + %^ maul cof + (slap (slap pro [%cnzy %grad]) [%cnzy %mash]) + (slop q.cay q.coy) + |= [cof=cafe dif=vase] + (fine cof u.fom dif) + == + :: ++ kale :: mutate |= [cof=cafe kas=silk muy=(list (pair wing silk))] ^- (bolt gage) @@ -1051,6 +1095,12 @@ |. leaf/"ford: join {} {<`@p`(mug q.kas)>} {<`@p`(mug r.kas)>}" (join cof p.kas q.kas r.kas) + :: + %mash + %+ cool + |. + leaf/"ford: mash {} {<`@p`(mug q.kas)>} {<`@p`(mug r.kas)>}" + (mash cof p.kas q.kas r.kas) :: %mute (kale cof p.kas q.kas) %pact diff --git a/main/mar/txt/door.hook b/main/mar/txt/door.hook index 06e4884cf..630471705 100644 --- a/main/mar/txt/door.hook +++ b/main/mar/txt/door.hook @@ -84,5 +84,10 @@ $(wig [[%| (welp p.i.wig p.i.t.wig) (welp q.i.wig q.i.t.wig)] t.t.wig]) [i.wig $(wig t.wig)] -- + :: + ++ mash + |= [ali=(urge cord) bob=(urge cord)] + ^- (urge cord) + (fall (join ali bob) ali) -- -- From 939c129539c410d72b8ee2f744926020c838a7b0 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Mon, 6 Apr 2015 19:20:28 -0400 Subject: [PATCH 31/89] bug fixes --- main/app/merge/core.hook | 21 ++++++++++++++------- main/arvo/clay.hoon | 4 ++-- main/arvo/ford.hoon | 3 ++- main/mar/txt/door.hook | 2 ++ 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/main/app/merge/core.hook b/main/app/merge/core.hook index 67230954d..9804be906 100644 --- a/main/app/merge/core.hook +++ b/main/app/merge/core.hook @@ -49,7 +49,7 @@ ^+ +> +>.$(mow (welp new mow)) :: - ++ end ?:(?=([* ~ ~] merges) . (blab [0 %pass / %g %cide %$] ~)) + ++ end ?.(?=([* ~ ~] merges) . (blab [0 %pass / %g %cide %$] ~)) ++ win end:(blab [ost %give %nice ~] ~) ++ lose end:(blab [ost %give %mean ~] ~) :: @@ -61,8 +61,8 @@ |= [syd=desk her=@p sud=desk gem=$|(%auto germ)] ^+ +> %- blab :_ ~ - :* ost %pass /[syd] %g %mess [our.hid imp.hid] our.hid - %merge-args !>([our.hid syd her sud gem ~]) + :* ost %pass /[^syd] %g %mess [our.hid imp.hid] our.hid + %merge-args !>([syd her sud gem ~]) == :: ++ spam (corl blab ^spam) @@ -80,11 +80,15 @@ ++ work |= sih=sign ^+ +> + ~| [%working auto=auto gem=gem syd=syd her=her sud=sud] ?: ?=(%meld gem) ?: ?=(%g -.sih) ?: ?=(%nice +<.sih) - => (spam leaf/"set up scratch space" ~) - merge(syd (cat 3 syd '-scratch')) + => (spam leaf/"%melding %{(trip sud)} into scratch space" ~) + %- blab :_ ~ + :* ost %pass /[syd] %c %merg our.hid + (cat 3 syd '-scratch') her sud gem + == =+ :- "failed to set up conflict resolution scratch space" "I'm out of ideas" lose:(spam leaf/-< leaf/-> ~) @@ -139,8 +143,9 @@ lose:(spam leaf/- >p.p.are.sih< q.p.are.sih) => .(gem %meld) =+ tic=(cat 3 syd '-scratch') - => =+ "%mate merge failed with conflicts, %melding into %{(trip tic)}" - [tic=tic (spam leaf/- ~)] + => =+ :- "%mate merge failed with conflicts," + "setting up scratch space at %{(trip tic)}" + [tic=tic (spam leaf/-< leaf/-> ~)] (fancy-merge tic our.hid syd %auto) == -- @@ -155,9 +160,11 @@ ++ pour |= [ost=bone pax=path sih=*] ^- [(list move) _+>.$] + ~| [%pour-pax pax] =+ ((soft sign) sih) ?~ - [(spam leaf/"not working so well" >sih< ~) +>.$] + ~| [%pour-sih -.sih +<.sih] abet:(work:(me ost -.pax) u) :: ++ spam diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index ba1fd80b2..0d91891fb 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -951,9 +951,9 @@ ?: =(let.dom 0) ~ q:(aeon-to-yaki let.dom) - =+ bol=(~(get by hat) pax) + =+ lol=(~(get by hat) pax) |- ^- silk - ?: =([~ lob] bol) + ?: =([~ lob] lol) =+ (need (need (read-x let.dom pax))) ?> ?=(%& -<) [%done ~ p.-] diff --git a/main/arvo/ford.hoon b/main/arvo/ford.hoon index c28869695..3b7973c3f 100644 --- a/main/arvo/ford.hoon +++ b/main/arvo/ford.hoon @@ -1487,7 +1487,8 @@ (flaw cof leaf/"{} mark on bad data" ~) =+ dif=((soft (urge cord)) q.q.coy) ?~ dif - (flaw cof leaf/"{} data with bad diff" ~) + =- (flaw cof leaf/"{} data with bad diff" -) + [>type=p.q.coy< >shouldbe=-:!>(*(urge cord))< ~] =+ pac=(role (lurk (lore (cat 3 u.txt '\0a')) u.dif)) (fine cof p.cay [%atom %t] (end 3 (dec (met 3 pac)) pac)) %+ cope (fang cof p.cay) diff --git a/main/mar/txt/door.hook b/main/mar/txt/door.hook index 630471705..667a9de30 100644 --- a/main/mar/txt/door.hook +++ b/main/mar/txt/door.hook @@ -24,10 +24,12 @@ |= tyt=wain ^- (urge cord) (lusk txt tyt (loss txt tyt)) + :: ++ pact |= dif=(urge cord) ^- wain (lurk txt dif) + :: ++ join |= [ali=(urge cord) bob=(urge cord)] ^- (unit (urge cord)) From c7d8cfd114470ebbc86dd6e4fef818e33d068125 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Tue, 7 Apr 2015 18:24:16 -0400 Subject: [PATCH 32/89] mostly working userlevel conflict merge --- main/app/merge/core.hook | 164 ++++++++++++++++++++++++++++++++++----- main/arvo/clay.hoon | 12 ++- main/arvo/ford.hoon | 17 +++- 3 files changed, 169 insertions(+), 24 deletions(-) diff --git a/main/app/merge/core.hook b/main/app/merge/core.hook index 9804be906..2d576847b 100644 --- a/main/app/merge/core.hook +++ b/main/app/merge/core.hook @@ -1,13 +1,15 @@ :: Desk sync -:: +:: :::: /hook/core/sync/app :: |% +++ bead ,[p=(set beam) q=gage] ++ merge-state $: auto=? gem=germ her=@p sud=@tas + cas=case == ++ gift $% [%mean p=ares] @@ -17,7 +19,11 @@ ++ move ,[p=bone q=(mold note gift)] ++ note $% $: %c - $% [%merg p=@p q=@tas r=@p s=@tas t=germ] + $% [%info p=@p q=@tas r=nori] + [%merg p=@p q=@tas r=@p s=@tas t=germ] + == == + $: %f + $% [%exec p=@p q=beak r=(unit silk)] == == $: %g $% [%cide span] @@ -26,11 +32,37 @@ ++ sign $% $: %c $% [%mere are=(each (set path) (pair term (list tank)))] + == == + $: %f + $% [%made p=(each bead (list tank))] == == $: %g $% [%mean p=ares] [%nice ~] == == == +++ silk + $& [p=silk q=silk] :: cons + $% [%bake p=mark q=beam r=path] :: local synthesis + [%boil p=mark q=beam r=path] :: general synthesis + [%bunt p=mark] :: example of mark + [%call p=silk q=silk] :: slam + [%cast p=mark q=silk] :: translate + [%diff p=silk q=silk] :: diff + [%done p=(set beam) q=gage] :: literal + [%dude p=tank q=silk] :: error wrap + [%dune p=(set beam) q=(unit gage)] :: unit literal + [%file p=beam] :: from clay + [%join p=mark q=silk r=silk] :: merge + [%mash p=mark q=silk r=silk] :: merge + [%mute p=silk q=(list (pair wing silk))] :: mutant + [%pact p=silk q=silk] :: patch + [%reef ~] :: kernel reef + [%ride p=twig q=silk] :: silk thru twig + [%tabl p=(list (pair silk silk))] :: list + [%vale p=mark q=ship r=*] :: validate [our his] + [%volt p=(set beam) q=(cask ,*)] :: unsafe add type + == +++ tage ,[[%tabl p=(list (pair marc marc))] q=vase] :: %tabl gage -- !: :::: @@ -38,11 +70,14 @@ |_ [hid=hide merges=(map desk merge-state)] ++ me |= [ost=bone syd=desk] - =+ `merge-state`(fall (~(get by merges) syd) *merge-state) + =+ ^- merge-state + %+ fall (~(get by merges) syd) + =+ *merge-state + %_(- cas [%da lat.hid]) =| mow=(list move) |% ++ abet - [(flop mow) ..me(merges (~(put by merges) syd auto gem her sud))] + [(flop mow) ..me(merges (~(put by merges) syd auto gem her sud cas))] :: ++ blab |= new=(list move) @@ -53,6 +88,23 @@ ++ win end:(blab [ost %give %nice ~] ~) ++ lose end:(blab [ost %give %mean ~] ~) :: + ++ bead-to-tage + |= res=bead + ^- tage + ?@ p.q.res + ~|(%bad-marc !!) + q.res + :: + ++ tage-to-cages + |= tab=tage + ^- (list (pair cage cage)) + ?~ p.tab + ~ + :_ $(p.tab t.p.tab, q.tab (slot 3 q.tab)) + ~| %strange-gage + :- [?^(p.i.p.tab !! p.i.p.tab) (slot 4 q.tab)] + [?^(q.i.p.tab !! q.i.p.tab) (slot 5 q.tab)] + :: ++ merge ^+ . (blab [ost %pass /[syd] %c %merg our.hid syd her sud gem] ~) @@ -77,12 +129,22 @@ => $(gim %fine) .(auto &) :: +:: =+ (trip (cat 3 syd '-scratch')) +:: =+ ^- (list tape) +:: :~ "done setting up scratch space in %{-}" +:: "please resolve conflicts in the following files and run" +:: ":merge %{(trip syd)} our %{-}" +:: "" +:: "conflicts in:" +:: == +:: win:(spam (welp (turn - (cury same %leaf)) [>p.are.sih< ~])) ++ work |= sih=sign ^+ +> ~| [%working auto=auto gem=gem syd=syd her=her sud=sud] ?: ?=(%meld gem) - ?: ?=(%g -.sih) + ?- -.sih + %g ?: ?=(%nice +<.sih) => (spam leaf/"%melding %{(trip sud)} into scratch space" ~) %- blab :_ ~ @@ -92,22 +154,86 @@ =+ :- "failed to set up conflict resolution scratch space" "I'm out of ideas" lose:(spam leaf/-< leaf/-> ~) - ?> ?=(%c -.sih) - ?: ?=(%& -.are.sih) - ?. auto - =+ "successfully merged with strategy {}" - win:(spam leaf/- ?~(p.are.sih ~ [>`(set path)`p.are.sih< ~])) + :: + %c + ?: ?=(%& -.are.sih) + ?. auto + =+ "successfully merged with strategy {}" + win:(spam leaf/- ?~(p.are.sih ~ [>`(set path)`p.are.sih< ~])) + =+ "mashing conflicts" + => .(+>.$ (spam leaf/- ~)) + =+ tic=(cat 3 syd '-scratch') + %- blab :_ ~ + :* ost %pass /[syd] + %f %exec our.hid [our.hid tic %da lat.hid] ~ %tabl + ^- (list (pair silk silk)) + %+ turn (~(tap in p.are.sih)) + |= pax=path + ^- (pair silk silk) + :- [%done ~ %path -:!>(*path) pax] + =+ base=[%file [our.hid tic %da lat.hid] (flop pax)] + =+ alis=[%file [her sud cas] (flop pax)] + =+ bobs=[%file [our.hid syd %da lat.hid] (flop pax)] + =+ ^- for=mark + =+ (slag (dec (lent pax)) pax) + ?~(- %$ i.-) + [%mash for [%diff base alis] [%diff base bobs]] + == + =+ "failed to merge with strategy {}" + lose:(spam leaf/- q.p.are.sih) + :: + %f + ?: ?=(%| -.p.sih) + =+ "failed to mash" + lose:(spam leaf/- p.p.sih) + =+ ^- can=(list (pair path (unit miso))) + %+ turn (tage-to-cages (bead-to-tage p.p.sih)) + |= [pax=cage dif=cage] + ^- (pair path (unit miso)) + ?. ?=(%path p.pax) + ~| "strange path mark: {}" + !! + [((hard path) q.q.pax) ?:(?=(%null p.dif) ~ `[%dif dif])] + =+ notated=(skid can |=([path a=(unit miso)] ?=(^ a))) + =+ annotated=`(list path)`(turn `(list (pair path ,*))`-.notated head) + =+ unnotated=`(list path)`(turn `(list (pair path ,*))`+.notated head) =+ (trip (cat 3 syd '-scratch')) - =+ ^- (list tape) - :~ "done setting up scratch space in %{-}" - "please resolve conflicts in the following files and run" - ":merge %{(trip syd)} {} %{-}" - "" - "conflicts in:" + =+ ^- tan=(list tank) + %- zing + ^- (list (list tank)) + :~ :~ leaf/"done setting up scratch space in %{-}" + leaf/"please resolve conflicts in the following files and run" + leaf/":merge %{(trip syd)} our %{-}" + == + ?~ annotated + ~ + :~ leaf/"" + leaf/"annotated conflicts in:" + >annotated< + == + ?~ unnotated + ~ + :~ leaf/"" + leaf/"some conflicts could not be annontated." + leaf/"for these, the scratch space contains" + leaf/"the most recent common ancestor of the" + leaf/"conflicting content." + leaf/"" + leaf/"unannotated conflicts in:" + >unnotated< + == == - win:(spam (welp (turn - (cury same %leaf)) [>p.are.sih< ~])) - =+ "failed to merge with strategy {}" - lose:(spam leaf/- q.p.are.sih) + =< win + %- blab:(spam tan) + :_ ~ + :* ost %pass /[syd] %c %info + our.hid (cat 3 syd '-scratch') + %& *cart + %+ murn can + |= [p=path q=(unit miso)] + `(unit (pair path miso))`?~(q ~ `[p u.q]) + == + == ?> ?=(%c -.sih) ?: ?=(%& -.are.sih) =+ "successfully merged with strategy {}" diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index 0d91891fb..ca24603e6 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -382,6 +382,7 @@ |= [a=path b=miso] ^- ? ?| ?=(%del -.b) + ?=(%dif -.b) ?& ?=(%ins -.b) ?=(%mime p.p.b) =+ (slag (dec (lent a)) a) @@ -415,8 +416,9 @@ ++ silkify |= [wen=@da pax=path mis=miso] ^- [duct path note] + ~| [%silkifying pax -.mis] :- hen - ?+ -.mis !! + ?+ -.mis !! %mut :- [%diffing (scot %p who) syd (scot %da wen) pax] :^ %f %exec who :+ [who syd %da wen] ~ @@ -1660,7 +1662,7 @@ ?~ - ~| %meet-strange-diff-no-base !! - (make-delta [(lobe-to-mark u.-) u.-] cay) + (make-delta [(lobe-to-mark u.-) u.-] [p q.q]:cay) [(~(put by hat) pax p.bol) (~(put by lat) p.bol bol)] =. hat %- ~(uni by old) @@ -2243,8 +2245,10 @@ ?: ?=(%& -.p.+.q.hin) ~& ['merge succeeded' p.p.+.q.hin] [[- ~] ..^$] - ~& :+ 'merge failed' - p.p.p.+.q.hin + ~& :^ "merge failed" + "please manually merge the desks with" + ":merge %{(trip syd)} {} %{(trip sud)}" + :- p.p.p.+.q.hin (turn q.p.p.+.q.hin |=(tank ~(ram re +<))) [[- ~] ..^$] :: diff --git a/main/arvo/ford.hoon b/main/arvo/ford.hoon index 3b7973c3f..5d6a25dc9 100644 --- a/main/arvo/ford.hoon +++ b/main/arvo/ford.hoon @@ -71,6 +71,7 @@ [%done p=(set beam) q=gage] :: literal [%dude p=tank q=silk] :: error wrap [%dune p=(set beam) q=(unit gage)] :: unit literal + [%file p=beam] :: from clay [%join p=mark q=silk r=silk] :: merge [%mash p=mark q=silk r=silk] :: merge [%mute p=silk q=(list (pair wing silk))] :: mutant @@ -854,6 +855,16 @@ |= [cof=cafe arc=arch] (fine cof (lark wox arc)) :: + ++ lear :: load vase + |= [cof=cafe bem=beam] + ^- (bolt cage) + =+ von=(ska ~ %cx bem) + ?~ von + [p=*cafe q=[%1 [[%x bem ~] ~ ~]]] + ?~ u.von + (flaw cof leaf/"lear: file unavailable" (smyt (tope bem)) ~) + (fine cof u.u.von) + :: ++ lend :: load arch |= [cof=cafe bem=beam] ^- (bolt arch) @@ -868,7 +879,7 @@ ?~ von [p=*cafe q=[%1 [[%x bem ~] ~ ~]]] ?~ u.von - (flaw cof leaf/"file unavailable" (smyt (tope bem)) ~) + (flaw cof leaf/"liar: file unavailable" (smyt (tope bem)) ~) (fine cof q.u.u.von) :: ++ lily :: translation targets @@ -1089,6 +1100,10 @@ %dune ?~ q.kas [cof [%2 [%leaf "no data"]~]] $(kas [%done p.kas u.q.kas]) + :: + %file + %+ cool |.(leaf/"ford: file {}") + (lear cof p.kas) :: %join %+ cool From 9e10039dfc5b0947db3cf9260dbd8ceb26658526 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Wed, 8 Apr 2015 20:51:34 -0400 Subject: [PATCH 33/89] bug fixing --- main/app/merge/core.hook | 12 ++++++------ main/arvo/clay.hoon | 11 +++++++++-- main/arvo/ford.hoon | 9 +++++++++ 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/main/app/merge/core.hook b/main/app/merge/core.hook index 2d576847b..9a50a3dbb 100644 --- a/main/app/merge/core.hook +++ b/main/app/merge/core.hook @@ -107,13 +107,13 @@ :: ++ merge ^+ . - (blab [ost %pass /[syd] %c %merg our.hid syd her sud gem] ~) + (blab [ost %pass /[syd]/merge %c %merg our.hid syd her sud gem] ~) :: ++ fancy-merge :: recurse |= [syd=desk her=@p sud=desk gem=$|(%auto germ)] ^+ +> %- blab :_ ~ - :* ost %pass /[^syd] %g %mess [our.hid imp.hid] our.hid + :* ost %pass /[^syd]/fancy %g %mess [our.hid imp.hid] our.hid %merge-args !>([syd her sud gem ~]) == :: @@ -141,14 +141,14 @@ ++ work |= sih=sign ^+ +> - ~| [%working auto=auto gem=gem syd=syd her=her sud=sud] + ~& > [%working auto=auto gem=gem syd=syd her=her sud=sud] ?: ?=(%meld gem) ?- -.sih %g ?: ?=(%nice +<.sih) => (spam leaf/"%melding %{(trip sud)} into scratch space" ~) %- blab :_ ~ - :* ost %pass /[syd] %c %merg our.hid + :* ost %pass /[syd]/scratch %c %merg our.hid (cat 3 syd '-scratch') her sud gem == =+ :- "failed to set up conflict resolution scratch space" @@ -164,7 +164,7 @@ => .(+>.$ (spam leaf/- ~)) =+ tic=(cat 3 syd '-scratch') %- blab :_ ~ - :* ost %pass /[syd] + :* ost %pass /[syd]/mash %f %exec our.hid [our.hid tic %da lat.hid] ~ %tabl ^- (list (pair silk silk)) %+ turn (~(tap in p.are.sih)) @@ -226,7 +226,7 @@ =< win %- blab:(spam tan) :_ ~ - :* ost %pass /[syd] %c %info + :* ost %pass /[syd]/dash %c %info our.hid (cat 3 syd '-scratch') %& *cart %+ murn can diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index ca24603e6..7b53014c4 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -198,14 +198,17 @@ ++ aver :: read |= mun=mood ^- (unit (unit (each cage silk))) + ~? =(for ~zod) [%avering mun] ?: &(=(p.mun %u) !=(p.q.mun now)) :: prevent bad things ~& [%clay-fail p.q.mun %now now] !! =+ ezy=?~(ref ~ (~(get by haw.u.ref) mun)) ?^ ezy `(bind u.ezy (cury same %&)) + ~? =(for ~zod) [%case-to-aeoning mun] =+ nao=(case-to-aeon:ze q.mun) :: ~& [%aver-mun nao [%from syd lim q.mun]] + ~? =(for ~zod) [%reading-at-aeon mun] ?~(nao ~ (read-at-aeon:ze u.nao mun)) :: ++ made-to-tage @@ -953,7 +956,7 @@ ?: =(let.dom 0) ~ q:(aeon-to-yaki let.dom) - =+ lol=(~(get by hat) pax) + =+ lol=`(unit lobe)`?.(=(~ ref) `0vsen.tinel (~(get by hat) pax)) |- ^- silk ?: =([~ lob] lol) =+ (need (need (read-x let.dom pax))) @@ -1252,17 +1255,20 @@ ++ read-x |= [yon=aeon pax=path] ^- (unit (unit (each cage silk))) + ~? =(for ~zod) [%reading-x yon pax] =+ tak=(~(get by hit.dom) yon) ?~ tak ~ ?: &(?=(~ ref) =(yon let.dom)) `(bind q.ank:(descend-path:(zu ank.dom) pax) (corl (cury same %&) tail)) + ~? =(for ~zod) [%coming-along yon pax] =+ yak=(tako-to-yaki u.tak) =+ lob=(~(get by q.yak) pax) ?~ lob [~ ~] =+ mar=(lobe-to-mark u.lob) ?. ?=(?(%hoon %hook) mar) + ~? =(for ~zod) [%not-hooning yon pax] [~ ~ %| (lobe-to-silk pax u.lob)] :^ ~ ~ %& :+ mar [%atom %t] @@ -2197,6 +2203,7 @@ ++ scry :: inspect |= [fur=(unit (set monk)) ren=@tas his=ship syd=desk lot=coin tyl=path] ^- (unit (unit cage)) + ~? =(his ~zod) [%scrying ren syd lot tyl] =+ got=(~(has by fat.ruf) his) =+ luk=?.(?=(%$ -.lot) ~ ((soft case) p.lot)) ?~ luk [~ ~] @@ -2247,7 +2254,7 @@ [[- ~] ..^$] ~& :^ "merge failed" "please manually merge the desks with" - ":merge %{(trip syd)} {} %{(trip sud)}" + ":merge %{(trip syd)} {(scow %p her)} %{(trip sud)}" :- p.p.p.+.q.hin (turn q.p.p.+.q.hin |=(tank ~(ram re +<))) [[- ~] ..^$] diff --git a/main/arvo/ford.hoon b/main/arvo/ford.hoon index 5d6a25dc9..a231c691a 100644 --- a/main/arvo/ford.hoon +++ b/main/arvo/ford.hoon @@ -712,6 +712,7 @@ ++ mash |= [cof=cafe for=mark kas=silk kos=silk] ^- (bolt gage) + ~& > [%lets-see-if-we-cannae-be-mashing for] %. [cof kas kos] ;~ cope ;~ coax @@ -858,7 +859,14 @@ ++ lear :: load vase |= [cof=cafe bem=beam] ^- (bolt cage) + ~& > [%a-bit-leary bem] + =+ ral=(~(get by keg) %cx bem) + ?^ ral + ~& > %already-done + (fine cof u.ral) + ~& > %not-already-done =+ von=(ska ~ %cx bem) + ~& > [%at-least-cx-worked bem] ?~ von [p=*cafe q=[%1 [[%x bem ~] ~ ~]]] ?~ u.von @@ -1102,6 +1110,7 @@ $(kas [%done p.kas u.q.kas]) :: %file + %+ cool |.(leaf/"ford: file {}") (lear cof p.kas) :: From b62bacbf1d5a85fda1a67b08eb636513382f10b8 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Mon, 13 Apr 2015 17:29:39 -0400 Subject: [PATCH 34/89] annotated merges seem to be working --- main/app/merge/core.hook | 19 +++-- main/arvo/clay.hoon | 39 ++++----- main/arvo/ford.hoon | 40 +++++----- main/mar/mime/door.hook | 2 +- main/mar/txt/door.hook | 166 ++++++++++++++++++++++++++++++++++++++- 5 files changed, 211 insertions(+), 55 deletions(-) diff --git a/main/app/merge/core.hook b/main/app/merge/core.hook index 9a50a3dbb..1a9176695 100644 --- a/main/app/merge/core.hook +++ b/main/app/merge/core.hook @@ -16,6 +16,7 @@ [%nice ~] [%rush %tang (list tank)] == +++ milk (trel ship desk silk) ++ move ,[p=bone q=(mold note gift)] ++ note $% $: %c @@ -53,7 +54,7 @@ [%dune p=(set beam) q=(unit gage)] :: unit literal [%file p=beam] :: from clay [%join p=mark q=silk r=silk] :: merge - [%mash p=mark q=silk r=silk] :: merge + [%mash p=mark q=milk r=milk] :: merge [%mute p=silk q=(list (pair wing silk))] :: mutant [%pact p=silk q=silk] :: patch [%reef ~] :: kernel reef @@ -141,7 +142,7 @@ ++ work |= sih=sign ^+ +> - ~& > [%working auto=auto gem=gem syd=syd her=her sud=sud] + ~| [%working auto=auto gem=gem syd=syd her=her sud=sud] ?: ?=(%meld gem) ?- -.sih %g @@ -174,10 +175,12 @@ =+ base=[%file [our.hid tic %da lat.hid] (flop pax)] =+ alis=[%file [her sud cas] (flop pax)] =+ bobs=[%file [our.hid syd %da lat.hid] (flop pax)] + =+ dali=[%diff base alis] + =+ dbob=[%diff base bobs] =+ ^- for=mark =+ (slag (dec (lent pax)) pax) ?~(- %$ i.-) - [%mash for [%diff base alis] [%diff base bobs]] + [%mash for [her sud dali] [our.hid syd dbob]] == =+ "failed to merge with strategy {}" lose:(spam leaf/- q.p.are.sih) @@ -201,7 +204,8 @@ =+ ^- tan=(list tank) %- zing ^- (list (list tank)) - :~ :~ leaf/"done setting up scratch space in %{-}" + :~ :~ leaf/"" + leaf/"done setting up scratch space in %{-}" leaf/"please resolve conflicts in the following files and run" leaf/":merge %{(trip syd)} our %{-}" == @@ -209,18 +213,19 @@ ~ :~ leaf/"" leaf/"annotated conflicts in:" - >annotated< + >`(list path)`annotated< == ?~ unnotated ~ :~ leaf/"" - leaf/"some conflicts could not be annontated." + leaf/"some conflicts could not be annotated." leaf/"for these, the scratch space contains" leaf/"the most recent common ancestor of the" leaf/"conflicting content." leaf/"" + leaf/"unannotated conflicts in:" - >unnotated< + >`(list path)`unnotated< == == =< win diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index 7b53014c4..5ca434384 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -198,17 +198,14 @@ ++ aver :: read |= mun=mood ^- (unit (unit (each cage silk))) - ~? =(for ~zod) [%avering mun] ?: &(=(p.mun %u) !=(p.q.mun now)) :: prevent bad things ~& [%clay-fail p.q.mun %now now] !! =+ ezy=?~(ref ~ (~(get by haw.u.ref) mun)) ?^ ezy `(bind u.ezy (cury same %&)) - ~? =(for ~zod) [%case-to-aeoning mun] =+ nao=(case-to-aeon:ze q.mun) :: ~& [%aver-mun nao [%from syd lim q.mun]] - ~? =(for ~zod) [%reading-at-aeon mun] ?~(nao ~ (read-at-aeon:ze u.nao mun)) :: ++ made-to-tage @@ -519,19 +516,19 @@ ++ take-patch |= res=(each bead (list tank)) ^+ +> - ~& > %taking-patch + :: ~& %taking-patch ?: ?=(%| -.res) %_ +>.$ dok ~ yel [[hen %note '!' %rose [" " "" ""] leaf/"clay patch failed" p.res] yel] == - ~& > %editing + :: ~& %editing =^ hat +>.$ (edit:ze now %& *cart ?~(dok ~|(%no-changes !!) sot.u.dok)) - ~& > %edited + :: ~& %edited =. +>.$ wake - ~& > %woked + :: ~& %woked ?~ dok ~& %no-dok +>.$ ?^ lon.u.dok ~& %not-done-diffing !! => @@ -547,7 +544,7 @@ ?^ lon.u.dok ~& %not-done-diffing !! =+ cay=q.p.res ?@ p.cay ~| %patch-bad-marc !! - ~& > %canning + :: ~& %canning =+ ^= can |- ^- (list ,[path cage]) ?~ p.p.cay @@ -565,10 +562,10 @@ !! :- ((hard path) -.q.coy) [q.i.p.p.cay (slot 3 coy)] - ~& > %canned - ~& > %checking-out + :: ~& %canned + :: ~& %checking-out =. ank.dom (checkout-ankh:ze (mo can)) - ~& > %checked-out + :: ~& %checked-out ?~ hez +>.$(dok ~) =+ ^= ceq |= a=miso @@ -576,8 +573,8 @@ &(?=(%ins -.a) ?=(%mime -.+.a)) &(?=(%mut -.a) ?=(%mime -.+>.a)) == - ~& > %forming-ergo - =- ~& > %formed-ergo - + :: ~& %forming-ergo + :: =- ~& %formed-ergo - %_ +>.$ dok ~ tag :: ?~(hez reg :_(reg [u.hez [%ergo who syd let.dom]])) @@ -904,9 +901,9 @@ == =+ nao=(case-to-aeon:ze q.p.q.i.xiq) ?~ nao $(xiq t.xiq, xaq [i.xiq xaq]) - ~& > %reading-at-aeon + :: ~& %reading-at-aeon =+ vid=(read-at-aeon:ze u.nao p.q.i.xiq) - ~& > %red-at-aeon + :: ~& %red-at-aeon ?~ vid ~& [%oh-well mood=p.q.i.xiq] $(xiq t.xiq, xaq [i.xiq xaq]) $(xiq t.xiq, ..wake (balk p.i.xiq u.vid p.q.i.xiq)) :: @@ -1255,20 +1252,17 @@ ++ read-x |= [yon=aeon pax=path] ^- (unit (unit (each cage silk))) - ~? =(for ~zod) [%reading-x yon pax] =+ tak=(~(get by hit.dom) yon) ?~ tak ~ ?: &(?=(~ ref) =(yon let.dom)) `(bind q.ank:(descend-path:(zu ank.dom) pax) (corl (cury same %&) tail)) - ~? =(for ~zod) [%coming-along yon pax] =+ yak=(tako-to-yaki u.tak) =+ lob=(~(get by q.yak) pax) ?~ lob [~ ~] =+ mar=(lobe-to-mark u.lob) ?. ?=(?(%hoon %hook) mar) - ~? =(for ~zod) [%not-hooning yon pax] [~ ~ %| (lobe-to-silk pax u.lob)] :^ ~ ~ %& :+ mar [%atom %t] @@ -1448,15 +1442,15 @@ :: %fine ?: =(r.ali.dat r.bob.dat) - ~& > [%fine-trivial ali= bob= r.ali.dat r.bob.dat] + ~& [%fine-trivial ali= bob= r.ali.dat r.bob.dat] (done:he ~) ?: (~(has in (reachable-takos r.bob.dat)) r.ali.dat) - ~& > [%fine-mostly-trivial ali= bob=] + ~& [%fine-mostly-trivial ali= bob=] (done:he ~) ?. (~(has in (reachable-takos r.ali.dat)) r.bob.dat) - ~& > [%fine-not-so-trivial ali= bob=] + ~& [%fine-not-so-trivial ali= bob=] (error:he %bad-fine-merge ~) - ~& > [%fine-lets-go ali= bob=] + ~& [%fine-lets-go ali= bob=] =. new.dat ali.dat =. erg.dat %- mo ^- (list ,[path ?]) @@ -2203,7 +2197,6 @@ ++ scry :: inspect |= [fur=(unit (set monk)) ren=@tas his=ship syd=desk lot=coin tyl=path] ^- (unit (unit cage)) - ~? =(his ~zod) [%scrying ren syd lot tyl] =+ got=(~(has by fat.ruf) his) =+ luk=?.(?=(%$ -.lot) ~ ((soft case) p.lot)) ?~ luk [~ ~] diff --git a/main/arvo/ford.hoon b/main/arvo/ford.hoon index a231c691a..18f92dee5 100644 --- a/main/arvo/ford.hoon +++ b/main/arvo/ford.hoon @@ -50,6 +50,7 @@ ++ kiss :: in request ->$ $% [%exec p=@p q=beak r=(unit silk)] :: make / kill == :: +++ milk (trel ship desk silk) :: sourced silk ++ move ,[p=duct q=(mold note gift)] :: local move ++ note :: out request $-> $% $: %c :: to %clay @@ -73,7 +74,7 @@ [%dune p=(set beam) q=(unit gage)] :: unit literal [%file p=beam] :: from clay [%join p=mark q=silk r=silk] :: merge - [%mash p=mark q=silk r=silk] :: merge + [%mash p=mark q=milk r=milk] :: annotate [%mute p=silk q=(list (pair wing silk))] :: mutant [%pact p=silk q=silk] :: patch [%plan p=beam q=spur r=hood] :: structured assembly @@ -710,10 +711,9 @@ == :: ++ mash - |= [cof=cafe for=mark kas=silk kos=silk] + |= [cof=cafe for=mark mas=milk mos=milk] ^- (bolt gage) - ~& > [%lets-see-if-we-cannae-be-mashing for] - %. [cof kas kos] + %. [cof r.mas r.mos] ;~ cope ;~ coax |=([cof=cafe p=silk q=silk] (make cof p)) @@ -733,7 +733,8 @@ =+ too=((soft ,@tas) q:(slap gar [%cnzy %sted])) ?~ too (flaw cof leaf/"bad ++sted:grad" ~) - (make cof %mash u.too [%done ~ cay] [%done ~ coy]) + %+ make cof + [%mash u.too [p.mas q.mas [%done ~ cay]] [p.mos q.mos [%done ~ coy]]] =+ fom=((soft ,@tas) q:(slap gar [%cnzy %form])) ?~ fom (flaw cof leaf/"bad ++form:grad" ~) @@ -748,7 +749,12 @@ %+ cope %^ maul cof (slap (slap pro [%cnzy %grad]) [%cnzy %mash]) - (slop q.cay q.coy) + ;: slop + (slop [[%atom %p] p.mas] [[%atom %tas] q.mas]) + (slop [[%atom %p] p.mos] [[%atom %tas] q.mos]) + q.cay + q.coy + == |= [cof=cafe dif=vase] (fine cof u.fom dif) == @@ -834,7 +840,7 @@ |= [cof=cafe bem=beam] ^- (bolt beam) ?: ?=(%ud -.r.bem) (fine cof bem) - =+ von=(ska ~ %cw bem(s ~)) + =+ von=(save ~ %cw bem(s ~)) ?~ von [p=cof q=[%1 [%w bem ~] ~ ~]] (fine cof bem(r [%ud ((hard ,@) +.+:(need u.von))])) :: @@ -859,14 +865,7 @@ ++ lear :: load vase |= [cof=cafe bem=beam] ^- (bolt cage) - ~& > [%a-bit-leary bem] - =+ ral=(~(get by keg) %cx bem) - ?^ ral - ~& > %already-done - (fine cof u.ral) - ~& > %not-already-done - =+ von=(ska ~ %cx bem) - ~& > [%at-least-cx-worked bem] + =+ von=(save ~ %cx bem) ?~ von [p=*cafe q=[%1 [[%x bem ~] ~ ~]]] ?~ u.von @@ -876,14 +875,14 @@ ++ lend :: load arch |= [cof=cafe bem=beam] ^- (bolt arch) - =+ von=(ska ~ %cy bem) + =+ von=(save ~ %cy bem) ?~ von [p=cof q=[%1 [%y bem ~] ~ ~]] (fine cof ((hard arch) q.q:(need u.von))) :: ++ liar :: load vase |= [cof=cafe bem=beam] ^- (bolt vase) - =+ von=(ska ~ %cx bem) + =+ von=(save ~ %cx bem) ?~ von [p=*cafe q=[%1 [[%x bem ~] ~ ~]]] ?~ u.von @@ -1020,7 +1019,7 @@ ^- (bolt vase) %+ cope (mail cof p.vax gen) |= [cof=cafe typ=type fol=nock] - %+ (coup cof) (mock [q.vax fol] (mole (slod (save ska)))) + %+ (coup cof) (mock [q.vax fol] (mole (slod save))) |=(val=* `vase`[typ val]) :: ++ make :: reduce silk @@ -1189,7 +1188,7 @@ ^- (bolt vase) %+ cope (malt cof p.gat p.sam) |= [cof=cafe typ=type] - %+ (coup cof) (mong [q.gat q.sam] (mole (slod (save ska)))) + %+ (coup cof) (mong [q.gat q.sam] (mole (slod save))) |=(val=* `vase`[typ val]) :: ++ meow :: assemble @@ -1557,14 +1556,13 @@ exec(q.kig (~(del by q.kig) tik), keg (~(put by keg) [- bem] r.u.rot)) :: ++ save - |= sky=sled ^- sled |= [(unit (set monk)) tem=term bem=beam] ^- (unit (unit cage)) =+ (~(get by keg) tem bem) ?^ - ``u.- - (sky +<.$) + (ska +<.$) -- -- :: diff --git a/main/mar/mime/door.hook b/main/mar/mime/door.hook index e7e52af92..7c699f828 100644 --- a/main/mar/mime/door.hook +++ b/main/mar/mime/door.hook @@ -13,6 +13,6 @@ ++ form %mime ++ diff |=(mime +<) ++ pact |=(mime +<) - ++ join |=([mime mime] `(unit mime)``+<-) + ++ join |=([mime mime] `(unit mime)`~) -- -- diff --git a/main/mar/txt/door.hook b/main/mar/txt/door.hook index 667a9de30..2cf7285eb 100644 --- a/main/mar/txt/door.hook +++ b/main/mar/txt/door.hook @@ -1,4 +1,4 @@ -:: maybeze +:: :::: /hook/door/term-line/mar :: /? 314 @@ -27,6 +27,7 @@ :: ++ pact |= dif=(urge cord) + ~| [%pacting dif] ^- wain (lurk txt dif) :: @@ -60,6 +61,7 @@ |=(cud=(urge cord) [i.bob cud]) ~ == + :: %| ?- -.i.bob %| ~ @@ -88,8 +90,166 @@ -- :: ++ mash - |= [ali=(urge cord) bob=(urge cord)] + |= [als=[ship desk] bos=[ship desk] ali=(urge cord) bob=(urge cord)] ^- (urge cord) - (fall (join ali bob) ali) + |^ + =. ali (clean ali) + =. bob (clean bob) + |- ^- (urge cord) + ?~ ali bob + ?~ bob ali + ?- -.i.ali + %& + ?- -.i.bob + %& + ?: =(p.i.ali p.i.bob) + [i.ali $(ali t.ali, bob t.bob)] + ?: (gth p.i.ali p.i.bob) + [i.bob $(p.i.ali (sub p.i.ali p.i.bob), bob t.bob)] + [i.ali $(ali t.ali, p.i.bob (sub p.i.bob p.i.ali))] + :: + %| + ?: =(p.i.ali (lent p.i.bob)) + [i.bob $(ali t.ali, bob t.bob)] + ?: (gth p.i.ali (lent p.i.bob)) + [i.bob $(p.i.ali (sub p.i.ali (lent p.i.bob)), bob t.bob)] + =+ ^- [fic=(unce cord) ali=(urge cord) bob=(urge cord)] + (resolve ali bob) + [fic $(ali ali, bob bob)] + :: ~ :: here, alice is good for a while, but not for the whole + == :: length of bob's changes + :: + %| + ?- -.i.bob + %| + =+ ^- [fic=(unce cord) ali=(urge cord) bob=(urge cord)] + (resolve ali bob) + [fic $(ali ali, bob bob)] + :: + %& + ?: =(p.i.bob (lent p.i.ali)) + [i.ali $(ali t.ali, bob t.bob)] + ?: (gth p.i.bob (lent p.i.ali)) + [i.ali $(ali t.ali, p.i.bob (sub p.i.bob (lent p.i.ali)))] + =+ ^- [fic=(unce cord) ali=(urge cord) bob=(urge cord)] + (resolve ali bob) + [fic $(ali ali, bob bob)] + == + == + :: + ++ annotate :: annotate conflict + |= $: ali=(list ,@t) + bob=(list ,@t) + bas=(list ,@t) + == + ^- (list ,@t) + %- zing + ^- (list (list ,@t)) + %- flop + ^- (list (list ,@t)) + :- :_ ~ + %^ cat 3 '<<<<<<<<<<<<' + %^ cat 3 ' ' + %^ cat 3 `@t`(scot %p -.bos) + %^ cat 3 '/' + +.bos + :- bob + :- ~['------------'] + :- bas + :- ~['++++++++++++'] + :- ali + :- :_ ~ + %^ cat 3 '>>>>>>>>>>>>' + %^ cat 3 ' ' + %^ cat 3 `@t`(scot %p -.als) + %^ cat 3 '/' + +.als + ~ + :: + ++ clean :: clean + |= wig=(urge cord) + ^- (urge cord) + ?~ wig ~ + ?~ t.wig wig + ?: ?=(%& -.i.wig) + ?: ?=(%& -.i.t.wig) + $(wig [[%& (add p.i.wig p.i.t.wig)] t.t.wig]) + [i.wig $(wig t.wig)] + ?: ?=(%| -.i.t.wig) + $(wig [[%| (welp p.i.wig p.i.t.wig) (welp q.i.wig q.i.t.wig)] t.t.wig]) + [i.wig $(wig t.wig)] + :: + ++ resolve + |= [ali=(urge cord) bob=(urge cord)] + ^- [fic=[%| p=(list cord) q=(list cord)] ali=(urge cord) bob=(urge cord)] + =- [[%| bac (annotate alc boc bac)] ali bob] + |- ^- $: $: bac=(list cord) + alc=(list cord) + boc=(list cord) + == + ali=(urge cord) + bob=(urge cord) + == + ?~ ali [[~ ~ ~] ali bob] + ?~ bob [[~ ~ ~] ali bob] + ?- -.i.ali + %& + ?- -.i.bob + %& [[~ ~ ~] ali bob] :: no conflict + %| + =+ lob=(lent p.i.bob) + ?: =(lob p.i.ali) + [[p.i.bob p.i.bob q.i.bob] t.ali t.bob] + ?: (lth lob p.i.ali) + [[p.i.bob p.i.bob q.i.bob] [[%& (sub p.i.ali lob)] t.ali] t.bob] + =+ wat=(scag (sub lob p.i.ali) p.i.bob) + =+ res=$(ali t.ali, bob [[%| (scag (sub lob p.i.ali) p.i.bob) ~] t.bob]) + :* :* (welp bac.res wat) + (welp alc.res wat) + (welp boc.res q.i.bob) + == + ali.res + bob.res + == + == + :: + %| + ?- -.i.bob + %& + =+ loa=(lent p.i.ali) + ?: =(loa p.i.bob) + [[p.i.ali q.i.ali p.i.ali] t.ali t.bob] + ?: (lth loa p.i.bob) + [[p.i.ali q.i.ali p.i.ali] t.ali [[%& (sub p.i.bob loa)] t.bob]] + =+ wat=(slag (sub loa p.i.bob) p.i.ali) + =+ res=$(ali [[%| (scag (sub loa p.i.bob) p.i.ali) ~] t.ali], bob t.bob) + :* :* (welp bac.res wat) + (welp alc.res q.i.ali) + (welp boc.res wat) + == + ali.res + bob.res + == + :: + %| + =+ loa=(lent p.i.ali) + =+ lob=(lent p.i.bob) + ?: =(loa lob) + [[p.i.ali q.i.ali q.i.bob] t.ali t.bob] + =+ ^= res + ?: (gth loa lob) + $(ali [[%| (scag (sub loa lob) p.i.ali) ~] t.ali], bob t.bob) + ~& [%scagging loa=loa pibob=p.i.bob slag=(scag loa p.i.bob)] + $(ali t.ali, bob [[%| (scag (sub lob loa) p.i.bob) ~] t.bob]) + :* :* (welp bac.res ?:((gth loa lob) p.i.bob p.i.ali)) + (welp alc.res q.i.ali) + (welp boc.res q.i.bob) + == + ali.res + bob.res + == + == + == + -- -- -- From da107ab17c8c71645a448265a1f7b79c16212c57 Mon Sep 17 00:00:00 2001 From: Anton Dyudin Date: Mon, 13 Apr 2015 17:20:54 -0700 Subject: [PATCH 35/89] share.coffee lib/sole implementation --- main/app/talk/core.hook | 8 +++- main/lib/base.css | 2 +- main/lib/sole/core.hook | 5 +-- main/mar/sole-action/door.hook | 5 +-- main/mar/sole-effect/door.hook | 6 +-- main/pub/sole/fab/hymn.hook | 45 ++++++++++++------- main/pub/sole/src/share.coffee | 79 ++++++++++++++++++++++++++++++++++ 7 files changed, 124 insertions(+), 26 deletions(-) create mode 100644 main/pub/sole/src/share.coffee diff --git a/main/app/talk/core.hook b/main/app/talk/core.hook index a91015faf..45e47820e 100644 --- a/main/app/talk/core.hook +++ b/main/app/talk/core.hook @@ -1737,7 +1737,13 @@ |= oug=? ^- tape ?+ -.sep "" - %url (weld ": " (scag 62 (earn p.sep))) + %url + =+ txt=(earn p.sep) + %+ weld "/ " + ?: (gte 62 (lent txt)) + txt + (weld (scag 61 (earn p.sep)) "…") + :: %lin =+ txt=(trip q.sep) ?: p.sep diff --git a/main/lib/base.css b/main/lib/base.css index a22b9065b..69c5bb780 100644 --- a/main/lib/base.css +++ b/main/lib/base.css @@ -144,4 +144,4 @@ input { #ship:focus, input:focus { background-color: #eee; -} \ No newline at end of file +} diff --git a/main/lib/sole/core.hook b/main/lib/sole/core.hook index f7a54b233..41f499103 100644 --- a/main/lib/sole/core.hook +++ b/main/lib/sole/core.hook @@ -32,8 +32,8 @@ :: for any sole state +>, obeys :: :: =+ [x=(transmute a b) y=(transmute b a)] - :: .= (apply:(apply b) x) - :: (apply:(apply a) y) + :: .= (apply:(apply a) x) + :: (apply:(apply b) y) :: ++ transmute :: dex as after sin |= [sin=sole-edit dex=sole-edit] @@ -103,7 +103,6 @@ |= sole-change ^- [sole-edit sole-share] ?> &(=(his.ler his.ven) (lte own.ler own.ven)) - ?> &(=(his.ler his.ven) (lte own.ler own.ven)) ?> |(!=(own.ler own.ven) =(haw (sham buf)) =(haw 0)) :: trust the clock =. leg (scag (sub own.ven own.ler) leg) :: ~? !=(own.ler own.ven) [%miss-leg leg] diff --git a/main/mar/sole-action/door.hook b/main/mar/sole-action/door.hook index 286d33ffb..4325e2a04 100644 --- a/main/mar/sole-action/door.hook +++ b/main/mar/sole-action/door.hook @@ -14,8 +14,7 @@ |= jon=^json ^- sole-action %- need %. jon => [jo ..sole-action] - |^ =- ~! (-) - - (fo %ret (of det/change ~)) + |^ (fo %ret (of det/change ~)) ++ fo |* [a=term b=fist] |=(c=json ?.(=([%s a] c) (b c) (some [a ~]))) @@ -30,7 +29,7 @@ ++ edit %+ fo %nop %+ ra mor/|=(json (edit +<)) - (of del/ni set/(cu tuba sa) ins/(ot at/ni new/char ~) ~) + (of del/ni set/(cu tuba sa) ins/(ot at/ni cha/char ~) ~) -- :: ++ noun sole-action :: clam from %noun diff --git a/main/mar/sole-effect/door.hook b/main/mar/sole-effect/door.hook index 36c706836..3e80b24a0 100644 --- a/main/mar/sole-effect/door.hook +++ b/main/mar/sole-effect/door.hook @@ -20,7 +20,7 @@ %mor [%a (turn p.ted ..$)] %del (joba %del (jone p.ted)) %set (joba %set (jape (tufa p.ted))) - %ins (joba %ins (jobe at/(jone p.ted) new/s/(tuft q.ted) ~)) + %ins (joba %ins (jobe at/(jone p.ted) cha/s/(tuft q.ted) ~)) == -- -- @@ -47,8 +47,8 @@ %err (joba %hop (jone p.sef)) %txt (joba %txt (jape p.sef)) %tan (joba %tan (jape (wush 160 p.sef))) - %det json:~(grow mar-sole-change +.sef) - %pro (jobe vis/b/vis.sef tag/s/tag.sef cad/(jape cad.sef) ~) + %det (joba %det json:~(grow mar-sole-change +.sef)) + %pro (joba %pro (jobe vis/b/vis.sef tag/s/tag.sef cad/(jape cad.sef) ~)) ?(%bel %clr %nex) (joba %act %s -.sef) == -- diff --git a/main/pub/sole/fab/hymn.hook b/main/pub/sole/fab/hymn.hook index 7de72abd8..c46d67534 100644 --- a/main/pub/sole/fab/hymn.hook +++ b/main/pub/sole/fab/hymn.hook @@ -32,21 +32,23 @@ ;body ;div#err; ;div#term:"" + ;script@"src/share.coffee"(type "text/coffeescript"); ;script(type "text/coffeescript") ;- %- trip ''' [DOM,recl,rend] = [React.DOM, React.createClass, React.renderComponent] [div, pre] = [DOM.div, DOM.pre] + str = JSON.stringify Matr = recl render: -> [pro,cur] = [@props.prompt + " ", @props.cursor + 1] prompt = "#{pro.slice(0,cur)}\u0332#{pro.slice(cur)}" lines = [prompt, @props.rows...] div {}, lines.slice().reverse().map (lin)-> pre {}, lin - + $ -> termRev = 0 pressed = [] - deltim = null + deltim = null met = $('
').text('m').css(display: 'none').appendTo(term).width()
         subs = ""
@@ -56,7 +58,7 @@
         #   if path is subs
         #     return
         #   if subs
-        #     urb.unsubscribe {path:subs}
+        #     urb.unsubscribe path: subs
         #   subs = path
         #   urb.subscribe {path}, (err,dat)->
         #       if err or dat.data.ok
@@ -68,28 +70,39 @@
         #         document.title = "Matrix"  # XX  debug
         # $(window).resize()
 
-        matr = rend (Matr rows:[], prompt:"", cursor:1), term
         flash = ($el, background)->
           $el.css {background}
           if background
             setTimeout (()-> flash $el,''), 50
+            
+        matr = rend (Matr rows:[], prompt:"", input:"", history:[], cursor:1), term
+        update = (a) -> matr.setProps a
+        buffer = new Share ""
+        
         
         peer = (ruh) ->
-          switch false
-            when !ruh.map then ruh.map peer
-            # when !ruh.pro then matr.setProps prompt: ruh.pro
-            # when !ruh.hop then matr.setProps cursor: ruh.hop
-            # when !ruh.out 
-            #   matr.setProps rows: [ruh.out, matr.props.rows...]
-            # when !ruh.act then switch ruh.act
-            #   when 'clr' then matr.setProps rows:[]
-            #   when 'bel' then flash ($ 'body'), 'black'
+          switch
+            when ruh.map then ruh.map peer
+            when ruh.hop then update cursor: buffer.transpose ruh.hop
+            when ruh.pro then update prompt: ruh.pro.cad
+            when ruh.txt then update rows: [ruh.txt, matr.props.rows...]
+            when ruh.blk then console.log "Stub #{str ruh}"
+            when ruh.act then switch ruh.act
+              when 'clr' then update rows:[]
+              when 'bel' then flash ($ 'body'), 'black'
+              when 'nex' then update
+                input: ""
+                cursor: 1
+                history: [matr.props.input, matr.props.history...]
             #   else throw "Unknown "+(JSON.stringify ruh)
-            else console.log ruh
+            else v = Object.keys(ruh); console.log v, ruh[v[0]]
         
         urb.bind "/sole", {wire:"/"}, (err,d)->
           if d.data then peer d.data
 
+        sendAction = (data)->
+          urb.send {mark: 'sole-action', data}, (n,err)->
+            if err.data then $('#err')[0].innerText = err.data.mess
         #later = (data)->
         #  if data
         #    pressed.push data
@@ -120,7 +133,9 @@
               act: 'uncap'
           if key
             e.preventDefault()
-            urb.send mark: 'dill-belt', data: {mod,key}
+            if key.str
+              det = buffer.transmit ins: cha: str, at: matr.props.cursor
+              sendAction {det}
             
             # amod = (arr)->
             #   for i in arr
diff --git a/main/pub/sole/src/share.coffee b/main/pub/sole/src/share.coffee
new file mode 100644
index 000000000..ecb3be12f
--- /dev/null
+++ b/main/pub/sole/src/share.coffee
@@ -0,0 +1,79 @@
+# See /hook/core/sole/lib
+str = JSON.stringify
+class window.Share
+  constructor: (@buf = "", @ven = [0, 0], @leg = []) ->
+  #
+  abet: ()-> buf:@buf, leg:@leg.slice(), ven:@ven.slice()
+  apply: (ted)->
+    if 'nop' == ted then return
+    if ted.map then ted.map @apply
+    switch Object.keys(ted)[0]
+      when 'set' then @buf = ted.set
+      when 'del' then @buf = @buf.slice(0,ted.del) + @buf.slice(ted.del + 1)
+      when 'ins'
+        {at,cha} = ted.ins
+        @buf = @buf.slice(0,at) + cha + @buf.slice(at)
+      else throw "%sole-edit -lost.#{str ted}"
+  #
+  transmute: (sin,dex)->
+    $this = `this`
+    switch
+      when sin == 'nop' or dex == 'nop' then dex
+      when sin.reduce
+        sin.reduce ((dex,syn) -> $this.transmute(syn,dex)), dex
+      when dex.map then dex.map (dax) -> $this.transmute(sin,dax)
+      when dex.set != undefined then dex
+      else switch Object.keys(sin)[0]
+        when 'set' then 'nop'
+        when 'del'
+          if sin.del is dex.del then return 'nop'
+          dex = $.extend true, {}, dex  # clone
+          switch Object.keys(dex)[0]
+            when 'del' then if sin.del < dex.del    then dex.del--
+            when 'ins' then if sin.del < dex.ins.at then dex.ins.at--
+          return dex
+        when 'ins'
+          dex = $.extend true, {}, dex  # clone
+          {at,cha} = sin.ins
+          switch Object.keys(dex)[0]
+            when 'del' then if at < dex.del then dex.del++
+            when 'ins' then if at < dex.ins.at or
+                              (at == dex.ins.at and cha < dex.ins.cha)
+                dex.ins.at++
+          return dex
+        else throw "%sole-edit -lost.#{str sin}"
+  #
+  commit: (ted)->
+    @ven[0]++
+    @leg.push ted
+    @apply ted
+    return @abet()
+  #
+  inverse: (ted)->
+    switch true
+      when 'nop' == ted then ted
+      when undefined != ted.map
+        ted.map( (tad)-> res=@inverse(tad); @apply(tad); res).reverse()
+      when undefined != ted.set then set: @buf
+      when undefined != ted.ins then del: ted.ins
+      when undefined != ted.del then ins: at: ted.del, cha: @buf[ted.del]
+      else throw 'bad sole-edit'
+  #
+  receive: ({ler,ted})->
+    if !(ler[1] is @ven[1]) 
+      throw "-out-of-sync.[#{str ler} #{str @ven}]"
+    @leg = @leg[0 ... (@ven[0] - ler[0])]
+    dat = @transmute @leg, ted
+    @ven[1]++; @apply dat; dat
+  #
+  remit: ()-> throw 'stub'
+  transmit: (ted)->
+    @commit ted
+    {ted, ler:[@ven[1], @ven[0]]}
+  #
+  transceive: ({ler,ted})->
+    old = new Share @buf
+    dat = @receive {ler, ted}
+    old.inverse dat
+  #
+  transpose: (pos)-> (@transmute @leg, ins: at: pos).ins.at

From 2e462a3c0dde87a5d321bf6fd93ccfd28048021f Mon Sep 17 00:00:00 2001
From: Philip C Monk 
Date: Mon, 13 Apr 2015 20:29:54 -0400
Subject: [PATCH 36/89] waypoint

---
 main/arvo/clay.hoon | 130 ++++++++++++++++++++++++++++----------------
 main/arvo/hoon.hoon |   1 +
 main/arvo/zuse.hoon |   2 +-
 3 files changed, 84 insertions(+), 49 deletions(-)

diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon
index 5ca434384..69be96263 100644
--- a/main/arvo/clay.hoon
+++ b/main/arvo/clay.hoon
@@ -152,9 +152,10 @@
           ==                                            ::
 ++  tage  ,[[%tabl p=(list (pair marc marc))] q=vase]   ::  %tabl gage
 ++  dork                                                ::  diff work
-          $:  sot=(list ,[p=path q=misu])               ::
-              lon=(list path)                           ::
-              mim=(map path mime)                       ::
+          $:  del=(list path)                           ::  deletes
+              ins=(unit (map path cage))                ::  inserts
+              dif=(unit (map path (pair lobe cage)))    ::  changes
+              mut=(unit (map path (pair lobe cage)))    ::  mutations
           ==                                            ::
 --  =>
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@@ -171,7 +172,7 @@
   =|  byn=(list ,[p=duct q=riot])
   =|  reg=(list ,[p=duct q=gift])
   =|  say=(list ,[p=duct q=path r=ship s=[p=@ud q=riff]])
-  =|  tag=(list ,[p=duct q=path r=note])
+  =|  tag=(list move)
   |%
   ++  abet
     ^-  [(list move) rede]
@@ -191,8 +192,7 @@
       :-  a
       [%pass b %a %want [who c] [%q %re p.q.d (scot %ud p.d) ~] q.d]
     ::
-      %+  turn  (flop tag)
-      |=([a=duct b=path c=note] [a %pass b c])
+      tag
     ==
   ::
   ++  aver                                            ::  read
@@ -237,11 +237,11 @@
   ::
   ++  bait
     |=  [hen=duct tym=@da]
-    %_(+> tag :_(tag [hen /tyme %t %wait tym]))
+    %_(+> tag :_(tag [hen %pass /tyme %t %wait tym]))
   ::
   ++  best
     |=  [hen=duct tym=@da]
-    %_(+> tag :_(tag [hen /tyme %t %rest tym]))
+    %_(+> tag :_(tag [hen %pass /tyme %t %rest tym]))
   ::
   ++  blab                                            ::  ship result
     |=  [hen=duct mun=mood dat=(each cage silk)]
@@ -249,7 +249,7 @@
     ?:  ?=(%& -.dat)
       +>.$(byn [[hen ~ [p.mun q.mun syd] r.mun p.dat] byn])
     =-  +>.$(tag [- tag])
-    :*  hen  [%blab p.mun (scot q.mun) syd r.mun]
+    :*  hen  %pass  [%blab p.mun (scot q.mun) syd r.mun]
         %f  %exec  who  [who syd q.mun]  ~  p.dat
     ==
   ::
@@ -378,6 +378,45 @@
       (echo:(checkout-ankh u.hat) wen ~ lem)
     ?.  =(~ dok)
       ~&  %already-applying-changes  +>
+    =+  del=(skim q.p.lem (corl (cury test %del) head tail))
+    =+  ins=(skim q.p.lem (corl (cury test %ins) head tail))
+    =+  dif=(skim q.p.lem (corl (cury test %dif) head tail))
+    =+  mut=(skim q.p.lem (corl (cury test %mut) head tail))
+    =-  %_(+>.$ tag (welp - tag), dok `[(turn del head)]) ::  XX  hoo{k,n}
+    ^-  (list move)
+    :~  :*  hen  %pass
+            [%inserting (scot %p who) syd (scot %da wen)]
+            %f  %exec  who  [who syd %da wen]  ~  %tabl
+            ^-  (list (pair silk silk))
+            %+  turn  ins
+            |=  [pax=path mis=miso]
+            ?>  ?=(%ins -.mis)
+            =+  =>((flop pax) ?~(. %$ i))
+            :-  [%done ~ -:!>(*path) pax]
+            [%cast - [%done ~ p.mis]]
+        ==
+        :*  hen  %pass
+            [%diffing (scot %p who) syd (scot %da wen)]
+            %f  %exec  who  [who syd %da wen]  ~  %tabl
+            ^-  (list (pair silk silk))
+            %+  turn  dif
+            |=  [pax=path mis=miso]
+            ?>  ?=(%dif -.mis)
+            =+  (need (need (read-x let.dom pax)))
+            ?>  ?=(%& -<)
+            [%pact p.- p.mis]
+        ==
+        :*  hen  %pass
+            [%mutating (scot %p who) syd (scot %da wen)]
+            %f  %exec  who  [who syd %da wen]  ~  %tabl
+            ^-  (list (pair silk silk))
+            %+  turn  mut
+            |=  [pax=path mis=miso]
+            ?>  ?=(%mut -.mis)
+            [%diff [%done ~ p.mis] [%cast p.p.mis [%done ~ q.mis]]]
+        ==
+    ==
+
     =+  ^=  sop
         |=  [a=path b=miso]
         ^-  ?
@@ -579,21 +618,20 @@
         dok  ~
         tag  ::  ?~(hez reg :_(reg [u.hez [%ergo who syd let.dom]]))
       :_  tag
-      :^    hen
-          [%ergoing (scot %p who) syd ~]
-        %f
-      :^  %exec  who  [who syd %da now]  :+  ~  %tabl
-      ^-  (list (pair silk silk))
-      %+  turn  sot.u.dok
-      |=  [a=path b=misu]
-      ^-  (pair silk silk)
-      :-  [%done ~ %path !>(a)]
-      ?:  ?=(%del -.b)
-        [%done ~ %null !>(~)]
-      =+  (~(get by mim.u.dok) a)
-      ?^  -  [%done ~ %mime !>(u.-)]
-      :^  %cast  %mime  %done  :-  ~
-      (need (read:ze %x [%ud let.dom] a))
+      :*  hen  [%ergoing (scot %p who) syd ~]  %f
+          %exec  who  [who syd %da now]  ~  %tabl
+          ^-  (list (pair silk silk))
+          %+  turn  sot.u.dok
+          |=  [a=path b=misu]
+          ^-  (pair silk silk)
+          :-  [%done ~ %path !>(a)]
+          ?:  ?=(%del -.b)
+            [%done ~ %null !>(~)]
+          =+  (~(get by mim.u.dok) a)
+          ?^  -  [%done ~ %mime !>(u.-)]
+          :^  %cast  %mime  %done  :-  ~
+          (need (read:ze %x [%ud let.dom] a))
+      ==
     ==
   ::
   ++  take-ergo
@@ -638,16 +676,15 @@
     %_    +>.$
         tag
       :_  tag
-      :^    hen
-          [%patching (scot %p who) syd ~]
-        %f
-      :^  %exec  who  [who syd %da now]  :+  ~  %tabl
-      ^-  (list (pair silk silk))
-      %+  turn  (~(tap by hat))
-      |=  [a=path b=lobe]
-      ^-  (pair silk silk)
-      :-  [%done ~ %path !>(a)]
-      (lobe-to-silk:ze a b)
+      :*  hen  %pass  [%patching (scot %p who) syd ~]  %f
+          %exec  who  [who syd %da now]  :+  ~  %tabl
+          ^-  (list (pair silk silk))
+          %+  turn  (~(tap by hat))
+          |=  [a=path b=lobe]
+          ^-  (pair silk silk)
+          :-  [%done ~ %path !>(a)]
+          (lobe-to-silk:ze a b)
+      ==
     ==
   ::
   ++  apply-foreign-update                              ::  apply subscription
@@ -798,7 +835,7 @@
     |=  [cas=case pop=(set plop)]
     ^+  +>
     =-  %_(+>.$ tag [- tag])
-    :*  hen
+    :*  hen  %pass
         [%foreign-plops (scot %p who) (scot %p for) syd ~]
         %f  %exec  who  [for syd cas]  ~  %tabl
         ^-  (list (pair silk silk))
@@ -972,13 +1009,9 @@
       [%direct (shax (jam p)) p]
     ::
     ++  make-delta                                      ::  make blob delta
-      |=  [p=[p=mark q=lobe] q=page]
+      |=  [p=lobe q=[p=mark q=lobe] r=page r=lobe]
       ^-  blob
-      =+  t=[%delta 0 p q]
-      =+  ^=  has
-          %^  cat  7  (sham [%blob q.q])
-          (sham [%lobe p])
-      [%delta has p q]
+      [%delta p q r]
     ::
     ++  make-yaki                                       ::  make yaki
       |=  [p=(list tako) q=(map path lobe) t=@da]
@@ -1031,10 +1064,10 @@
           =+  har=(~(get by hat) pax)
           ?~  har  !!
           %+  ~(put by bar)  pax
-          (make-delta [(lobe-to-mark u.har) u.har] [p q.q]:p.mys)
+          (make-delta [(lobe-to-mark u.har) u.har] [p q.q]:q.mys p.mys)
                                                         :: XX check vase !evil
         %+  ~(put by bar)  pax
-        (make-delta [(lobe-to-mark p.u.ber) p.u.ber] [p q.q]:p.mys)
+        (make-delta [(lobe-to-mark p.u.ber) p.u.ber] [p q.q]:q.mys p.mys)
                                                         :: XX check vase !evil
       ==
     ::
@@ -1407,7 +1440,8 @@
       ++  fetch-ali
         ^+  .
         =-  %_(+ tag [- tag])
-        :*  hen  [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %ali ~]
+        :*  hen  %pass
+            [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %ali ~]
             %c  %warp  [p.bob p.ali]  q.ali
             `[%sing %v cas.dat /]
         ==
@@ -1514,7 +1548,7 @@
         |=  [nam=term yak=yaki oth=(pair ship desk)]
         ^+  +>
         =-  %_(+>.$ tag [- tag])
-        :*  hen
+        :*  hen  %pass
             =+  (cat 3 %diff- nam)
             [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali - ~]
             %f  %exec  p.bob  [p.oth q.oth cas.dat]  ~  %tabl
@@ -1690,7 +1724,7 @@
           ?~  bof
             $(gem.dat %meet)
           =-  %_(+.$ tag [- tag])
-          :*  hen
+          :*  hen  %pass
               [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %merge ~]
               %f  %exec  p.bob  [p.bob q.bob cas.dat]  ~  %tabl
               ^-  (list (pair silk silk))
@@ -1823,7 +1857,7 @@
         ^+  .
         =-  %_(+ tag [- tag])
         =+  val=?:(?=(%init gem.dat) ali bob)
-        :*  hen
+        :*  hen  %pass
             [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %checkout ~]
             %f  %exec  p.bob  [p.val q.val cas.dat]  ~  %tabl
             ^-  (list (pair silk silk))
@@ -1877,7 +1911,7 @@
         =-  %_(+ tag [- tag])
         =+  zez=ze(ank.dom ank.dat)
         =+  val=?:(?=(%init gem.dat) ali bob)
-        :*  hen
+        :*  hen  %pass
             [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %ergo ~]
             %f  %exec  p.bob  [p.val q.val cas.dat]  ~  %tabl
             ^-  (list (pair silk silk))
diff --git a/main/arvo/hoon.hoon b/main/arvo/hoon.hoon
index e8951537e..013375a13 100644
--- a/main/arvo/hoon.hoon
+++ b/main/arvo/hoon.hoon
@@ -1767,6 +1767,7 @@
 ++  same  |*(* +<)                                      ::  identity
 ++  head  |*(^ +<-)                                     ::  get head
 ++  tail  |*(^ +<+)                                     ::  get head
+++  test  |=(^ =(+<- +<+))                              ::  equality
 ++  cork  |*([a=_,* b=gate] (corl b a))                 ::  compose forward
 ++  corl                                                ::  compose backwards
   |*  [a=gate b=_,*]
diff --git a/main/arvo/zuse.hoon b/main/arvo/zuse.hoon
index 5ac989bc4..3261e3218 100644
--- a/main/arvo/zuse.hoon
+++ b/main/arvo/zuse.hoon
@@ -2042,7 +2042,7 @@
 ++  misu                                                ::  computed delta
           $%  [%del p=cage]                             ::  delete
               [%ins p=cage]                             ::  insert
-              [%dif p=cage]                             ::  mutate from diff
+              [%dif p=lobe q=cage]                      ::  mutate from diff
           ==                                            ::
 ++  mizu  ,[p=@u q=(map ,@ud tako) r=rang]              ::  new state
 ++  moar  ,[p=@ud q=@ud]                                ::  normal change range

From 6d76b13162e12226dcbd3bc59b6b9709839c1b1c Mon Sep 17 00:00:00 2001
From: Anton Dyudin 
Date: Tue, 14 Apr 2015 13:38:37 -0700
Subject: [PATCH 37/89] pub/sole/fab up

---
 main/app/sole/core.hook        |  1 +
 main/lib/sole/core.hook        |  1 +
 main/mar/sole-effect/door.hook | 14 +++----
 main/pub/sole/fab/hymn.hook    | 68 +++++++++++++++++++++++-----------
 main/pub/sole/src/share.coffee | 13 ++++---
 5 files changed, 63 insertions(+), 34 deletions(-)

diff --git a/main/app/sole/core.hook b/main/app/sole/core.hook
index 39b6ed622..a34b0c061 100644
--- a/main/app/sole/core.hook
+++ b/main/app/sole/core.hook
@@ -556,6 +556,7 @@
       ^+  +>
       ?^  ris
         (ta-ser txt)
+      :: ~&  ven.say.inp
       %-  ta-hom(pos.inp (add (lent txt) pos.inp))
       :-  %mor
       |-  ^-  (list sole-edit)
diff --git a/main/lib/sole/core.hook b/main/lib/sole/core.hook
index 41f499103..477c370c6 100644
--- a/main/lib/sole/core.hook
+++ b/main/lib/sole/core.hook
@@ -102,6 +102,7 @@
   ++  receive                                           ::  naturalize event
     |=  sole-change
     ^-  [sole-edit sole-share]
+    ~|  [ler ven]
     ?>  &(=(his.ler his.ven) (lte own.ler own.ven))
     ?>  |(!=(own.ler own.ven) =(haw (sham buf)) =(haw 0)) :: trust the clock
     =.  leg  (scag (sub own.ven own.ler) leg)
diff --git a/main/mar/sole-effect/door.hook b/main/mar/sole-effect/door.hook
index 3e80b24a0..dab460159 100644
--- a/main/mar/sole-effect/door.hook
+++ b/main/mar/sole-effect/door.hook
@@ -14,20 +14,20 @@
       ^-  ^json
       =+  cha
       =<  (jobe ted/(. ted) ler/a/~[(jone own.ler) (jone his.ler)] ~)
-      |=  ted=sole-edit
-      ?-  -.ted
+      |=  det=sole-edit
+      ?-  -.det
         %nop  [%s 'nop']
-        %mor  [%a (turn p.ted ..$)]
-        %del  (joba %del (jone p.ted))
-        %set  (joba %set (jape (tufa p.ted)))
-        %ins  (joba %ins (jobe at/(jone p.ted) cha/s/(tuft q.ted) ~))
+        %mor  [%a (turn p.det ..$)]
+        %del  (joba %del (jone p.det))
+        %set  (joba %set (jape (tufa p.det)))
+        %ins  (joba %ins (jobe at/(jone p.det) cha/s/(tuft q.det) ~))
       ==
     --  
   --
 ++  wush
   |=  [wid=@u tan=tang]
   ^-  tape
-  =+  rolt=|=(a=wall `tape`?~(a ~ :(weld i.a "\0a" $(a t.a))))
+  =+  rolt=|=(a=wall `tape`?~(a ~ ?~(t.a i.a :(weld i.a "\0a" $(a t.a)))))
   (rolt (turn tan |=(a=tank (rolt (wash 0^wid a)))))
 ::
 --
diff --git a/main/pub/sole/fab/hymn.hook b/main/pub/sole/fab/hymn.hook
index c46d67534..aa91c7222 100644
--- a/main/pub/sole/fab/hymn.hook
+++ b/main/pub/sole/fab/hymn.hook
@@ -36,14 +36,18 @@
     ;script(type "text/coffeescript")  ;-  %-  trip
       '''
       [DOM,recl,rend] = [React.DOM, React.createClass, React.renderComponent]
-      [div, pre] = [DOM.div, DOM.pre]
+      [div, pre, span] = [DOM.div, DOM.pre, DOM.span]
       str = JSON.stringify
+      
+      Prompt = recl render: ->
+        [pro,cur,buf] = [@props.prompt, @props.cursor, @props.input + " "]
+        pre {}, pro,
+          span {style: background: 'lightgray'}, buf.slice(0,cur), "\u0332", buf.slice(cur)
+        
       Matr = recl render: ->
-        [pro,cur] = [@props.prompt + " ", @props.cursor + 1]
-        prompt = "#{pro.slice(0,cur)}\u0332#{pro.slice(cur)}"
-        lines = [prompt, @props.rows...]
-        div {}, lines.slice().reverse().map (lin)->
-          pre {}, lin
+        lines = @props.rows.slice().reverse().map (lin)-> pre {}, lin, " "
+        lines.push Prompt {prompt:@props.prompt, input:@props.input, cursor:@props.cursor}
+        div {}, lines
       
       $ ->
         termRev = 0
@@ -73,21 +77,25 @@
         flash = ($el, background)->
           $el.css {background}
           if background
-            setTimeout (()-> flash $el,''), 50
+            setTimeout (-> flash $el,''), 50
             
-        matr = rend (Matr rows:[], prompt:"", input:"", history:[], cursor:1), term
+        matr = rend (Matr rows:[], prompt:"", input:"", history:[], cursor:0), term
         update = (a) -> matr.setProps a
         buffer = new Share ""
-        
+        window.buffer = buffer
+        sync = (ted)-> 
+          update input: buffer.buf, cursor: buffer.transpose ted, matr.props.cursor
         
         peer = (ruh) ->
-          switch
-            when ruh.map then ruh.map peer
-            when ruh.hop then update cursor: buffer.transpose ruh.hop
-            when ruh.pro then update prompt: ruh.pro.cad
-            when ruh.txt then update rows: [ruh.txt, matr.props.rows...]
-            when ruh.blk then console.log "Stub #{str ruh}"
-            when ruh.act then switch ruh.act
+          if ruh.map then return ruh.map peer
+          switch Object.keys(ruh)[0]
+            when 'txt' then update rows: [ruh.txt, matr.props.rows...]
+            when 'tan' then ruh.tan.split("\n").reverse().map (txt)-> peer {txt}
+            when 'hop' then update cursor: buffer.transpose ruh.hop #; peer act:'bel'
+            when 'pro' then update prompt: ruh.pro.cad
+            when 'blk' then console.log "Stub #{str ruh}"
+            when 'det' then buffer.receive ruh.det; sync ruh.det.ted
+            when 'act' then switch ruh.act
               when 'clr' then update rows:[]
               when 'bel' then flash ($ 'body'), 'black'
               when 'nex' then update
@@ -98,11 +106,18 @@
             else v = Object.keys(ruh); console.log v, ruh[v[0]]
         
         urb.bind "/sole", {wire:"/"}, (err,d)->
-          if d.data then peer d.data
+          if err then console.log err
+          else if d.data then peer d.data
 
         sendAction = (data)->
-          urb.send {mark: 'sole-action', data}, (n,err)->
-            if err.data then $('#err')[0].innerText = err.data.mess
+          urb.send {mark: 'sole-action', data}, (e,res)->
+            if res.status isnt 200 then $('#err')[0].innerText = err.data.mess
+        
+        doEdit = (ted)->
+          det = buffer.transmit ted
+          sync ted
+          sendAction {det}
+        
         #later = (data)->
         #  if data
         #    pressed.push data
@@ -133,10 +148,19 @@
               act: 'uncap'
           if key
             e.preventDefault()
+            curs = matr.props.cursor
             if key.str
-              det = buffer.transmit ins: cha: str, at: matr.props.cursor
-              sendAction {det}
-            
+              doEdit ins: cha: key.str, at: curs
+              update cursor: curs+1
+            switch key.act
+              when 'entr' then sendAction 'ret'
+              when 'left' then if curs > 0 
+                update cursor: curs-1
+              when 'right' then if curs < buffer.buf.length
+                update cursor: curs+1
+              when 'baxp' then doEdit del: curs-1
+              else (if key.act then console.log key.act)
+                
             # amod = (arr)->
             #   for i in arr
             #     unless mod.indexOf(i) < 0
diff --git a/main/pub/sole/src/share.coffee b/main/pub/sole/src/share.coffee
index ecb3be12f..6843091e3 100644
--- a/main/pub/sole/src/share.coffee
+++ b/main/pub/sole/src/share.coffee
@@ -1,9 +1,10 @@
 # See /hook/core/sole/lib
 str = JSON.stringify
+clog = (a)-> console.log a
 class window.Share
   constructor: (@buf = "", @ven = [0, 0], @leg = []) ->
   #
-  abet: ()-> buf:@buf, leg:@leg.slice(), ven:@ven.slice()
+  abet: -> buf:@buf, leg:@leg.slice(), ven:@ven.slice()
   apply: (ted)->
     if 'nop' == ted then return
     if ted.map then ted.map @apply
@@ -47,7 +48,6 @@ class window.Share
     @ven[0]++
     @leg.push ted
     @apply ted
-    return @abet()
   #
   inverse: (ted)->
     switch true
@@ -66,14 +66,17 @@ class window.Share
     dat = @transmute @leg, ted
     @ven[1]++; @apply dat; dat
   #
-  remit: ()-> throw 'stub'
+  remit: -> throw 'stub'
   transmit: (ted)->
+    act = {ted, ler:[@ven[1], @ven[0]]}
     @commit ted
-    {ted, ler:[@ven[1], @ven[0]]}
+    return act
   #
   transceive: ({ler,ted})->
     old = new Share @buf
     dat = @receive {ler, ted}
     old.inverse dat
   #
-  transpose: (pos)-> (@transmute @leg, ins: at: pos).ins.at
+  transpose: (ted,pos)->
+    if pos == undefined then @transpose @leg, ted
+    else ((@transmute ted, ins: at: pos).ins ? at:0).at

From 93c2956fc7747247644104c1d47b31154f203e52 Mon Sep 17 00:00:00 2001
From: Anton Dyudin 
Date: Tue, 14 Apr 2015 13:57:12 -0700
Subject: [PATCH 38/89] cursor tweak

---
 main/pub/sole/fab/hymn.hook                              | 9 +++++----
 main/pub/talk/src/js/actions/MessageActions.coffee       | 2 +-
 .../talk/src/js/persistence/MessagePersistence.coffee    | 2 +-
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/main/pub/sole/fab/hymn.hook b/main/pub/sole/fab/hymn.hook
index aa91c7222..4c6dd2073 100644
--- a/main/pub/sole/fab/hymn.hook
+++ b/main/pub/sole/fab/hymn.hook
@@ -100,7 +100,7 @@
               when 'bel' then flash ($ 'body'), 'black'
               when 'nex' then update
                 input: ""
-                cursor: 1
+                cursor: 0
                 history: [matr.props.input, matr.props.history...]
             #   else throw "Unknown "+(JSON.stringify ruh)
             else v = Object.keys(ruh); console.log v, ruh[v[0]]
@@ -111,7 +111,7 @@
 
         sendAction = (data)->
           urb.send {mark: 'sole-action', data}, (e,res)->
-            if res.status isnt 200 then $('#err')[0].innerText = err.data.mess
+            if res.status isnt 200 then $('#err')[0].innerText = res.data.mess
         
         doEdit = (ted)->
           det = buffer.transmit ted
@@ -158,8 +158,9 @@
                 update cursor: curs-1
               when 'right' then if curs < buffer.buf.length
                 update cursor: curs+1
-              when 'baxp' then doEdit del: curs-1
-              else (if key.act then console.log key.act)
+              when 'baxp' then if curs > 0
+                doEdit del: curs-1
+              #else (if key.act then console.log key.act)
                 
             # amod = (arr)->
             #   for i in arr
diff --git a/main/pub/talk/src/js/actions/MessageActions.coffee b/main/pub/talk/src/js/actions/MessageActions.coffee
index 5fa44077f..315a6244d 100644
--- a/main/pub/talk/src/js/actions/MessageActions.coffee
+++ b/main/pub/talk/src/js/actions/MessageActions.coffee
@@ -64,4 +64,4 @@ module.exports =
     MessageDispatcher.handleViewAction
       type:"message-send"
       message:_message
-    window.chat.MessagePersistence.sendMessage _message.thought
\ No newline at end of file
+    window.chat.MessagePersistence.sendMessage _message.thought
diff --git a/main/pub/talk/src/js/persistence/MessagePersistence.coffee b/main/pub/talk/src/js/persistence/MessagePersistence.coffee
index 9c509d6c6..e6ac71f49 100644
--- a/main/pub/talk/src/js/persistence/MessagePersistence.coffee
+++ b/main/pub/talk/src/js/persistence/MessagePersistence.coffee
@@ -55,4 +55,4 @@ module.exports =
     }, (err,res) ->
       console.log 'sent'
       console.log arguments
-      cb(err,res) if cb
\ No newline at end of file
+      cb(err,res) if cb

From 3d0e11750f25db7c68c758a19af9ef15762bb933 Mon Sep 17 00:00:00 2001
From: Anton Dyudin 
Date: Tue, 14 Apr 2015 14:16:46 -0700
Subject: [PATCH 39/89] Dead duct pile

---
 arvo/eyre.hoon | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/arvo/eyre.hoon b/arvo/eyre.hoon
index 77beab5c8..c5a988ed6 100644
--- a/arvo/eyre.hoon
+++ b/arvo/eyre.hoon
@@ -102,10 +102,11 @@
 --                                                      ::
 |%                                                      ::  models
 ++  bolo                                                ::  eyre state
-  $:  %0                                                ::  version
+  $:  %1                                                ::  version
       gub=@t                                            ::  random identity
       hov=(unit ship)                                   ::  master for remote
       ged=duct                                          ::  client interface
+      ded=(set duct)                                    ::  killed requests
       pox=(map ,@uvH duct)                              ::  proxied sessions
       ask=[p=@ud q=(map ,@ud ,[p=duct q=hiss])]         ::  outgoing by number
       kes=(map duct ,@ud)                               ::  outgoing by duct
@@ -443,7 +444,7 @@
     ::
         %thud                                           ::  cancel request
       ::  ford-kill  ::  XX discriminate
-      +>.$
+      +>.$(ded (~(put in ded) hen))
     ::
         %wart                                           ::  remote request
       =+  mez=((soft gram) r.kyz)
@@ -621,6 +622,8 @@
   ::
   ++  give-thou                                       ::  done request
     |=  hit=httr
+    ?:  (~(has in ded) hen)                           ::  request closed
+      +>(ded (~(del in ded) hen))
     +>(mow :_(mow [hen %give %thou hit]))
   ::
   ++  mean-json  |=([sas=@uG err=ares] (give-json sas ~ (ares-to-json err)))
@@ -1218,10 +1221,15 @@
   ^-  (unit ,@da)
   ~
 ::
-++  load                                                ::  clam previous state
-  |=  old=bolo ::_[.(wix **)]:*bolo
+++  load                                                ::  take previous state
+  =+  bol0=*bolo
+  =>  .(-.bol0 %0, |4.bol0 |5.bol0)   ::  missing ded
+  |=  old=?(bolo _bol0)
   ^+  ..^$
-  ..^$(+>- old) ::(wix ~))
+  ?-  -.old
+    %1  ..^$(+>- old)
+    %0  $(-.old %1, |4.old [*(set duct) |4.old])
+  ==
 ::
 ++  scry
   |=  [our=(unit (set monk)) ren=@tas who=ship syd=desk lot=coin tyl=path]

From 8560bae3b8e860088f0457ccdf5ab1cb6f5dd7eb Mon Sep 17 00:00:00 2001
From: Philip C Monk 
Date: Tue, 14 Apr 2015 20:48:37 -0400
Subject: [PATCH 40/89] waypoint

---
 main/arvo/clay.hoon | 317 ++++++++++++++++++++++++++++----------------
 1 file changed, 204 insertions(+), 113 deletions(-)

diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon
index 69be96263..fa1a9193e 100644
--- a/main/arvo/clay.hoon
+++ b/main/arvo/clay.hoon
@@ -152,10 +152,13 @@
           ==                                            ::
 ++  tage  ,[[%tabl p=(list (pair marc marc))] q=vase]   ::  %tabl gage
 ++  dork                                                ::  diff work
-          $:  del=(list path)                           ::  deletes
-              ins=(unit (map path cage))                ::  inserts
-              dif=(unit (map path (pair lobe cage)))    ::  changes
-              mut=(unit (map path (pair lobe cage)))    ::  mutations
+          $:  del=(list (pair path cage))               ::  deletes
+              ink=(list (pair path cage))               ::  hoo{n,k}
+              ins=(unit (list (pair path cage)))        ::  inserts
+              dig=(map path cage)                       ::  store diffs
+              dif=(unit (list (trel path lobe cage)))   ::  changes
+              muh=(map path lobe)                       ::  store hashes
+              mut=(unit (list (trel path lobe cage)))   ::  mutations
           ==                                            ::
 --  =>
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@@ -348,7 +351,7 @@
         ::  yel  [[hen %note '=' %leaf ~] yel]     ::  XX do better
     ==
   ::
-  ++  echo                                            ::  announce changes
+  ++  echo                                              ::  announce changes
     |=  [wen=@da mim=(map path mime) lem=nori]
     ^+  +>
     %_    +>.$
@@ -367,7 +370,7 @@
       ==
     ==
   ::
-  ++  edit                                            ::  apply changes
+  ++  edit                                              ::  apply changes
     |=  [wen=@da lem=nori]
     ^+  +>
     ?:  ?=(%| -.lem)
@@ -378,11 +381,36 @@
       (echo:(checkout-ankh u.hat) wen ~ lem)
     ?.  =(~ dok)
       ~&  %already-applying-changes  +>
-    =+  del=(skim q.p.lem (corl (cury test %del) head tail))
-    =+  ins=(skim q.p.lem (corl (cury test %ins) head tail))
-    =+  dif=(skim q.p.lem (corl (cury test %dif) head tail))
-    =+  mut=(skim q.p.lem (corl (cury test %mut) head tail))
-    =-  %_(+>.$ tag (welp - tag), dok `[(turn del head)]) ::  XX  hoo{k,n}
+    =+  del=(skim q.p.lem :(corl (cury test %del) head tail))
+    =+  ins=(skim q.p.lem :(corl (cury test %ins) head tail))
+    =+  dif=(skim q.p.lem :(corl (cury test %dif) head tail))
+    =+  mut=(skim q.p.lem :(corl (cury test %mut) head tail))
+    =+  inn=(skim ins :(corl (cury test %hoon) head tail tail))  ::  XX  wrong
+    =+  ink=(skim ins :(corl (cury test %ins) head tail tail))
+    =-  %_    +>.$                                      ::  XX  hoo{k,n}
+            tag  (welp - tag)
+            dok
+          :-  ~
+          :*  %+  turn  del
+              |=  [pax=path mis=miso]
+              ?>  ?=(%del -.mis)
+              [pax p.mis]
+              %+  murn  
+              ~
+              %-  mo
+              %+  turn  dif
+              |=  [pax=path mis=miso]
+              ?>  ?=(%dif -.mis]
+              [pax p.mis]
+              ~
+              %-  mo
+              %+  turn  mut
+              |=  [pax=path mis=miso]
+              ?>  ?=(%mut -.mis)
+              [pax (page-to-lobe:ze p.mis q.q.mis)]
+              ~
+          ==
+        ==
     ^-  (list move)
     :~  :*  hen  %pass
             [%inserting (scot %p who) syd (scot %da wen)]
@@ -416,41 +444,40 @@
             [%diff [%done ~ p.mis] [%cast p.p.mis [%done ~ q.mis]]]
         ==
     ==
-
-    =+  ^=  sop
-        |=  [a=path b=miso]
-        ^-  ?
-        ?|  ?=(%del -.b)
-            ?=(%dif -.b)
-            ?&  ?=(%ins -.b)
-                ?=(%mime p.p.b)
-                =+  (slag (dec (lent a)) a)
-                ?|  =([%hook ~] -)
-                    =([%hoon ~] -)
-        ==  ==  ==
-    =+  ^-  lon=(list path)
-        (murn q.p.lem |=([a=path b=miso] ?:((sop a b) ~ (some a))))
-    =+  ^-  sot=(list ,[p=path q=misu])
-        %+  murn  q.p.lem
-        |=([a=path b=miso] ?.((sop a b) ~ (some [a ?<(?=(%mut -.b) b)])))
-    =+  ^-  mim=(map path mime)
-        %-  mo
-        ^-  (list ,[path mime])
-        %+  murn  q.p.lem
-        |=  [a=path b=miso]
-        ?-  -.b
-          %del  ~
-          %ins  ?.(?=(%mime p.p.b) ~ (some a ((hard mime) q.q.p.b)))
-          %dif  ~
-          %mut  ?.(?=(%mime p.q.b) ~ (some a ((hard mime) q.q.q.b)))
-        ==
-    =.  dok  `[sot lon mim]
-    ?~  lon
-      (apply-edit wen)
-    =+  ^-  los=(list ,[duct path note])
-        %+  murn  q.p.lem
-        |=([a=path b=miso] ?:((sop a b) ~ (some (silkify wen a b))))
-    %_(+>.$ tag (welp los tag))
+    ::  =+  ^=  sop
+    ::      |=  [a=path b=miso]
+    ::      ^-  ?
+    ::      ?|  ?=(%del -.b)
+    ::          ?=(%dif -.b)
+    ::          ?&  ?=(%ins -.b)
+    ::              ?=(%mime p.p.b)
+    ::              =+  (slag (dec (lent a)) a)
+    ::              ?|  =([%hook ~] -)
+    ::                  =([%hoon ~] -)
+    ::      ==  ==  ==
+    ::  =+  ^-  lon=(list path)
+    ::      (murn q.p.lem |=([a=path b=miso] ?:((sop a b) ~ (some a))))
+    ::  =+  ^-  sot=(list ,[p=path q=misu])
+    ::      %+  murn  q.p.lem
+    ::      |=([a=path b=miso] ?.((sop a b) ~ (some [a ?<(?=(%mut -.b) b)])))
+    ::  =+  ^-  mim=(map path mime)
+    ::      %-  mo
+    ::      ^-  (list ,[path mime])
+    ::      %+  murn  q.p.lem
+    ::      |=  [a=path b=miso]
+    ::      ?-  -.b
+    ::        %del  ~
+    ::        %ins  ?.(?=(%mime p.p.b) ~ (some a ((hard mime) q.q.p.b)))
+    ::        %dif  ~
+    ::        %mut  ?.(?=(%mime p.q.b) ~ (some a ((hard mime) q.q.q.b)))
+    ::      ==
+    ::  =.  dok  `[sot lon mim]
+    ::  ?~  lon
+    ::    (apply-edit wen)
+    ::  =+  ^-  los=(list ,[duct path note])
+    ::      %+  murn  q.p.lem
+    ::      |=([a=path b=miso] ?:((sop a b) ~ (some (silkify wen a b))))
+    ::  %_(+>.$ tag (welp los tag))
   ::
   ++  silkify
     |=  [wen=@da pax=path mis=miso]
@@ -480,77 +507,127 @@
     |=  wen=@da
     ^+  +>
     =+  ^=  hat
-        (edit:ze wen %& *cart ?~(dok ~|(%no-changes !!) sot.u.dok))
+        %^  edit:ze  wen  %&  :-  *cart
+        ?~  dok
+          ~|(%no-changes !!)
+        ?>  ?=(^ ins.u.dok)
+        ?>  ?=(^ dif.u.dok)
+        ?>  ?=(^ mut.u.dok)
+        ;:  welp
+          ^-  (list (pair path misu))
+          (turn del.u.dok |=([pax=path cay=cage] [pax %del cay]))
+        ::
+          ^-  (list (pair path misu))
+          (turn u.ins.u.dok |=([pax=path cay=cage] [pax %ins cay]))
+        ::
+          ^-  (list (pair path misu))
+          (turn u.dif.u.dok |=([pax=path cal=[lobe cage]] [pax %dif cal]))
+        ::
+          ^-  (list (pair path misu))
+          (turn u.mut.u.dok |=([pax=path cal=[lobe cage]] [pax %dif cal]))
+        ==
     ?~  dok  ~&  %no-changes  !!
     ?^  lon.u.dok  ~&  %not-done-diffing  !!
     ?~  -.hat
       ([echo(dok ~)]:.(+>.$ +.hat) wen mim.u.dok %& *cart sot.u.dok)
     (checkout-ankh(lat.ran lat.ran.+.hat) u.-.hat)
   ::
-  ++  take-cast
-    |=  [wen=@da pax=path res=(each bead (list tank))]
+  ++  take-inserting
+    |=  [wen=@da res=(each bead (list tank))]
     ^+  +>
     ?~  dok
-      ~&  %clay-unexpected-made  +>.$
-    ?.  (lien lon.u.dok |=(path =(+< pax)))
-      ~&  %clay-strange-made  +>.$
-    ?:  ?=(%| -.res)
-      %_    +>.$
-          dok  ~
-        ::  XX should be here
-        ::    tag
-        ::  %-  welp  :_  tag
-        ::  ^-  (list ,[duct path note])
-        ::  %+  murn  lon.u.dok
-        ::  |=  a=path
-        ::  ^-  (unit ,[duct path note])
-        ::  ?:  =(pax a)  ~
-        ::  `[hen [%diffing (scot %p who) syd (scot %da wen) a] %f %exec who ~]
-      ::
-          yel
-        [[hen %note '!' %rose [" " "" ""] leaf/"clay diff failed" p.res] yel]
-      ==
-    ?.  ?=(@ p.q.p.res)  ~|  %bad-marc  !!
-    =:  lon.u.dok  (skip lon.u.dok |=(path =(+< pax)))
-        sot.u.dok  [[pax %ins q.p.res] sot.u.dok]
-    ==
-    ?~  lon.u.dok
-      (apply-edit wen)
-    +>.$
+      ~&  %clay-take-inserting-unexpected-made  +>.$
+    ?.  =(~ ins.u.dok)
+      ~&  %clay-take-inserting-redundant-made  +>.$
+    =-  =.  ins.u.dok  `-
+        ?:  ?&  ?=(^ dif.u.dok)
+                ?=(^ mut.u.dok)
+            ==
+          (apply-edit wen)
+        +>.$
+    ^-  (list (pair path cage))
+    %+  turn  (tage-to-cages (made-to-tage res))
+    |=  [pax=cage cay=cage]
+    ?.  ?=(%path p.pax)
+      ~|(%clay-take-inserting-strange-path-mark !!)
+    [((hard path) q.q.pax) cay]
   ::
-  ++  take-diff
-    |=  [wen=@da pax=path res=(each bead (list tank))]
+  ++  take-diffing
+    |=  [wen=@da res=(each bead (list tank))]
     ^+  +>
     ?~  dok
-      ~&  %clay-unexpected-made  +>.$
-    ?.  (lien lon.u.dok |=(path =(+< pax)))
-      ~&  %clay-strange-made  +>.$
-    ?:  ?=(%| -.res)
-      %_    +>.$
-          dok  ~
-        ::    tag
-        ::  %-  welp  :_  tag
-
-        ::  ^-  (list ,[duct path note])
-        ::  %+  murn  lon.u.dok
-        ::  |=  a=path
-        ::  ^-  (unit ,[duct path note])
-        ::  ?:  =(pax a)  ~
-        ::  `[hen [%diffing (scot %p who) syd (scot %da wen) a] %f %exec who ~]
-      ::
-          yel
-        :_  yel
-        [hen %note '!' %rose [" " "" ""] leaf/"clay diff failed" >pax< p.res]
-      ==
-    ?.  ?=(@ p.q.p.res)  ~|  %bad-marc  !!
-    =:  lon.u.dok  (skip lon.u.dok |=(path =(+< pax)))
-        sot.u.dok  ?:  =(%null p.q.p.res)
-                     sot.u.dok
-                   [[pax %dif q.p.res] sot.u.dok]
-    ==
-    ?~  lon.u.dok
-      (apply-edit wen)
-    +>.$
+      ~&  %clay-take-diffing-unexpected-made  +>.$
+    ?.  =(~ ins.u.dok)
+      ~&  %clay-take-diffing-redundant-made  +>.$
+    =-  =.  dif.u.dok  `-
+        ?:  ?&  ?=(^ ins.u.dok)
+                ?=(^ mut.u.dok)
+            ==
+          (apply-edit wen)
+        +>.$
+    ^-  (list (trel path lobe cage))
+    %+  murn  (tage-to-cages (made-to-tage res))
+    |=  [pax=cage cay=cage]
+    ^-  (unit (pair path (pair lobe cage)))
+    ?.  ?=(%path p.pax)
+      ~|(%clay-take-diffing-strange-path-mark !!)
+    =+  paf=((hard path) q.q.pax)
+    [paf (page-to-lobe:ze [p q.q]:cay) (~(got by dig.u.dok) paf)]
+  ::
+  ++  take-mutating
+    |=  [wen=@da res=(each bead (list tank))]
+    ^+  +>
+    ?~  dok
+      ~&  %clay-take-mutating-unexpected-made  +>.$
+    ?.  =(~ ins.u.dng)
+      ~&  %clay-take-mutating-redundant-made  +>.$
+    =-  =.  mut.u.dok  `-
+        ?:  ?&  ?=(^ ins.u.dok)
+                ?=(^ dif.u.dok)
+            ==
+          (apply-edit wen)
+        +>.$
+    ^-  (list (trel path lobe cage))
+    %+  murn  (tage-to-cages (made-to-tage res))
+    |=  [pax=cage cay=cage]
+    ^-  (unit (pair path (pair lobe cage)))
+    ?.  ?=(%path p.pax)
+      ~|(%clay-take-mutating-strange-path-mark !!)
+    ?:  ?=(%null p.cay)
+      ~
+    =+  paf=((hard path) q.q.pax)
+    [paf (~(got by muh.u.dok) paf) cay]
+    ::  |=  [wen=@da pax=path res=(each bead (list tank))]
+    ::  ^+  +>
+    ::  ?~  dok
+    ::    ~&  %clay-unexpected-made  +>.$
+    ::  ?.  (lien lon.u.dok |=(path =(+< pax)))
+    ::    ~&  %clay-strange-made  +>.$
+    ::  ?:  ?=(%| -.res)
+    ::    %_    +>.$
+    ::        dok  ~
+    ::      ::    tag
+    ::      ::  %-  welp  :_  tag
+    ::      ::  ^-  (list ,[duct path note])
+    ::      ::  %+  murn  lon.u.dok
+    ::      ::  |=  a=path
+    ::      ::  ^-  (unit ,[duct path note])
+    ::      ::  ?:  =(pax a)  ~
+    ::      ::  `[hen [%diffing (scot %p who) syd (scot %da wen) a] %f %exec who ~]
+    ::    ::
+    ::        yel
+    ::      :_  yel
+    ::      [hen %note '!' %rose [" " "" ""] leaf/"clay diff failed" >pax< p.res]
+    ::    ==
+    ::  ?.  ?=(@ p.q.p.res)  ~|  %bad-marc  !!
+    ::  =:  lon.u.dok  (skip lon.u.dok |=(path =(+< pax)))
+    ::      sot.u.dok  ?:  =(%null p.q.p.res)
+    ::                   sot.u.dok
+    ::                 [[pax %dif q.p.res] sot.u.dok]
+    ::  ==
+    ::  ?~  lon.u.dok
+    ::    (apply-edit wen)
+    ::  +>.$
   ::
   ++  take-patch
     |=  res=(each bead (list tank))
@@ -1003,10 +1080,11 @@
         %delta      [%pact $(lob q.q.bol) [%volt ~ r.bol]]
       ==
     ::
+    ++  page-to-lobe  (corl shax jam)
     ++  make-direct                                     ::  make blob
       |=  p=page
       ^-  blob
-      [%direct (shax (jam p)) p]
+      [%direct (page-to-lobe p) p]
     ::
     ++  make-delta                                      ::  make blob delta
       |=  [p=lobe q=[p=mark q=lobe] r=page r=lobe]
@@ -1185,7 +1263,7 @@
           ?~  par  ~
           ~[u.par]
       =+  gar=(update-lat (apply-changes q.lem) lat.ran)
-      :-  %^  make-yaki  per  +.gar  wen                ::  from existing diff
+      :-  (make-yaki per +.gar wen)                     ::  from existing diff
       -.gar                                             ::  fix lat
     ::
     ++  lobes-at-path                                   ::    lobes-at-path:ze
@@ -2310,28 +2388,41 @@
       %made
     ?~  tea  !!
     ?+    -.tea  !!
-        %casting
-      ?>  ?=([@ @ @ *] t.tea)
+        %inserting
+      ?>  ?=([@ @ @ ~] t.tea)
       =+  who=(slav %p i.t.tea)
       =+  syd=(slav %tas i.t.t.tea)
       =+  wen=(slav %da i.t.t.t.tea)
       =^  mos  ruf
         =+  une=(un who now hen ruf)
         =+  ^=  zat
-            (take-cast:(di:wake:une syd) wen t.t.t.t.tea p.q.hin)
+            (take-inserting:(di:wake:une syd) wen p.q.hin)
         =+  zot=abet.zat
         [-.zot abet:(pish:une syd +.zot ran.zat)]
       [mos ..^$]
     ::
         %diffing
-      ?>  ?=([@ @ @ *] t.tea)
+      ?>  ?=([@ @ @ ~] t.tea)
       =+  who=(slav %p i.t.tea)
       =+  syd=(slav %tas i.t.t.tea)
       =+  wen=(slav %da i.t.t.t.tea)
       =^  mos  ruf
         =+  une=(un who now hen ruf)
         =+  ^=  zat
-            (take-diff:(di:wake:une syd) wen t.t.t.t.tea p.q.hin)
+            (take-diffing:(di:wake:une syd) wen p.q.hin)
+        =+  zot=abet.zat
+        [-.zot abet:(pish:une syd +.zot ran.zat)]
+      [mos ..^$]
+    ::
+        %mutating
+      ?>  ?=([@ @ @ ~] t.tea)
+      =+  who=(slav %p i.t.tea)
+      =+  syd=(slav %tas i.t.t.tea)
+      =+  wen=(slav %da i.t.t.t.tea)
+      =^  mos  ruf
+        =+  une=(un who now hen ruf)
+        =+  ^=  zat
+            (take-mutating:(di:wake:une syd) wen p.q.hin)
         =+  zot=abet.zat
         [-.zot abet:(pish:une syd +.zot ran.zat)]
       [mos ..^$]

From 31c2cb220ba1bc2b8e399e1199555778033595a8 Mon Sep 17 00:00:00 2001
From: Anton Dyudin 
Date: Tue, 14 Apr 2015 19:01:26 -0700
Subject: [PATCH 41/89] OT tweaking

---
 main/lib/sole/core.hook        |  9 ++++---
 main/pub/sole/fab/hymn.hook    |  2 +-
 main/pub/sole/src/share.coffee | 43 +++++++++++++++++-----------------
 3 files changed, 29 insertions(+), 25 deletions(-)

diff --git a/main/lib/sole/core.hook b/main/lib/sole/core.hook
index 477c370c6..dcbc30bfd 100644
--- a/main/lib/sole/core.hook
+++ b/main/lib/sole/core.hook
@@ -65,7 +65,7 @@
       ?-  -.dex
         %del  ?:((lte p.sin p.dex) dex(p +(p.dex)) dex)
         %ins  ?:  =(p.sin p.dex)     
-                ?:((gth q.sin q.dex) dex dex(p +(p.dex)))
+                ?:((lth q.sin q.dex) dex dex(p +(p.dex)))
               ?:((lte p.sin p.dex) dex(p +(p.dex)) dex)
       ==
     ==   
@@ -85,7 +85,8 @@
   ++  inverse                                           ::  relative inverse
     |=  ted=sole-edit
     ^-  sole-edit
-    =.  ted  ?.(?=([%mor * ~] ted) ted i.p.ted)
+    :: =.  ted  ?.(?=([%mor * ~] ted) ted i.p.ted) :: XX why?
+    ~|  [ted abet]
     ?-  -.ted
       %del  [%ins p.ted (snag p.ted buf)]
       %ins  [%del p.ted]
@@ -107,8 +108,9 @@
     ?>  |(!=(own.ler own.ven) =(haw (sham buf)) =(haw 0)) :: trust the clock
     =.  leg  (scag (sub own.ven own.ler) leg)
     ::  ~?  !=(own.ler own.ven)  [%miss-leg leg]
-    =+  dat=(transmute [%mor leg] ted)
+    =+  dat=(transmute [%mor (flop leg)] ted)
     ::  ~?  !=(~ leg)  [%transmute from/ted to/dat ~]
+    :: =-  ~&  (tufa buf)  -
     [dat abet:(apply(his.ven +(his.ven)) dat)]
   ::
   ++  remit                                             ::  conditional accept
@@ -124,6 +126,7 @@
   ++  transmit                                          ::  outgoing change
     |=  ted=sole-edit
     ^-  [sole-change sole-share]
+    :: =-  ~&  (tufa buf)  -
     [[[his.ven own.ven] (sham buf) ted] (commit ted)]
   ::
   ++  transceive                                        ::  receive and invert
diff --git a/main/pub/sole/fab/hymn.hook b/main/pub/sole/fab/hymn.hook
index 4c6dd2073..a3e3cf110 100644
--- a/main/pub/sole/fab/hymn.hook
+++ b/main/pub/sole/fab/hymn.hook
@@ -19,7 +19,7 @@
             "react/0.11.0/react.js"
         ==
     ;script(src "/~/at/main/lib/urb.js");
-    ;script: urb.appl = 'dojo'
+    ;script: urb.appl = 'talk'
     ;style:'''
            #term {
              width: 100%;
diff --git a/main/pub/sole/src/share.coffee b/main/pub/sole/src/share.coffee
index 6843091e3..67679b4fe 100644
--- a/main/pub/sole/src/share.coffee
+++ b/main/pub/sole/src/share.coffee
@@ -6,23 +6,23 @@ class window.Share
   #
   abet: -> buf:@buf, leg:@leg.slice(), ven:@ven.slice()
   apply: (ted)->
-    if 'nop' == ted then return
-    if ted.map then ted.map @apply
-    switch Object.keys(ted)[0]
-      when 'set' then @buf = ted.set
-      when 'del' then @buf = @buf.slice(0,ted.del) + @buf.slice(ted.del + 1)
-      when 'ins'
-        {at,cha} = ted.ins
-        @buf = @buf.slice(0,at) + cha + @buf.slice(at)
-      else throw "%sole-edit -lost.#{str ted}"
+    switch
+      when 'nop' == ted then return
+      when ted.map then ted.map @apply, @
+      else switch Object.keys(ted)[0]
+        when 'set' then @buf = ted.set
+        when 'del' then @buf = @buf.slice(0,ted.del) + @buf.slice(ted.del + 1)
+        when 'ins'
+          {at,cha} = ted.ins
+          @buf = @buf.slice(0,at) + cha + @buf.slice(at)
+        else throw "%sole-edit -lost.#{str ted}"
   #
   transmute: (sin,dex)->
-    $this = `this`
     switch
       when sin == 'nop' or dex == 'nop' then dex
       when sin.reduce
-        sin.reduce ((dex,syn) -> $this.transmute(syn,dex)), dex
-      when dex.map then dex.map (dax) -> $this.transmute(sin,dax)
+        sin.reduce ((dex,syn) => @transmute(syn,dex)), dex
+      when dex.map then dex.map (dax) => @transmute(sin,dax)
       when dex.set != undefined then dex
       else switch Object.keys(sin)[0]
         when 'set' then 'nop'
@@ -39,7 +39,7 @@ class window.Share
           switch Object.keys(dex)[0]
             when 'del' then if at < dex.del then dex.del++
             when 'ins' then if at < dex.ins.at or
-                              (at == dex.ins.at and cha < dex.ins.cha)
+                              (at == dex.ins.at and !(cha <= dex.ins.cha))
                 dex.ins.at++
           return dex
         else throw "%sole-edit -lost.#{str sin}"
@@ -50,19 +50,20 @@ class window.Share
     @apply ted
   #
   inverse: (ted)->
-    switch true
+    switch
       when 'nop' == ted then ted
-      when undefined != ted.map
-        ted.map( (tad)-> res=@inverse(tad); @apply(tad); res).reverse()
-      when undefined != ted.set then set: @buf
-      when undefined != ted.ins then del: ted.ins
-      when undefined != ted.del then ins: at: ted.del, cha: @buf[ted.del]
-      else throw 'bad sole-edit'
+      when ted.map
+        ted.map( (tad)=> res=@inverse tad; @apply tad; res).reverse()
+      else switch Object.keys(ted)[0]
+        when 'set' then set: @buf
+        when 'ins' then del: ted.ins
+        when 'del' then ins: at: ted.del, cha: @buf[ted.del]
+        else throw "%sole-edit -lost.#{str ted}"
   #
   receive: ({ler,ted})->
     if !(ler[1] is @ven[1]) 
       throw "-out-of-sync.[#{str ler} #{str @ven}]"
-    @leg = @leg[0 ... (@ven[0] - ler[0])]
+    @leg = @leg.slice @leg.length + ler[0] - @ven[0] 
     dat = @transmute @leg, ted
     @ven[1]++; @apply dat; dat
   #

From 71489b6b628e7211dd9165b4fa27a433dc109005 Mon Sep 17 00:00:00 2001
From: Anton Dyudin 
Date: Tue, 14 Apr 2015 19:12:08 -0700
Subject: [PATCH 42/89] later prep

---
 main/pub/sole/fab/hymn.hook | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/main/pub/sole/fab/hymn.hook b/main/pub/sole/fab/hymn.hook
index a3e3cf110..1d25829e3 100644
--- a/main/pub/sole/fab/hymn.hook
+++ b/main/pub/sole/fab/hymn.hook
@@ -50,9 +50,6 @@
         div {}, lines
       
       $ ->
-        termRev = 0
-        pressed = []
-        deltim = null
 
         met = $('
').text('m').css(display: 'none').appendTo(term).width()
         subs = ""
@@ -108,16 +105,10 @@
         urb.bind "/sole", {wire:"/"}, (err,d)->
           if err then console.log err
           else if d.data then peer d.data
-
-        sendAction = (data)->
-          urb.send {mark: 'sole-action', data}, (e,res)->
-            if res.status isnt 200 then $('#err')[0].innerText = res.data.mess
-        
-        doEdit = (ted)->
-          det = buffer.transmit ted
-          sync ted
-          sendAction {det}
+          
         
+        pressed = []
+        deltim = null
         #later = (data)->
         #  if data
         #    pressed.push data
@@ -129,6 +120,16 @@
         #    pressed = []
         #  ), 500
 
+        sendAction = (data)->
+          urb.send {mark: 'sole-action', data}, (e,res)->
+            if res.status isnt 200 then $('#err')[0].innerText = res.data.mess
+        
+        doEdit = (ted)->
+          det = buffer.transmit ted
+          sync ted
+          sendAction {det}
+        
+        
         Mousetrap.handleKey = (char, mod, e)->
           norm = {
             capslock:  'caps'

From fff344f9ff8c39f0620cd0af436774dbd2feb7fc Mon Sep 17 00:00:00 2001
From: Anton Dyudin 
Date: Thu, 16 Apr 2015 12:40:53 -0700
Subject: [PATCH 43/89] reconnect to console

---
 main/pub/sole/fab/hymn.hook | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/main/pub/sole/fab/hymn.hook b/main/pub/sole/fab/hymn.hook
index 1d25829e3..49fa7fba7 100644
--- a/main/pub/sole/fab/hymn.hook
+++ b/main/pub/sole/fab/hymn.hook
@@ -19,7 +19,7 @@
             "react/0.11.0/react.js"
         ==
     ;script(src "/~/at/main/lib/urb.js");
-    ;script: urb.appl = 'talk'
+    ;script: urb.appl = 'dojo'
     ;style:'''
            #term {
              width: 100%;

From f917d859af13f14d0df35403b4cd64d09f5dd97e Mon Sep 17 00:00:00 2001
From: Anton Dyudin 
Date: Thu, 16 Apr 2015 15:45:18 -0700
Subject: [PATCH 44/89] urb.wall disableable by setting urb.wal===false

---
 main/lib/urb.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/main/lib/urb.js b/main/lib/urb.js
index 38f8630e6..1e5fe2b44 100644
--- a/main/lib/urb.js
+++ b/main/lib/urb.js
@@ -33,7 +33,7 @@ window.urb.req = function(method,url,params,json,cb) {
         if(res.data.reload)
           res.reload = res.data.reload
       } catch(e) {
-        if(urb.wall || true) document.write(this.responseText) // XX
+        if(urb.wall !== false) document.write(this.responseText) // XX
         err = {
           message:"Failed to parse JSON",
           raw:this.responseText

From 96e1eca2b4719965643cb4f10baf33904d3c115a Mon Sep 17 00:00:00 2001
From: Anton Dyudin 
Date: Thu, 16 Apr 2015 16:22:30 -0700
Subject: [PATCH 45/89] jesc control character escaping

---
 arvo/zuse.hoon | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arvo/zuse.hoon b/arvo/zuse.hoon
index eda940dc2..759681b19 100644
--- a/arvo/zuse.hoon
+++ b/arvo/zuse.hoon
@@ -965,8 +965,9 @@
   (add (div ~s1 2.000) (sub a ~1970.1.1))
 ::
 ++  jesc
+  =+  utf=|=(a=@ ['\\' 'u' ((x-co 4):co a)]) 
   |=  a=@  ^-  tape
-  ?+  a  [a ~]
+  ?+  a  ?:((gth a 0x1f) [a ~] (utf a))
     10  "\\n"
     34  "\\\""
     92  "\\\\"

From dab189541aa178b4270bfab032a4ebc6684ee198 Mon Sep 17 00:00:00 2001
From: Anton Dyudin 
Date: Thu, 16 Apr 2015 16:41:00 -0700
Subject: [PATCH 46/89] fixed reload order

---
 main/app/helm/core.hook | 48 ++++++++++++++++++-----------------------
 1 file changed, 21 insertions(+), 27 deletions(-)

diff --git a/main/app/helm/core.hook b/main/app/helm/core.hook
index 1e381faf2..7d821f48d 100644
--- a/main/app/helm/core.hook
+++ b/main/app/helm/core.hook
@@ -74,8 +74,8 @@
   ::
   ++  he-wish-reset
     ^+  .
-    =-  %_(+ moz (weld zum moz))
-    ^=  zum  %-  flop  ^-  (list move)
+    =-  %_(+ moz (weld (flop zum) moz))
+    ^-  zum=(list move)
     =+  top=`path`/(scot %p our.hid)/arvo/(scot %da lat.hid)
     :-  [ost %pass /reset %d %flog %vega (weld top `path`/hoon)]
     %+  turn
@@ -96,31 +96,25 @@
   ::
   ++  he-wish-reload
     |=  all=(list term)
-    %_    +>.$
-        moz
-      %-  weld
-      :_  moz
-      %+  turn  all
-      =+  ark=(arch .^(%cy /(scot %p our.hid)/arvo/(scot %da lat.hid)))
-      =+  van=(~(tap by r.ark))
-      |=  nam=@tas
-      =.  nam
-        ?.  =(1 (met 3 nam))
-          nam
-        =+  ^-  zaz=(list ,[p=span ~])
-            (skim van |=([a=term ~] =(nam (end 3 1 a))))
-        ?>  ?=([[@ ~] ~] zaz)
-        `term`p.i.zaz
-      =+  tip=(end 3 1 nam)
-      =+  pax=[(scot %p our.hid) %arvo (scot %da lat.hid) nam %hoon ~]
-      :*  ost
-          %pass
-          /reload
-          %d
-          %flog
-          [%veer ?:(=('z' tip) %$ tip) pax (,@ .^(%cx pax))]
-      ==
-    ==
+    =-  %_(+ moz (weld (flop zum) moz))
+    ^-  zum=(list move)
+    =+  top=`path`/(scot %p our.hid)/arvo/(scot %da lat.hid)
+    %+  turn  all
+    =+  ark=(arch .^(%cy /(scot %p our.hid)/arvo/(scot %da lat.hid)))
+    =+  van=(~(tap by r.ark))
+    |=  nam=@tas
+    =.  nam
+      ?.  =(1 (met 3 nam))
+        nam
+      =+  ^-  zaz=(list ,[p=span ~])
+          (skim van |=([a=term ~] =(nam (end 3 1 a))))
+      ?>  ?=([[@ ~] ~] zaz)
+      `term`p.i.zaz
+    =+  tip=(end 3 1 nam)
+    =.  tip  ?:(=('z' tip) %$ tip)
+    =+  pax=`path`(welp top /[nam])
+    =+  txt=((hard ,@) .^(%cx (welp pax /hoon)))
+    [ost %pass /reload %d %flog %veer tip pax txt]
   ::
   ++  he-wish-sync
     |=  [syd=@tas her=@p sud=@tas ~]

From 7ae4742d10937b6350d3d609f4cd5779ee5dd03f Mon Sep 17 00:00:00 2001
From: Philip C Monk 
Date: Thu, 16 Apr 2015 20:22:39 -0400
Subject: [PATCH 47/89] boots again

---
 main/arvo/clay.hoon | 165 +++++++++++++++++++++++++++++++++-----------
 main/arvo/ford.hoon |   1 +
 main/arvo/hoon.hoon |   1 +
 3 files changed, 125 insertions(+), 42 deletions(-)

diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon
index fa1a9193e..b99072d95 100644
--- a/main/arvo/clay.hoon
+++ b/main/arvo/clay.hoon
@@ -159,6 +159,7 @@
               dif=(unit (list (trel path lobe cage)))   ::  changes
               muh=(map path lobe)                       ::  store hashes
               mut=(unit (list (trel path lobe cage)))   ::  mutations
+              mim=(map path mime)                       ::  mime cache
           ==                                            ::
 --  =>
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@@ -198,10 +199,10 @@
       tag
     ==
   ::
-  ++  aver                                            ::  read
+  ++  aver                                              ::  read
     |=  mun=mood
     ^-  (unit (unit (each cage silk)))
-    ?:  &(=(p.mun %u) !=(p.q.mun now))                ::  prevent bad things
+    ?:  &(=(p.mun %u) !=(p.q.mun now))                  ::  prevent bad things
       ~&  [%clay-fail p.q.mun %now now]
       !!
     =+  ezy=?~(ref ~ (~(get by haw.u.ref) mun))
@@ -352,7 +353,7 @@
     ==
   ::
   ++  echo                                              ::  announce changes
-    |=  [wen=@da mim=(map path mime) lem=nori]
+    |=  [wen=@da lem=nuri]
     ^+  +>
     %_    +>.$
         yel
@@ -365,7 +366,7 @@
            :_  $(q.p.lem t.q.p.lem)
            :-  hen
            :+  %note
-             ?-(-.q.i.q.p.lem %del '-', %ins '+', %mut ';', %dif ':')
+             ?-(-.q.i.q.p.lem %del '-', %ins '+', %dif ':')
            [%leaf (spud (weld pre p.i.q.p.lem))]
       ==
     ==
@@ -373,21 +374,29 @@
   ++  edit                                              ::  apply changes
     |=  [wen=@da lem=nori]
     ^+  +>
+    ~&  >>  [%editing-at wen let.dom]
     ?:  ?=(%| -.lem)
       =^  hat  +>.$
         (edit:ze wen lem)
       ?~  hat
         +>.$
-      (echo:(checkout-ankh u.hat) wen ~ lem)
+      (echo:(checkout-ankh u.hat) wen lem)
     ?.  =(~ dok)
       ~&  %already-applying-changes  +>
     =+  del=(skim q.p.lem :(corl (cury test %del) head tail))
     =+  ins=(skim q.p.lem :(corl (cury test %ins) head tail))
     =+  dif=(skim q.p.lem :(corl (cury test %dif) head tail))
     =+  mut=(skim q.p.lem :(corl (cury test %mut) head tail))
-    =+  inn=(skim ins :(corl (cury test %hoon) head tail tail))  ::  XX  wrong
-    =+  ink=(skim ins :(corl (cury test %ins) head tail tail))
-    =-  %_    +>.$                                      ::  XX  hoo{k,n}
+    =^  ink  ins
+      ^-  [(list (pair path miso)) (list (pair path miso))]
+      %+  skid  `(list (pair path miso))`ins
+      |=  [pax=path mis=miso]
+      ?>  ?=(%ins -.mis)
+      =-  ~&  >  [%nyay pax p.p.mis -]  -
+      ?&  ?=([?(%hoon %hook) *] (flop pax))
+          ?=(%mime p.p.mis)
+      ==
+    =-  %_    +>.$
             tag  (welp - tag)
             dok
           :-  ~
@@ -395,52 +404,99 @@
               |=  [pax=path mis=miso]
               ?>  ?=(%del -.mis)
               [pax p.mis]
-              %+  murn  
+          ::
+              %+  turn  ink
+              |=  [pax=path mis=miso]
+              ^-  (pair path cage)
+              ?>  ?=(%ins -.mis)
+              =+  =>((flop pax) ?~(. %$ i))
+              [pax - [%atom %t] ((hard ,@t) +>.q.q.p.mis)]
+          ::
               ~
+          ::
               %-  mo
               %+  turn  dif
               |=  [pax=path mis=miso]
-              ?>  ?=(%dif -.mis]
+              ?>  ?=(%dif -.mis)
               [pax p.mis]
+          ::
               ~
+          ::
               %-  mo
               %+  turn  mut
               |=  [pax=path mis=miso]
               ?>  ?=(%mut -.mis)
               [pax (page-to-lobe:ze p.mis q.q.mis)]
+          ::
               ~
+          ::
+              %-  mo  ^-  (list (pair path mime))
+              ;:  welp
+                ^-  (list (pair path mime))
+                %+  murn  ins
+                |=  [pax=path mis=miso]
+                ^-  (unit (pair path mime))
+                ?>  ?=(%ins -.mis)
+                ?.  ?=(%mime p.p.mis)
+                  ~&  >  [%nuh-uh pax p.p.mis]
+                  ~
+                ~&  >  [%well-okay pax p.p.mis]
+                `[pax ((hard mime) q.q.p.mis)]
+              ::
+                ^-  (list (pair path mime))
+                %+  murn  ink
+                |=  [pax=path mis=miso]
+                ^-  (unit (pair path mime))
+                ?>  ?=(%ins -.mis)
+                ?>  ?=(%mime p.p.mis)
+                ~&  >  [%gotcha pax p.p.mis]
+                `[pax ((hard mime) q.q.p.mis)]
+              ::
+                ^-  (list (pair path mime))
+                %+  murn  mut
+                |=  [pax=path mis=miso]
+                ^-  (unit (pair path mime))
+                ?>  ?=(%mut -.mis)
+                ?.  ?=(%mime p.q.mis)
+                  ~&  >  [%bad-idea pax p.q.mis]
+                  ~
+                ~&  >  [%good-idea pax p.q.mis]
+                `[pax ((hard mime) q.q.q.mis)]
+              ==
           ==
         ==
     ^-  (list move)
     :~  :*  hen  %pass
-            [%inserting (scot %p who) syd (scot %da wen)]
+            [%inserting (scot %p who) syd (scot %da wen) ~]
             %f  %exec  who  [who syd %da wen]  ~  %tabl
             ^-  (list (pair silk silk))
             %+  turn  ins
             |=  [pax=path mis=miso]
             ?>  ?=(%ins -.mis)
+            :-  [%done ~ %path -:!>(*path) pax]
             =+  =>((flop pax) ?~(. %$ i))
-            :-  [%done ~ -:!>(*path) pax]
             [%cast - [%done ~ p.mis]]
         ==
         :*  hen  %pass
-            [%diffing (scot %p who) syd (scot %da wen)]
+            [%diffing (scot %p who) syd (scot %da wen) ~]
             %f  %exec  who  [who syd %da wen]  ~  %tabl
             ^-  (list (pair silk silk))
             %+  turn  dif
             |=  [pax=path mis=miso]
             ?>  ?=(%dif -.mis)
-            =+  (need (need (read-x let.dom pax)))
+            =+  (need (need (read-x:ze let.dom pax)))
             ?>  ?=(%& -<)
-            [%pact p.- p.mis]
+            :-  [%done ~ %path -:!>(*path) pax]
+            [%pact [%done ~ p.-] [%done ~ p.mis]]
         ==
         :*  hen  %pass
-            [%mutating (scot %p who) syd (scot %da wen)]
+            [%mutating (scot %p who) syd (scot %da wen) ~]
             %f  %exec  who  [who syd %da wen]  ~  %tabl
             ^-  (list (pair silk silk))
             %+  turn  mut
             |=  [pax=path mis=miso]
             ?>  ?=(%mut -.mis)
+            :-  [%done ~ %path -:!>(*path) pax]
             [%diff [%done ~ p.mis] [%cast p.p.mis [%done ~ q.mis]]]
         ==
     ==
@@ -506,8 +562,7 @@
   ++  apply-edit
     |=  wen=@da
     ^+  +>
-    =+  ^=  hat
-        %^  edit:ze  wen  %&  :-  *cart
+    =+  ^-  sim=(list (pair path misu))
         ?~  dok
           ~|(%no-changes !!)
         ?>  ?=(^ ins.u.dok)
@@ -516,6 +571,9 @@
         ;:  welp
           ^-  (list (pair path misu))
           (turn del.u.dok |=([pax=path cay=cage] [pax %del cay]))
+        ::
+          ^-  (list (pair path misu))
+          (turn ink.u.dok |=([pax=path cay=cage] [pax %ins cay]))
         ::
           ^-  (list (pair path misu))
           (turn u.ins.u.dok |=([pax=path cay=cage] [pax %ins cay]))
@@ -526,10 +584,10 @@
           ^-  (list (pair path misu))
           (turn u.mut.u.dok |=([pax=path cal=[lobe cage]] [pax %dif cal]))
         ==
+    =+  hat=(edit:ze wen %& *cart sim)
     ?~  dok  ~&  %no-changes  !!
-    ?^  lon.u.dok  ~&  %not-done-diffing  !!
     ?~  -.hat
-      ([echo(dok ~)]:.(+>.$ +.hat) wen mim.u.dok %& *cart sot.u.dok)
+      ([echo(dok ~)]:.(+>.$ +.hat) wen %& *cart sim)
     (checkout-ankh(lat.ran lat.ran.+.hat) u.-.hat)
   ::
   ++  take-inserting
@@ -557,7 +615,7 @@
     ^+  +>
     ?~  dok
       ~&  %clay-take-diffing-unexpected-made  +>.$
-    ?.  =(~ ins.u.dok)
+    ?.  =(~ dif.u.dok)
       ~&  %clay-take-diffing-redundant-made  +>.$
     =-  =.  dif.u.dok  `-
         ?:  ?&  ?=(^ ins.u.dok)
@@ -566,9 +624,9 @@
           (apply-edit wen)
         +>.$
     ^-  (list (trel path lobe cage))
-    %+  murn  (tage-to-cages (made-to-tage res))
+    %+  turn  (tage-to-cages (made-to-tage res))
     |=  [pax=cage cay=cage]
-    ^-  (unit (pair path (pair lobe cage)))
+    ^-  (pair path (pair lobe cage))
     ?.  ?=(%path p.pax)
       ~|(%clay-take-diffing-strange-path-mark !!)
     =+  paf=((hard path) q.q.pax)
@@ -579,7 +637,7 @@
     ^+  +>
     ?~  dok
       ~&  %clay-take-mutating-unexpected-made  +>.$
-    ?.  =(~ ins.u.dng)
+    ?.  =(~ mut.u.dok)
       ~&  %clay-take-mutating-redundant-made  +>.$
     =-  =.  mut.u.dok  `-
         ?:  ?&  ?=(^ ins.u.dok)
@@ -596,7 +654,7 @@
     ?:  ?=(%null p.cay)
       ~
     =+  paf=((hard path) q.q.pax)
-    [paf (~(got by muh.u.dok) paf) cay]
+    `[paf (~(got by muh.u.dok) paf) cay]
     ::  |=  [wen=@da pax=path res=(each bead (list tank))]
     ::  ^+  +>
     ::  ?~  dok
@@ -640,24 +698,40 @@
         [[hen %note '!' %rose [" " "" ""] leaf/"clay patch failed" p.res] yel]
       ==
     ::  ~&  %editing
-    =^  hat  +>.$
-      (edit:ze now %& *cart ?~(dok ~|(%no-changes !!) sot.u.dok))
+    =+  ^-  sim=(list (pair path misu))
+        ?~  dok
+          ~|(%no-changes !!)
+        ?>  ?=(^ ins.u.dok)
+        ?>  ?=(^ dif.u.dok)
+        ?>  ?=(^ mut.u.dok)
+        ;:  welp
+          ^-  (list (pair path misu))
+          (turn del.u.dok |=([pax=path cay=cage] [pax %del cay]))
+        ::
+          ^-  (list (pair path misu))
+          (turn ink.u.dok |=([pax=path cay=cage] [pax %ins cay]))
+        ::
+          ^-  (list (pair path misu))
+          (turn u.ins.u.dok |=([pax=path cay=cage] [pax %ins cay]))
+        ::
+          ^-  (list (pair path misu))
+          (turn u.dif.u.dok |=([pax=path cal=[lobe cage]] [pax %dif cal]))
+        ::
+          ^-  (list (pair path misu))
+          (turn u.mut.u.dok |=([pax=path cal=[lobe cage]] [pax %dif cal]))
+        ==
+    =^  hat  +>.$  (edit:ze now %& *cart sim)  ::  XX  we do same thing in ++apply-edit
     ::  ~&  %edited
     =.  +>.$  wake
     ::  ~&  %woked
     ?~  dok  ~&  %no-dok  +>.$
-    ?^  lon.u.dok  ~&  %not-done-diffing  !!
     =>
       %=    .
           +>.$
-        ?<  ?=(~ hat)
-        %^    echo ::  :(checkout-ankh u.hat)
-            now
-          mim.u.dok
-        [%& *cart sot.u.dok]
+        ?<  ?=(~ hat)                                   ::  XX  whut?
+        (echo now %& *cart sim)
       ==
     ?~  dok  ~&  %no-dok  +>.$
-    ?^  lon.u.dok  ~&  %not-done-diffing  !!
     =+  cay=q.p.res
     ?@  p.cay  ~|  %patch-bad-marc  !!
     ::  ~&  %canning
@@ -691,21 +765,24 @@
         ==
     ::  ~&  %forming-ergo
     ::  =-  ~&  %formed-ergo  -
+    ~&  >>  [%already-dones (lent (~(tap by mim.u.dok)))]
     %_    +>.$
         dok  ~
         tag  ::  ?~(hez reg :_(reg [u.hez [%ergo who syd let.dom]]))
       :_  tag
-      :*  hen  [%ergoing (scot %p who) syd ~]  %f
+      :*  hen  %pass  [%ergoing (scot %p who) syd ~]  %f
           %exec  who  [who syd %da now]  ~  %tabl
           ^-  (list (pair silk silk))
-          %+  turn  sot.u.dok
+          %+  turn  sim
           |=  [a=path b=misu]
           ^-  (pair silk silk)
           :-  [%done ~ %path !>(a)]
           ?:  ?=(%del -.b)
             [%done ~ %null !>(~)]
           =+  (~(get by mim.u.dok) a)
-          ?^  -  [%done ~ %mime !>(u.-)]
+          ~&  >  [%maybe a]
+          ?^  -  ~&  >  %whew  [%done ~ %mime !>(u.-)]
+          ~&  >  %uh-oh
           :^  %cast  %mime  %done  :-  ~
           (need (read:ze %x [%ud let.dom] a))
       ==
@@ -1080,16 +1157,20 @@
         %delta      [%pact $(lob q.q.bol) [%volt ~ r.bol]]
       ==
     ::
-    ++  page-to-lobe  (corl shax jam)
+    ++  page-to-lobe  |=(* (shax (jam +<)))
     ++  make-direct                                     ::  make blob
       |=  p=page
       ^-  blob
       [%direct (page-to-lobe p) p]
     ::
     ++  make-delta                                      ::  make blob delta
-      |=  [p=lobe q=[p=mark q=lobe] r=page r=lobe]
+      |=  [p=[p=mark q=lobe] q=page]
       ^-  blob
-      [%delta p q r]
+      =+  t=[%delta 0 p q]
+      =+  ^=  has
+          %^  cat  7  (sham [%blob q.q])
+          (sham [%lobe p])
+      [%delta has p q]
     ::
     ++  make-yaki                                       ::  make yaki
       |=  [p=(list tako) q=(map path lobe) t=@da]
@@ -1142,10 +1223,10 @@
           =+  har=(~(get by hat) pax)
           ?~  har  !!
           %+  ~(put by bar)  pax
-          (make-delta [(lobe-to-mark u.har) u.har] [p q.q]:q.mys p.mys)
+          (make-delta [(lobe-to-mark u.har) u.har] [p q.q]:q.mys)
                                                         :: XX check vase !evil
         %+  ~(put by bar)  pax
-        (make-delta [(lobe-to-mark p.u.ber) p.u.ber] [p q.q]:q.mys p.mys)
+        (make-delta [(lobe-to-mark p.u.ber) p.u.ber] [p q.q]:q.mys)
                                                         :: XX check vase !evil
       ==
     ::
diff --git a/main/arvo/ford.hoon b/main/arvo/ford.hoon
index 18f92dee5..5d057905d 100644
--- a/main/arvo/ford.hoon
+++ b/main/arvo/ford.hoon
@@ -298,6 +298,7 @@
         :^    %pass
             [(scot %p our) (scot %ud num) (scot %ud p.kig) (tope bek ~)]
           %c
+        ~&  >>  [%camping bem]
         [%warp [our p.bem] q.bem [~ %sing ren r.bem (flop s.bem)]]
       ==
     ::
diff --git a/main/arvo/hoon.hoon b/main/arvo/hoon.hoon
index 013375a13..e10e191de 100644
--- a/main/arvo/hoon.hoon
+++ b/main/arvo/hoon.hoon
@@ -10213,6 +10213,7 @@
         eny=@                                           ::  entropy
         niz=(pair worm (list ,[p=@tas q=vase]))         ::  modules
     ==                                                  ::
+=.  lac  %|
 =<  |%
     ++  come  |=  [@ (list ovum) pone]                  ::  11
               ^-  [(list ovum) _+>]

From af8617dc9a70215828afeacb72ffec785d3178a3 Mon Sep 17 00:00:00 2001
From: Philip C Monk 
Date: Fri, 17 Apr 2015 19:21:54 -0400
Subject: [PATCH 48/89] removed printfs

---
 main/arvo/clay.hoon | 12 +-----------
 main/arvo/hoon.hoon |  1 -
 2 files changed, 1 insertion(+), 12 deletions(-)

diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon
index b99072d95..56926f891 100644
--- a/main/arvo/clay.hoon
+++ b/main/arvo/clay.hoon
@@ -374,7 +374,6 @@
   ++  edit                                              ::  apply changes
     |=  [wen=@da lem=nori]
     ^+  +>
-    ~&  >>  [%editing-at wen let.dom]
     ?:  ?=(%| -.lem)
       =^  hat  +>.$
         (edit:ze wen lem)
@@ -392,7 +391,6 @@
       %+  skid  `(list (pair path miso))`ins
       |=  [pax=path mis=miso]
       ?>  ?=(%ins -.mis)
-      =-  ~&  >  [%nyay pax p.p.mis -]  -
       ?&  ?=([?(%hoon %hook) *] (flop pax))
           ?=(%mime p.p.mis)
       ==
@@ -438,9 +436,7 @@
                 ^-  (unit (pair path mime))
                 ?>  ?=(%ins -.mis)
                 ?.  ?=(%mime p.p.mis)
-                  ~&  >  [%nuh-uh pax p.p.mis]
                   ~
-                ~&  >  [%well-okay pax p.p.mis]
                 `[pax ((hard mime) q.q.p.mis)]
               ::
                 ^-  (list (pair path mime))
@@ -449,7 +445,6 @@
                 ^-  (unit (pair path mime))
                 ?>  ?=(%ins -.mis)
                 ?>  ?=(%mime p.p.mis)
-                ~&  >  [%gotcha pax p.p.mis]
                 `[pax ((hard mime) q.q.p.mis)]
               ::
                 ^-  (list (pair path mime))
@@ -458,9 +453,7 @@
                 ^-  (unit (pair path mime))
                 ?>  ?=(%mut -.mis)
                 ?.  ?=(%mime p.q.mis)
-                  ~&  >  [%bad-idea pax p.q.mis]
                   ~
-                ~&  >  [%good-idea pax p.q.mis]
                 `[pax ((hard mime) q.q.q.mis)]
               ==
           ==
@@ -765,7 +758,6 @@
         ==
     ::  ~&  %forming-ergo
     ::  =-  ~&  %formed-ergo  -
-    ~&  >>  [%already-dones (lent (~(tap by mim.u.dok)))]
     %_    +>.$
         dok  ~
         tag  ::  ?~(hez reg :_(reg [u.hez [%ergo who syd let.dom]]))
@@ -780,9 +772,7 @@
           ?:  ?=(%del -.b)
             [%done ~ %null !>(~)]
           =+  (~(get by mim.u.dok) a)
-          ~&  >  [%maybe a]
-          ?^  -  ~&  >  %whew  [%done ~ %mime !>(u.-)]
-          ~&  >  %uh-oh
+          ?^  -  [%done ~ %mime !>(u.-)]
           :^  %cast  %mime  %done  :-  ~
           (need (read:ze %x [%ud let.dom] a))
       ==
diff --git a/main/arvo/hoon.hoon b/main/arvo/hoon.hoon
index e10e191de..013375a13 100644
--- a/main/arvo/hoon.hoon
+++ b/main/arvo/hoon.hoon
@@ -10213,7 +10213,6 @@
         eny=@                                           ::  entropy
         niz=(pair worm (list ,[p=@tas q=vase]))         ::  modules
     ==                                                  ::
-=.  lac  %|
 =<  |%
     ++  come  |=  [@ (list ovum) pone]                  ::  11
               ^-  [(list ovum) _+>]

From 8de064cf1f2f7b9ee635058afb4ae45e59d5ac51 Mon Sep 17 00:00:00 2001
From: Philip C Monk 
Date: Sat, 18 Apr 2015 03:31:58 -0400
Subject: [PATCH 49/89] new %meet compiles

---
 main/arvo/clay.hoon | 161 ++++++++++++++++++++++++++++++++------------
 1 file changed, 118 insertions(+), 43 deletions(-)

diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon
index 56926f891..8679c5ee8 100644
--- a/main/arvo/clay.hoon
+++ b/main/arvo/clay.hoon
@@ -6,7 +6,8 @@
 ++  bead  ,[p=(set beam) q=gage]                        ::  ford result
 ++  cane                                                ::  change set
           $:  new=(map path lobe)                       ::  new files
-              can=(map path cage)                       ::  diffs
+              cal=(map path lobe)                       ::  old diffs
+              can=(map path cage)                       ::  new diffs
               old=(map path ,~)                         ::  deleted files
           ==                                            ::
 ++  cult  (map duct rove)                               ::  subscriptions
@@ -1690,7 +1691,81 @@
             =+  (lent (~(tap in `(set yaki)`r)))
             (error:he %merge-criss-cross >[-]< ~)
           =.  bas.dat  n.r
-          diff-ali
+          ?:  ?=(?(%meet %meld) gem.dat)
+            diff-ali
+          =.  new.dal.dat
+            %-  mo
+            %+  skip  (~(tap by q.ali.dat))
+            |=  [pax=path lob=lobe]
+            (~(has by q.bas.dat) pax)
+          =.  cal.dal.dat
+            %-  mo
+            %+  skip  `(list (pair path lobe))`(~(tap by q.ali.dat))
+            |=  [pax=path lob=lobe]
+            =+  (~(get by q.bas.dat) pax)
+            |(=(~ -) =([~ lob] -))
+          =.  can.dal.dat
+            ~
+          =.  old.dal.dat
+            %-  mo  ^-  (list ,[path ~])
+            %+  murn  (~(tap by q.bas.dat))
+            |=  [pax=path lob=lobe]
+            ^-  (unit (pair path ,~))
+            ?.  =(~ (~(get by q.ali.dat) pax))
+              ~
+            `[pax ~]
+          =.  new.dob.dat
+            %-  mo
+            %+  skip  (~(tap by q.bob.dat))
+            |=  [pax=path lob=lobe]
+            (~(has by q.bas.dat) pax)
+          =.  cal.dob.dat
+            %-  mo
+            %+  skip  (~(tap by q.bob.dat))
+            |=  [pax=path lob=lobe]
+            =+  (~(get by q.bas.dat) pax)
+            |(=(~ -) =([~ lob] -))
+          =.  can.dob.dat
+            ~
+          =.  old.dob.dat
+            %-  mo  ^-  (list ,[path ~])
+            %+  murn  (~(tap by q.bas.dat))
+            |=  [pax=path lob=lobe]
+            ^-  (unit (pair path ,~))
+            ?.  =(~ (~(get by q.bob.dat) pax))
+              ~
+            `[pax ~]
+          =+  ^=  bof
+              %-  %~  int  by
+                  %-  ~(uni by `(map path ,*)`new.dal.dat)
+                  %-  ~(uni by `(map path ,*)`cal.dal.dat)
+                  %-  ~(uni by `(map path ,*)`can.dal.dat)
+                  `(map path ,*)`old.dal.dat
+              %-  ~(uni by `(map path ,*)`new.dob.dat)
+              %-  ~(uni by `(map path ,*)`cal.dob.dat)
+              %-  ~(uni by `(map path ,*)`can.dob.dat)
+              `(map path ,*)`old.dob.dat
+          ?^  bof
+            (error:he %meet-conflict >(~(run by `(map path ,*)`bof) ,_~)< ~)
+          =+  ^-  old=(map path lobe)
+              %+  roll  (~(tap by (~(uni by old.dal.dat) old.dob.dat)))
+              =<  .(old q.bas.dat)
+              |=  [[pax=path ~] old=(map path lobe)]
+              (~(del by old) pax)
+          =+  ^=  hat
+              %-  ~(uni by old)
+              %-  ~(uni by new.dal.dat)
+              %-  ~(uni by new.dob.dat)
+              %-  ~(uni by cal.dal.dat)
+              cal.dob.dat
+          =+  ^-  del=(map path ,?)
+              (~(run by (~(uni by old.dal.dat) old.dob.dat)) |=(~ %|))
+          =.  new.dat
+            (make-yaki [r.ali.dat r.bob.dat ~] hat now)
+          =.  hut.ran  (~(put by hut.ran) r.new.dat new.dat)
+          =.  erg.dat  %-  ~(uni by del)                ::  XX  totes wrong
+                       `(map path ,?)`(~(run by hat) |=(lobe %&))
+          checkout
         ==
       ::
       ++  diff-bas
@@ -1819,47 +1894,47 @@
         ^+  .
         |-  ^+  +.$
         ?+    gem.dat  ~|  %merge-weird-gem  !!
-            %meet
-          =+  ^=  bof
-              %-  %~  int  by
-                  %-  ~(uni by `(map path ,*)`new.dal.dat)
-                  %-  ~(uni by `(map path ,*)`can.dal.dat)
-                  `(map path ,*)`old.dal.dat
-              %-  ~(uni by `(map path ,*)`new.dob.dat)
-              %-  ~(uni by `(map path ,*)`can.dob.dat)
-              `(map path ,*)`old.dob.dat
-          ?^  bof
-            (error:he %meet-conflict >(~(run by `(map path ,*)`bof) ,_~)< ~)
-          =+  ^-  old=(map path lobe)
-              %+  roll  (~(tap by (~(uni by old.dal.dat) old.dob.dat)))
-              =<  .(old q.bas.dat)
-              |=  [[pax=path ~] old=(map path lobe)]
-              (~(del by old) pax)
-          =^  hat  lat.ran
-            ^-  [(map path lobe) (map lobe blob)]
-            %+  roll  (~(tap by (~(uni by can.dal.dat) can.dob.dat)))
-            =<  .(lat lat.ran)
-            |=  [[pax=path cay=cage] hat=(map path lobe) lat=(map lobe blob)]
-            =+  ^=  bol
-                =+  (~(get by q.bas.dat) pax)
-                ?~  -
-                  ~|  %meet-strange-diff-no-base
-                  !!
-                (make-delta [(lobe-to-mark u.-) u.-] [p q.q]:cay)
-            [(~(put by hat) pax p.bol) (~(put by lat) p.bol bol)]
-          =.  hat
-            %-  ~(uni by old)
-            %-  ~(uni by new.dal.dat)
-            %-  ~(uni by new.dob.dat)
-            hat
-          =+  ^-  del=(map path ,?)
-              (~(run by (~(uni by old.dal.dat) old.dob.dat)) |=(~ %|))
-          =.  new.dat
-            (make-yaki [r.ali.dat r.bob.dat ~] hat now)
-          =.  hut.ran  (~(put by hut.ran) r.new.dat new.dat)
-          =.  erg.dat  %-  ~(uni by del)                ::  XX  totes wrong
-                       `(map path ,?)`(~(run by hat) |=(lobe %&))
-          checkout
+          ::    %meet
+          ::  =+  ^=  bof
+          ::      %-  %~  int  by
+          ::          %-  ~(uni by `(map path ,*)`new.dal.dat)
+          ::          %-  ~(uni by `(map path ,*)`can.dal.dat)
+          ::          `(map path ,*)`old.dal.dat
+          ::      %-  ~(uni by `(map path ,*)`new.dob.dat)
+          ::      %-  ~(uni by `(map path ,*)`can.dob.dat)
+          ::      `(map path ,*)`old.dob.dat
+          ::  ?^  bof
+          ::    (error:he %meet-conflict >(~(run by `(map path ,*)`bof) ,_~)< ~)
+          ::  =+  ^-  old=(map path lobe)
+          ::      %+  roll  (~(tap by (~(uni by old.dal.dat) old.dob.dat)))
+          ::      =<  .(old q.bas.dat)
+          ::      |=  [[pax=path ~] old=(map path lobe)]
+          ::      (~(del by old) pax)
+          ::  =^  hat  lat.ran
+          ::    ^-  [(map path lobe) (map lobe blob)]
+          ::    %+  roll  (~(tap by (~(uni by can.dal.dat) can.dob.dat)))
+          ::    =<  .(lat lat.ran)
+          ::    |=  [[pax=path cay=cage] hat=(map path lobe) lat=(map lobe blob)]
+          ::    =+  ^=  bol
+          ::        =+  (~(get by q.bas.dat) pax)
+          ::        ?~  -
+          ::          ~|  %meet-strange-diff-no-base
+          ::          !!
+          ::        (make-delta [(lobe-to-mark u.-) u.-] [p q.q]:cay)
+          ::    [(~(put by hat) pax p.bol) (~(put by lat) p.bol bol)]
+          ::  =.  hat
+          ::    %-  ~(uni by old)
+          ::    %-  ~(uni by new.dal.dat)
+          ::    %-  ~(uni by new.dob.dat)
+          ::    hat
+          ::  =+  ^-  del=(map path ,?)
+          ::      (~(run by (~(uni by old.dal.dat) old.dob.dat)) |=(~ %|))
+          ::  =.  new.dat
+          ::    (make-yaki [r.ali.dat r.bob.dat ~] hat now)
+          ::  =.  hut.ran  (~(put by hut.ran) r.new.dat new.dat)
+          ::  =.  erg.dat  %-  ~(uni by del)                ::  XX  totes wrong
+          ::               `(map path ,?)`(~(run by hat) |=(lobe %&))
+          ::  checkout
         ::
             ?(%mate %meld)
           =+  ^=  bof

From 872bb5b1c117368c25023846888763cdb1e27a7c Mon Sep 17 00:00:00 2001
From: Philip C Monk 
Date: Mon, 20 Apr 2015 16:42:18 -0400
Subject: [PATCH 50/89] cal in mate/meld

---
 main/arvo/clay.hoon | 104 ++++++++++++++++++++------------------------
 main/arvo/hoon.hoon |   2 +-
 2 files changed, 48 insertions(+), 58 deletions(-)

diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon
index 8679c5ee8..65ffdfdc2 100644
--- a/main/arvo/clay.hoon
+++ b/main/arvo/clay.hoon
@@ -1691,7 +1691,7 @@
             =+  (lent (~(tap in `(set yaki)`r)))
             (error:he %merge-criss-cross >[-]< ~)
           =.  bas.dat  n.r
-          ?:  ?=(?(%meet %meld) gem.dat)
+          ?:  ?=(?(%mate %meld) gem.dat)
             diff-ali
           =.  new.dal.dat
             %-  mo
@@ -1700,7 +1700,7 @@
             (~(has by q.bas.dat) pax)
           =.  cal.dal.dat
             %-  mo
-            %+  skip  `(list (pair path lobe))`(~(tap by q.ali.dat))
+            %+  skip  (~(tap by q.ali.dat))
             |=  [pax=path lob=lobe]
             =+  (~(get by q.bas.dat) pax)
             |(=(~ -) =([~ lob] -))
@@ -1737,14 +1737,19 @@
             `[pax ~]
           =+  ^=  bof
               %-  %~  int  by
-                  %-  ~(uni by `(map path ,*)`new.dal.dat)
-                  %-  ~(uni by `(map path ,*)`cal.dal.dat)
-                  %-  ~(uni by `(map path ,*)`can.dal.dat)
+                  =-  ~&  >  [%first -]  -
+                  %-  ~(uni by =-(~&(> [%uno -] -) `(map path ,*)`new.dal.dat))
+                  %-  ~(uni by =-(~&(> [%dos -] -) `(map path ,*)`cal.dal.dat))
+                  %-  ~(uni by =-(~&(> [%tres -] -) `(map path ,*)`can.dal.dat))
+                  =-  ~&  >  [%quatro -]  -
                   `(map path ,*)`old.dal.dat
-              %-  ~(uni by `(map path ,*)`new.dob.dat)
-              %-  ~(uni by `(map path ,*)`cal.dob.dat)
-              %-  ~(uni by `(map path ,*)`can.dob.dat)
+              =-  ~&  >  [%second -]  -
+              %-  ~(uni by =-(~&(> [%adin -] -) `(map path ,*)`new.dob.dat))
+              %-  ~(uni by =-(~&(> [%dva -] -) `(map path ,*)`cal.dob.dat))
+              %-  ~(uni by =-(~&(> [%tri -] -) `(map path ,*)`can.dob.dat))
+              =-  ~&  >  [%chteri -]  -
               `(map path ,*)`old.dob.dat
+          ~&  bof
           ?^  bof
             (error:he %meet-conflict >(~(run by `(map path ,*)`bof) ,_~)< ~)
           =+  ^-  old=(map path lobe)
@@ -1769,7 +1774,7 @@
         ==
       ::
       ++  diff-bas
-        |=  [nam=term yak=yaki oth=(pair ship desk)]
+        |=  [nam=term yak=yaki oth=(pair ship desk) yuk=yaki]
         ^+  +>
         =-  %_(+>.$ tag [- tag])
         :*  hen  %pass
@@ -1780,19 +1785,24 @@
             %+  murn  (~(tap by q.bas.dat))
             |=  [pax=path lob=lobe]
             ^-  (unit (pair silk silk))
-            =+  (~(get by q.yak) pax)
+            =+  a=(~(get by q.yak) pax)
+            ?~  a
+              ~
+            ?:  =(lob u.a)
+              ~
+            =+  (~(get by q.yuk) pax)
             ?~  -
               ~
-            ?:  =(lob u.-)
+            ?:  =(u.a u.-)
               ~
             :-  ~
             :-  [%done ~ %path !>(pax)]
-            [%diff (lobe-to-silk pax lob) (lobe-to-silk pax u.-)]
+            [%diff (lobe-to-silk pax lob) (lobe-to-silk pax u.a)]
         ==
       ::
       ++  diff-ali
         ^+  .
-        (diff-bas %ali ali.dat ali)
+        (diff-bas %ali ali.dat ali bob.dat)
       ::
       ++  diffed-ali
         |=  res=(each bead (list tank))
@@ -1830,6 +1840,16 @@
           %+  skip  (~(tap by q.ali.dat))
           |=  [pax=path lob=lobe]
           (~(has by q.bas.dat) pax)
+        =.  cal.dal.dat
+          %-  mo
+          %+  skim  (~(tap by q.bas.dat))
+          |=  [pax=path lob=lobe]
+          =+  a=(~(get by q.ali.dat) pax)
+          =+  b=(~(get by q.bob.dat) pax)
+          ?&  ?=(^ a)
+              !=([~ lob] a)
+              =([~ lob] b)
+          ==
         =.  can.dal.dat  can
         =.  old.dal.dat
           %-  mo  ^-  (list ,[path ~])
@@ -1842,7 +1862,7 @@
       ::
       ++  diff-bob
         ^+  .
-        (diff-bas %bob bob.dat bob)
+        (diff-bas %bob bob.dat bob ali.dat)
       ::
       ++  diffed-bob
         |=  res=(each bead (list tank))
@@ -1880,6 +1900,16 @@
           %+  skip  (~(tap by q.bob.dat))
           |=  [pax=path lob=lobe]
           (~(has by q.bas.dat) pax)
+        =.  cal.dob.dat
+          %-  mo
+          %+  skim  (~(tap by q.bas.dat))
+          |=  [pax=path lob=lobe]
+          =+  a=(~(get by q.ali.dat) pax)
+          =+  b=(~(get by q.bob.dat) pax)
+          ?&  ?=(^ b)
+              !=([~ lob] b)
+              =([~ lob] a)
+          ==
         =.  can.dob.dat  can
         =.  old.dob.dat
           %-  mo  ^-  (list ,[path ~])
@@ -1893,49 +1923,7 @@
       ++  merge
         ^+  .
         |-  ^+  +.$
-        ?+    gem.dat  ~|  %merge-weird-gem  !!
-          ::    %meet
-          ::  =+  ^=  bof
-          ::      %-  %~  int  by
-          ::          %-  ~(uni by `(map path ,*)`new.dal.dat)
-          ::          %-  ~(uni by `(map path ,*)`can.dal.dat)
-          ::          `(map path ,*)`old.dal.dat
-          ::      %-  ~(uni by `(map path ,*)`new.dob.dat)
-          ::      %-  ~(uni by `(map path ,*)`can.dob.dat)
-          ::      `(map path ,*)`old.dob.dat
-          ::  ?^  bof
-          ::    (error:he %meet-conflict >(~(run by `(map path ,*)`bof) ,_~)< ~)
-          ::  =+  ^-  old=(map path lobe)
-          ::      %+  roll  (~(tap by (~(uni by old.dal.dat) old.dob.dat)))
-          ::      =<  .(old q.bas.dat)
-          ::      |=  [[pax=path ~] old=(map path lobe)]
-          ::      (~(del by old) pax)
-          ::  =^  hat  lat.ran
-          ::    ^-  [(map path lobe) (map lobe blob)]
-          ::    %+  roll  (~(tap by (~(uni by can.dal.dat) can.dob.dat)))
-          ::    =<  .(lat lat.ran)
-          ::    |=  [[pax=path cay=cage] hat=(map path lobe) lat=(map lobe blob)]
-          ::    =+  ^=  bol
-          ::        =+  (~(get by q.bas.dat) pax)
-          ::        ?~  -
-          ::          ~|  %meet-strange-diff-no-base
-          ::          !!
-          ::        (make-delta [(lobe-to-mark u.-) u.-] [p q.q]:cay)
-          ::    [(~(put by hat) pax p.bol) (~(put by lat) p.bol bol)]
-          ::  =.  hat
-          ::    %-  ~(uni by old)
-          ::    %-  ~(uni by new.dal.dat)
-          ::    %-  ~(uni by new.dob.dat)
-          ::    hat
-          ::  =+  ^-  del=(map path ,?)
-          ::      (~(run by (~(uni by old.dal.dat) old.dob.dat)) |=(~ %|))
-          ::  =.  new.dat
-          ::    (make-yaki [r.ali.dat r.bob.dat ~] hat now)
-          ::  =.  hut.ran  (~(put by hut.ran) r.new.dat new.dat)
-          ::  =.  erg.dat  %-  ~(uni by del)                ::  XX  totes wrong
-          ::               `(map path ,?)`(~(run by hat) |=(lobe %&))
-          ::  checkout
-        ::
+        ?+    gem.dat  ~|  [%merge-weird-gem gem.dat]  !!
             ?(%mate %meld)
           =+  ^=  bof
               %-  %~  int  by
@@ -2065,6 +2053,8 @@
           %-  ~(uni by old)
           %-  ~(uni by new.dal.dat)
           %-  ~(uni by new.dob.dat)
+          %-  ~(uni by cal.dal.dat)
+          %-  ~(uni by cal.dob.dat)
           %-  ~(uni by hat)
           cas
         =+  ^-  del=(map path ,?)
diff --git a/main/arvo/hoon.hoon b/main/arvo/hoon.hoon
index 013375a13..d49d48524 100644
--- a/main/arvo/hoon.hoon
+++ b/main/arvo/hoon.hoon
@@ -1853,7 +1853,7 @@
     |-  ^-  (unit ,@)
     ?~  a  ~
     ?:  =(b n.a)  [~ u=(peg c 2)]
-    ?:  (gor b n.a)
+    ?:  (hor b n.a)
       $(a l.a, c (peg c 6))
     $(a r.a, c (peg c 7))
   ::

From 5ebe273494067c2b941aed55c1f92b2a9b5baa1b Mon Sep 17 00:00:00 2001
From: Anton Dyudin 
Date: Mon, 20 Apr 2015 14:46:40 -0700
Subject: [PATCH 51/89] added sole history

---
 main/app/sole/core.hook     |  16 +---
 main/pub/sole/fab/hymn.hook | 165 +++++++++++++++++++++++-------------
 2 files changed, 110 insertions(+), 71 deletions(-)

diff --git a/main/app/sole/core.hook b/main/app/sole/core.hook
index a34b0c061..cf5248a6b 100644
--- a/main/app/sole/core.hook
+++ b/main/app/sole/core.hook
@@ -574,18 +574,10 @@
       =-  [(add pos.inp (lent p.vew)) (weld (tuba p.vew) q.vew)]
       ^=  vew  ^-  (pair tape (list ,@c))
       ?:  vis.pom  [cad.pom buf.say.inp]
-      :-  ;:  welp
-            cad.pom
-            ?~  buf.say.inp  ~
-            ;:  welp
-              "<"
-              (scow %p (end 4 1 (sham buf.say.inp)))
-              "> "
-            ==
-          ==
-      =+  len=(lent buf.say.inp) 
-      |-  ^-  (list ,@c) 
-      ?:(=(0 len) ~ [`@c`'*' $(len (dec len))])
+      :-  %+  welp  cad.pom
+          ?~  buf.say.inp  ~
+          "<{(scow %p (end 4 1 (sham buf.say.inp)))}> "
+      (turn buf.say.inp ,_`@c`'*')
     --
   --
 ++  peer
diff --git a/main/pub/sole/fab/hymn.hook b/main/pub/sole/fab/hymn.hook
index 49fa7fba7..457830540 100644
--- a/main/pub/sole/fab/hymn.hook
+++ b/main/pub/sole/fab/hymn.hook
@@ -45,7 +45,7 @@
           span {style: background: 'lightgray'}, buf.slice(0,cur), "\u0332", buf.slice(cur)
         
       Matr = recl render: ->
-        lines = @props.rows.slice().reverse().map (lin)-> pre {}, lin, " "
+        lines = @props.rows.map (lin)-> pre {}, lin, " "
         lines.push Prompt {prompt:@props.prompt, input:@props.input, cursor:@props.cursor}
         div {}, lines
       
@@ -76,7 +76,14 @@
           if background
             setTimeout (-> flash $el,''), 50
             
-        matr = rend (Matr rows:[], prompt:"", input:"", history:[], cursor:0), term
+        matr = rend (Matr
+          rows:[]
+          prompt:""
+          input:""
+          cursor:0
+          history:[]
+          offset:0  ), term
+        window.matr = matr
         update = (a) -> matr.setProps a
         buffer = new Share ""
         window.buffer = buffer
@@ -85,8 +92,9 @@
         
         peer = (ruh) ->
           if ruh.map then return ruh.map peer
+          mapr = matr.props
           switch Object.keys(ruh)[0]
-            when 'txt' then update rows: [ruh.txt, matr.props.rows...]
+            when 'txt' then update rows: [mapr.rows..., ruh.txt]
             when 'tan' then ruh.tan.split("\n").reverse().map (txt)-> peer {txt}
             when 'hop' then update cursor: buffer.transpose ruh.hop #; peer act:'bel'
             when 'pro' then update prompt: ruh.pro.cad
@@ -98,7 +106,10 @@
               when 'nex' then update
                 input: ""
                 cursor: 0
-                history: [matr.props.input, matr.props.history...]
+                history: 
+                  if !mapr.input then mapr.history
+                  else [mapr.input, mapr.history...]
+                offset: 0
             #   else throw "Unknown "+(JSON.stringify ruh)
             else v = Object.keys(ruh); console.log v, ruh[v[0]]
         
@@ -138,66 +149,102 @@
             backspace: 'baxp'
             enter:     'entr'
           }
-          key = 
-            if char.length is 1
+          
+          key = switch
+            when char.length is 1
               if e.type is 'keypress'
+                chac = char.charCodeAt(0)
+                if chac < 32          # normalize ctrl keys
+                  char = String.fromCharCode chac | 96
                 str: char
-            else if e.type is 'keydown'
+            when e.type is 'keydown'
               if char isnt 'space'
                 act: norm[char] ? char
-            else if e.type is 'keyup' and norm[key] is 'caps'
+            when e.type is 'keyup' and norm[key] is 'caps'
               act: 'uncap'
-          if key
-            e.preventDefault()
-            curs = matr.props.cursor
-            if key.str
-              doEdit ins: cha: key.str, at: curs
-              update cursor: curs+1
-            switch key.act
-              when 'entr' then sendAction 'ret'
-              when 'left' then if curs > 0 
-                update cursor: curs-1
-              when 'right' then if curs < buffer.buf.length
-                update cursor: curs+1
-              when 'baxp' then if curs > 0
-                doEdit del: curs-1
-              #else (if key.act then console.log key.act)
-                
-            # amod = (arr)->
-            #   for i in arr
-            #     unless mod.indexOf(i) < 0
-            #       return yes
-            #   no
-            # if key.str or key.act is 'baxp' or key.act is 'entr'
-            #   termRev++
-            #   [bot, rest...] = old = matr.props.rows
-            #   matr.setProps rows:(
-            #     switch  key.act 
-            #       when 'baxp'
-            #         if amod ['ctrl', 'meta']
-            #           ['', rest...]
-            #         else if amod ['alt']
-            #           [(bot.replace /\ *[^ ]*$/, ''), rest...]
-            #         else if bot and bot.length 
-            #           [bot.slice(0, -1), rest...]
-            #         else if rest[0] and rest[0].length
-            #           res = rest.slice()
-            #           res[0] = res[0].slice(0, -1)
-            #           res
-            #         else rest
-            #       when 'entr'
-            #         ['', old...]
-            #       when undefined
-            #         if mod.length > 1 or (mod.length and !amod ['shift'])
-            #           old
-            #         else unless old and bot isnt null
-            #           [key.str]
-            #         #else if bot.length is termWif
-            #         #  [key.str, old...]
-            #         else [bot + key.str, rest...]
-            #   )
-            #   document.title = "Matri"  # XX  debug
-            # later {mod, key}
+          if !key then return
+          if key.act and key.act in mod
+            return
+          e.preventDefault()
+          mapr = matr.props
+          #[fore, aft] = (
+          #  [sli,cur] = [mapr.input.slice, mapr.cursor]
+          #  [sli(0, cur), sli(cur)]
+          #)
+
+          switch mod.sort().join '-'
+            when '', 'shift'
+              if key.str
+                doEdit ins: cha: key.str, at: mapr.cursor
+                update cursor: mapr.cursor+1
+              switch key.act
+                when 'entr' then sendAction 'ret'
+                when 'up'
+                  history = mapr.history.slice(); offset = mapr.offset
+                  if history[offset] == undefined
+                    return
+                  [input, history[offset]] = [history[offset], mapr.input]
+                  offset++
+                  update {offset, history, input, cursor: input.length}
+                when 'down'
+                  history = mapr.history.slice(); offset = mapr.offset
+                  offset--
+                  if history[offset] == undefined
+                    return
+                  [input, history[offset]] = [history[offset], mapr.input]
+                  update {offset, history, input, cursor: input.length}
+                when 'left' then if mapr.cursor > 0 
+                  update cursor: mapr.cursor-1
+                when 'right' then if mapr.cursor < buffer.buf.length
+                  update cursor: mapr.cursor+1
+                when 'baxp' then if mapr.cursor > 0
+                  doEdit del: mapr.cursor-1
+                #else (if key.act then console.log key.act)
+            when 'ctrl'
+              switch key.str
+                when 'a' then update cursor: 0
+                when 'e' then update cursor: mapr.input.length
+                else switch key.act
+                  when 'entr' then peer act: 'bel'
+                  else console.log mod, str key
+            else console.log mod, str key
+
+          
+          #amod = (arr)->
+          #  for i in arr
+          #    unless mod.indexOf(i) < 0
+          #      return yes
+          #  no
+          # if key.str or key.act is 'baxp' or key.act is 'entr'
+          #   termRev++
+          #   [bot, rest...] = old = matr.props.rows
+          #   matr.setProps rows:(
+          #     switch  key.act 
+          #       when 'baxp'
+          #         if amod ['ctrl', 'meta']
+          #           ['', rest...]
+          #         else if amod ['alt']
+          #           [(bot.replace /\ *[^ ]*$/, ''), rest...]
+          #         else if bot and bot.length 
+          #           [bot.slice(0, -1), rest...]
+          #         else if rest[0] and rest[0].length
+          #           res = rest.slice()
+          #           res[0] = res[0].slice(0, -1)
+          #           res
+          #         else rest
+          #       when 'entr'
+          #         ['', old...]
+          #       when undefined
+          #         if mod.length > 1 or (mod.length and !amod ['shift'])
+          #           old
+          #         else unless old and bot isnt null
+          #           [key.str]
+          #         #else if bot.length is termWif
+          #         #  [key.str, old...]
+          #         else [bot + key.str, rest...]
+          #   )
+          #   document.title = "Matri"  # XX  debug
+          # later {mod, key}
 
 
       '''

From 4934595617148bf9b6ee84620b77b2b29e7123e0 Mon Sep 17 00:00:00 2001
From: Philip C Monk 
Date: Mon, 20 Apr 2015 19:36:19 -0400
Subject: [PATCH 52/89] waypoint

---
 main/arvo/clay.hoon | 70 ++++++++++++++++++++++++++++++++++++---------
 1 file changed, 57 insertions(+), 13 deletions(-)

diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon
index 65ffdfdc2..a17b24154 100644
--- a/main/arvo/clay.hoon
+++ b/main/arvo/clay.hoon
@@ -47,6 +47,7 @@
               bas=yaki                                  ::  mergebase
               dal=cane                                  ::  diff(bas,ali)
               dob=cane                                  ::  diff(bas,bob)
+              bof=(map path (unit cage))                ::  conflicts
               new=yaki                                  ::  merge(dal,dob)
               ank=ankh                                  ::  new state
               erg=(map path ,?)                         ::  ergoable changes
@@ -1564,6 +1565,7 @@
           %diff-ali   %-  diffed-ali   ?>  ?=(%| -.res)  p.res
           %diff-bob   %-  diffed-bob   ?>  ?=(%| -.res)  p.res
           %merge      %-  merged       ?>  ?=(%| -.res)  p.res
+          %built      %-  built        ?>  ?=(%| -.res)  p.res
           %checkout   %-  checked-out  ?>  ?=(%| -.res)  p.res
           %ergo       %-  ergoed       ?>  ?=(%| -.res)  p.res
         ==
@@ -1925,16 +1927,6 @@
         |-  ^+  +.$
         ?+    gem.dat  ~|  [%merge-weird-gem gem.dat]  !!
             ?(%mate %meld)
-          =+  ^=  bof
-              %-  %~  int  by
-                  %-  ~(uni by `(map path ,*)`new.dal.dat)
-                  %-  ~(uni by `(map path ,*)`can.dal.dat)
-                  `(map path ,*)`old.dal.dat
-              %-  ~(uni by `(map path ,*)`new.dob.dat)
-              %-  ~(uni by `(map path ,*)`can.dob.dat)
-              `(map path ,*)`old.dob.dat
-          ?~  bof
-            $(gem.dat %meet)
           =-  %_(+.$ tag [- tag])
           :*  hen  %pass
               [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %merge ~]
@@ -1955,7 +1947,6 @@
       ::
       ++  merged
         |=  res=(each bead (list tank))
-        ^+  +>
         ?:  ?=(%| -.res)
           (error:he %merge-bad-made leaf/"merging failed" p.res)
         =+  cay=q.p.res
@@ -1986,6 +1977,61 @@
           ==
         ?:  ?=(%| -.gon.dat)
           +>.$
+        =.  bof.dat  bof
+        build
+      ::
+      ++  build
+        ^+  .
+        =-  %_(+ tag [- tag])
+        :*  hen  %pass
+            [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %checkout ~]
+            %f  %exec  p.bob  [p.bob q.bob cas.dat]  ~  %tabl
+            ^-  (list (pair silk silk))
+            %+  turn  (~(tap by bof.dat))
+            |=  [a=path b=(unit cage)]
+            ^-  (pair silk silk)
+            :-  [%done ~ %path !>(a)]
+            =+  (~(get by q.bas.dat) pax)
+            ?~  -
+              ~|  %mate-strange-diff-no-base
+              !!
+            [%pact (lobe-to-silk a u.-) [%volt ~ b]]
+        ==
+
+      ::
+      ++  built
+        |=  res=(each bead (list tank))
+        ^+  +>
+        ?:  ?=(%| -.res)
+          (error:he %build-bad-made leaf/"delta building failed" p.res)
+        =+  cay=q.p.res
+        ?@  p.cay
+          (error:he %build-bad-marc >p.cay< ~)
+        =|  bof=(map path (unit cage))
+        =>
+          |-  ^+  +
+          ?~  p.p.cay
+            +.$(bof ~)
+          =+  tal=%_($ cay [[%tabl t.p.p.cay] (slot 3 q.cay)])
+          ?:  ?=(%| -.gon.dat.tal)
+            tal
+          ?.  ?=(%path p.i.p.p.cay)
+            +.$(+>.$ (error:he %build-strange-marc-a >p.i.p.p.cay< ~))
+          ?.  ?=(@ q.i.p.p.cay)
+            +.$(+>.$ (error:he %build-strange-marc-b >q.i.p.p.cay< ~))
+          =+  coy=(slot 2 q.cay)
+          ?@  q.coy
+            +.$(+>.$ (error:he %build-strange-coy ~))
+          %_    +.$
+              bof
+            %+  ~(put by bof:tal)
+              ((hard path) -.q.coy)
+            ?:  ?=(%null q.i.p.p.cay)
+              ~
+            `[q.i.p.p.cay (slot 3 coy)]
+          ==
+        ?:  ?=(%| -.gon.dat)
+          +>.$
         =+  ^-  con=(map path ,*)                       ::  2-change conflict
             %-  mo
             %+  skim  (~(tap by bof))
@@ -2027,8 +2073,6 @@
             |=  [[pax=path ~] old=(map path lobe)]
             (~(del by old) pax)
         =+  ^-  can=(map path cage)                     ::  content changes
-            %-  ~(uni by can.dal.dat)
-            %-  ~(uni by can.dob.dat)
             %-  mo
             ^-  (list (pair path cage))
             %+  murn  (~(tap by bof))

From 4a94b574de83bdc48d0c6cb17ff704361202a432 Mon Sep 17 00:00:00 2001
From: Anton Dyudin 
Date: Mon, 20 Apr 2015 16:45:31 -0700
Subject: [PATCH 53/89] Tracking down lost requests

---
 arvo/eyre.hoon | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/arvo/eyre.hoon b/arvo/eyre.hoon
index c5a988ed6..fb4bd3d4f 100644
--- a/arvo/eyre.hoon
+++ b/arvo/eyre.hoon
@@ -1142,8 +1142,9 @@
       =.  eve  (add-even ven)
       =<  abet
       ?~  ude  done
-      :: ~&  got-even/ude
-      (give-even(hen p.u.ude, ude ~) q.u.ude num ven)
+      =.  hen  p.u.ude
+      =.  ..ix  (pass-note of//[ire] [%t %rest era])
+      (give-even(ude ~) q.u.ude num ven)
     ::
     ++  give-even
       |=  [pol=? num=@u ven=even]  ^+  done
@@ -1167,7 +1168,7 @@
     ++  poll
       |=  a=@u  ^+  ..ix
       ?:  =(a p.eve)
-        ?^  ude  ~&(e/ix/wait/%replaced abet(u.ude [hen &]))
+        ?^  ude  ~&(e/ix/wait/replaced=p.u.ude abet(u.ude [hen &]))
         =.  era  (add ~s30 now)
         (pass-note:abet(ude [~ hen &]) of//[ire] [%t %wait era])
       ?:  (gth a p.eve)  ~|(seq-high/cur=p.eve !!)

From e15a06ae4bf78ff7aedd2a473ad3ae87cfcd31e2 Mon Sep 17 00:00:00 2001
From: Anton Dyudin 
Date: Mon, 20 Apr 2015 16:46:08 -0700
Subject: [PATCH 54/89] communicate history changes to server

---
 main/pub/sole/fab/hymn.hook | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/main/pub/sole/fab/hymn.hook b/main/pub/sole/fab/hymn.hook
index 457830540..74c1fcd46 100644
--- a/main/pub/sole/fab/hymn.hook
+++ b/main/pub/sole/fab/hymn.hook
@@ -185,14 +185,16 @@
                     return
                   [input, history[offset]] = [history[offset], mapr.input]
                   offset++
-                  update {offset, history, input, cursor: input.length}
+                  doEdit set: input
+                  update {offset, history, cursor: input.length}
                 when 'down'
                   history = mapr.history.slice(); offset = mapr.offset
                   offset--
                   if history[offset] == undefined
                     return
                   [input, history[offset]] = [history[offset], mapr.input]
-                  update {offset, history, input, cursor: input.length}
+                  doEdit set: input
+                  update {offset, history, cursor: input.length}
                 when 'left' then if mapr.cursor > 0 
                   update cursor: mapr.cursor-1
                 when 'right' then if mapr.cursor < buffer.buf.length

From f5a0fa4f564003f5c7f7582c344221753610731d Mon Sep 17 00:00:00 2001
From: Anton Dyudin 
Date: Mon, 20 Apr 2015 17:55:00 -0700
Subject: [PATCH 55/89] Added alt-arrow navigation

---
 main/pub/sole/fab/hymn.hook | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/main/pub/sole/fab/hymn.hook b/main/pub/sole/fab/hymn.hook
index 74c1fcd46..d3e59604f 100644
--- a/main/pub/sole/fab/hymn.hook
+++ b/main/pub/sole/fab/hymn.hook
@@ -197,18 +197,26 @@
                   update {offset, history, cursor: input.length}
                 when 'left' then if mapr.cursor > 0 
                   update cursor: mapr.cursor-1
-                when 'right' then if mapr.cursor < buffer.buf.length
+                when 'right' then if mapr.cursor < mapr.input.length
                   update cursor: mapr.cursor+1
                 when 'baxp' then if mapr.cursor > 0
                   doEdit del: mapr.cursor-1
                 #else (if key.act then console.log key.act)
-            when 'ctrl'
-              switch key.str
-                when 'a' then update cursor: 0
-                when 'e' then update cursor: mapr.input.length
-                else switch key.act
-                  when 'entr' then peer act: 'bel'
-                  else console.log mod, str key
+            when 'ctrl' then switch key.str || key.act
+              when 'a','left'  then update cursor: 0
+              when 'e','right' then update cursor: mapr.input.length
+              when 'entr' then peer act: 'bel'
+              else console.log mod, str key
+            when 'alt' then switch key.str || key.act
+              when 'f','right'
+                rest = mapr.input.slice(mapr.cursor)
+                rest = rest.match(/[^a-z0-9]*[a-z0-9]*/)[0]
+                update cursor: mapr.cursor + rest.length
+              when 'b','left'
+                prev = mapr.input.slice(0,mapr.cursor)
+                prev = prev.split('').reverse().join('')  # XX
+                prev = prev.match(/[^a-z0-9]*[a-z0-9]*/)[0]
+                update cursor: mapr.cursor - prev.length
             else console.log mod, str key
 
           

From ba69927f53803e0587289ed60d351d11e1329f22 Mon Sep 17 00:00:00 2001
From: Philip C Monk 
Date: Tue, 21 Apr 2015 16:23:50 -0400
Subject: [PATCH 56/89] new hash algorithm works

---
 main/arvo/clay.hoon | 83 ++++++++++++++++++++++-----------------------
 1 file changed, 41 insertions(+), 42 deletions(-)

diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon
index a17b24154..aa39d010e 100644
--- a/main/arvo/clay.hoon
+++ b/main/arvo/clay.hoon
@@ -47,7 +47,8 @@
               bas=yaki                                  ::  mergebase
               dal=cane                                  ::  diff(bas,ali)
               dob=cane                                  ::  diff(bas,bob)
-              bof=(map path (unit cage))                ::  conflicts
+              bof=(map path (unit cage))                ::  conflict diffs
+              bop=(map path cage)                       ::  conflict patches
               new=yaki                                  ::  merge(dal,dob)
               ank=ankh                                  ::  new state
               erg=(map path ,?)                         ::  ergoable changes
@@ -1156,13 +1157,9 @@
       [%direct (page-to-lobe p) p]
     ::
     ++  make-delta                                      ::  make blob delta
-      |=  [p=[p=mark q=lobe] q=page]
+      |=  [p=lobe q=[p=mark q=lobe] r=page]
       ^-  blob
-      =+  t=[%delta 0 p q]
-      =+  ^=  has
-          %^  cat  7  (sham [%blob q.q])
-          (sham [%lobe p])
-      [%delta has p q]
+      [%delta p q r]
     ::
     ++  make-yaki                                       ::  make yaki
       |=  [p=(list tako) q=(map path lobe) t=@da]
@@ -1215,10 +1212,10 @@
           =+  har=(~(get by hat) pax)
           ?~  har  !!
           %+  ~(put by bar)  pax
-          (make-delta [(lobe-to-mark u.har) u.har] [p q.q]:q.mys)
+          (make-delta p.mys [(lobe-to-mark u.har) u.har] [p q.q]:q.mys)
                                                         :: XX check vase !evil
         %+  ~(put by bar)  pax
-        (make-delta [(lobe-to-mark p.u.ber) p.u.ber] [p q.q]:q.mys)
+        (make-delta p.mys [(lobe-to-mark p.u.ber) p.u.ber] [p q.q]:q.mys)
                                                         :: XX check vase !evil
       ==
     ::
@@ -1565,7 +1562,7 @@
           %diff-ali   %-  diffed-ali   ?>  ?=(%| -.res)  p.res
           %diff-bob   %-  diffed-bob   ?>  ?=(%| -.res)  p.res
           %merge      %-  merged       ?>  ?=(%| -.res)  p.res
-          %built      %-  built        ?>  ?=(%| -.res)  p.res
+          %build      %-  built        ?>  ?=(%| -.res)  p.res
           %checkout   %-  checked-out  ?>  ?=(%| -.res)  p.res
           %ergo       %-  ergoed       ?>  ?=(%| -.res)  p.res
         ==
@@ -1739,19 +1736,14 @@
             `[pax ~]
           =+  ^=  bof
               %-  %~  int  by
-                  =-  ~&  >  [%first -]  -
-                  %-  ~(uni by =-(~&(> [%uno -] -) `(map path ,*)`new.dal.dat))
-                  %-  ~(uni by =-(~&(> [%dos -] -) `(map path ,*)`cal.dal.dat))
-                  %-  ~(uni by =-(~&(> [%tres -] -) `(map path ,*)`can.dal.dat))
-                  =-  ~&  >  [%quatro -]  -
+                  %-  ~(uni by `(map path ,*)`new.dal.dat)
+                  %-  ~(uni by `(map path ,*)`cal.dal.dat)
+                  %-  ~(uni by `(map path ,*)`can.dal.dat)
                   `(map path ,*)`old.dal.dat
-              =-  ~&  >  [%second -]  -
-              %-  ~(uni by =-(~&(> [%adin -] -) `(map path ,*)`new.dob.dat))
-              %-  ~(uni by =-(~&(> [%dva -] -) `(map path ,*)`cal.dob.dat))
-              %-  ~(uni by =-(~&(> [%tri -] -) `(map path ,*)`can.dob.dat))
-              =-  ~&  >  [%chteri -]  -
+              %-  ~(uni by `(map path ,*)`new.dob.dat)
+              %-  ~(uni by `(map path ,*)`cal.dob.dat)
+              %-  ~(uni by `(map path ,*)`can.dob.dat)
               `(map path ,*)`old.dob.dat
-          ~&  bof
           ?^  bof
             (error:he %meet-conflict >(~(run by `(map path ,*)`bof) ,_~)< ~)
           =+  ^-  old=(map path lobe)
@@ -1984,18 +1976,21 @@
         ^+  .
         =-  %_(+ tag [- tag])
         :*  hen  %pass
-            [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %checkout ~]
+            [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %build ~]
             %f  %exec  p.bob  [p.bob q.bob cas.dat]  ~  %tabl
             ^-  (list (pair silk silk))
-            %+  turn  (~(tap by bof.dat))
-            |=  [a=path b=(unit cage)]
-            ^-  (pair silk silk)
-            :-  [%done ~ %path !>(a)]
+            %+  murn  (~(tap by bof.dat))
+            |=  [pax=path cay=(unit cage)]
+            ^-  (unit (pair silk silk))
+            ?~  cay
+              ~
+            :-  ~
+            :-  [%done ~ %path !>(pax)]
             =+  (~(get by q.bas.dat) pax)
             ?~  -
               ~|  %mate-strange-diff-no-base
               !!
-            [%pact (lobe-to-silk a u.-) [%volt ~ b]]
+            [%pact (lobe-to-silk pax u.-) [%done ~ u.cay]]
         ==
 
       ::
@@ -2007,11 +2002,11 @@
         =+  cay=q.p.res
         ?@  p.cay
           (error:he %build-bad-marc >p.cay< ~)
-        =|  bof=(map path (unit cage))
+        =|  bop=(map path cage)
         =>
           |-  ^+  +
           ?~  p.p.cay
-            +.$(bof ~)
+            +.$(bop ~)
           =+  tal=%_($ cay [[%tabl t.p.p.cay] (slot 3 q.cay)])
           ?:  ?=(%| -.gon.dat.tal)
             tal
@@ -2023,18 +2018,17 @@
           ?@  q.coy
             +.$(+>.$ (error:he %build-strange-coy ~))
           %_    +.$
-              bof
-            %+  ~(put by bof:tal)
+              bop
+            %+  ~(put by bop:tal)
               ((hard path) -.q.coy)
-            ?:  ?=(%null q.i.p.p.cay)
-              ~
-            `[q.i.p.p.cay (slot 3 coy)]
+            [q.i.p.p.cay (slot 3 coy)]
           ==
         ?:  ?=(%| -.gon.dat)
           +>.$
+        =.  bop.dat  bop
         =+  ^-  con=(map path ,*)                       ::  2-change conflict
             %-  mo
-            %+  skim  (~(tap by bof))
+            %+  skim  (~(tap by bof.dat))
             |=([pax=path cay=(unit cage)] ?=(~ cay))
         =+  ^-  cas=(map path lobe)                     ::  conflict base
             %-  ~(urn by con)
@@ -2075,7 +2069,7 @@
         =+  ^-  can=(map path cage)                     ::  content changes
             %-  mo
             ^-  (list (pair path cage))
-            %+  murn  (~(tap by bof))
+            %+  murn  (~(tap by bof.dat))
             |=  [pax=path cay=(unit cage)]
             ^-  (unit (pair path cage))
             ?~  cay
@@ -2091,7 +2085,10 @@
               ?~  -
                 ~|  %mate-strange-diff-no-base
                 !!
-              (make-delta [(lobe-to-mark u.-) u.-] [p q.q]:cay)
+              %^    make-delta
+                  (page-to-lobe [p q.q]:(~(got by bop.dat) pax))
+                [(lobe-to-mark u.-) u.-]
+              [p q.q]:cay
           [(~(put by hat) pax p.bol) (~(put by lat) p.bol bol)]
         =.  hat                                         ::  all the content
           %-  ~(uni by old)
@@ -2119,10 +2116,12 @@
             [%merge (scot %p p.bob) q.bob (scot %p p.ali) q.ali %checkout ~]
             %f  %exec  p.bob  [p.val q.val cas.dat]  ~  %tabl
             ^-  (list (pair silk silk))
-            %+  turn  (~(tap by q.new.dat))
-            |=  [a=path b=lobe]
-            ^-  (pair silk silk)
-            [[%done ~ %path !>(a)] (lobe-to-silk a b)]
+            %+  murn  (~(tap by q.new.dat))
+            |=  [pax=path lob=lobe]
+            ^-  (unit (pair silk silk))
+            ?:  (~(has by bop.dat) pax)
+              ~
+            `[[%done ~ %path !>(pax)] (lobe-to-silk pax lob)]
         ==
       ::
       ++  checked-out
@@ -2158,7 +2157,7 @@
           +>.$
         =.  let.dom  +(let.dom)
         =.  hit.dom  (~(put by hit.dom) let.dom r.new.dat)
-        =.  ank.dat  (checkout-ankh:ze (mo can))
+        =.  ank.dat  (checkout-ankh:ze (~(uni by bop.dat) (mo can)))
         =.  ank.dom  ank.dat
         ?~  hez
           (done:he ~)

From 4ffadbf7eee278293d560f4e4f58d3926c15cf9b Mon Sep 17 00:00:00 2001
From: Anton Dyudin 
Date: Wed, 22 Apr 2015 15:35:12 -0700
Subject: [PATCH 57/89] factored out websole coffee

---
 main/pub/sole/fab/hymn.hook   | 230 +---------------------------------
 main/pub/sole/src/main.coffee | 220 ++++++++++++++++++++++++++++++++
 2 files changed, 223 insertions(+), 227 deletions(-)
 create mode 100644 main/pub/sole/src/main.coffee

diff --git a/main/pub/sole/fab/hymn.hook b/main/pub/sole/fab/hymn.hook
index d3e59604f..9bc875957 100644
--- a/main/pub/sole/fab/hymn.hook
+++ b/main/pub/sole/fab/hymn.hook
@@ -33,231 +33,7 @@
     ;div#err;
     ;div#term:""
     ;script@"src/share.coffee"(type "text/coffeescript");
-    ;script(type "text/coffeescript")  ;-  %-  trip
-      '''
-      [DOM,recl,rend] = [React.DOM, React.createClass, React.renderComponent]
-      [div, pre, span] = [DOM.div, DOM.pre, DOM.span]
-      str = JSON.stringify
-      
-      Prompt = recl render: ->
-        [pro,cur,buf] = [@props.prompt, @props.cursor, @props.input + " "]
-        pre {}, pro,
-          span {style: background: 'lightgray'}, buf.slice(0,cur), "\u0332", buf.slice(cur)
-        
-      Matr = recl render: ->
-        lines = @props.rows.map (lin)-> pre {}, lin, " "
-        lines.push Prompt {prompt:@props.prompt, input:@props.input, cursor:@props.cursor}
-        div {}, lines
-      
-      $ ->
-
-        met = $('
').text('m').css(display: 'none').appendTo(term).width()
-        subs = ""
-        # $(window).resize -> 
-        #   window.termWif = ($(term).width() / met).toFixed()
-        #   path =  "/new/#{termWif}"
-        #   if path is subs
-        #     return
-        #   if subs
-        #     urb.unsubscribe path: subs
-        #   subs = path
-        #   urb.subscribe {path}, (err,dat)->
-        #       if err or dat.data.ok
-        #         return;
-        #       syncRev = dat.data.rev
-        #       unless termRev > syncRev
-        #         termRev = syncRev
-        #         matr.setProps rows: dat.data.stak
-        #         document.title = "Matrix"  # XX  debug
-        # $(window).resize()
-
-        flash = ($el, background)->
-          $el.css {background}
-          if background
-            setTimeout (-> flash $el,''), 50
-            
-        matr = rend (Matr
-          rows:[]
-          prompt:""
-          input:""
-          cursor:0
-          history:[]
-          offset:0  ), term
-        window.matr = matr
-        update = (a) -> matr.setProps a
-        buffer = new Share ""
-        window.buffer = buffer
-        sync = (ted)-> 
-          update input: buffer.buf, cursor: buffer.transpose ted, matr.props.cursor
-        
-        peer = (ruh) ->
-          if ruh.map then return ruh.map peer
-          mapr = matr.props
-          switch Object.keys(ruh)[0]
-            when 'txt' then update rows: [mapr.rows..., ruh.txt]
-            when 'tan' then ruh.tan.split("\n").reverse().map (txt)-> peer {txt}
-            when 'hop' then update cursor: buffer.transpose ruh.hop #; peer act:'bel'
-            when 'pro' then update prompt: ruh.pro.cad
-            when 'blk' then console.log "Stub #{str ruh}"
-            when 'det' then buffer.receive ruh.det; sync ruh.det.ted
-            when 'act' then switch ruh.act
-              when 'clr' then update rows:[]
-              when 'bel' then flash ($ 'body'), 'black'
-              when 'nex' then update
-                input: ""
-                cursor: 0
-                history: 
-                  if !mapr.input then mapr.history
-                  else [mapr.input, mapr.history...]
-                offset: 0
-            #   else throw "Unknown "+(JSON.stringify ruh)
-            else v = Object.keys(ruh); console.log v, ruh[v[0]]
-        
-        urb.bind "/sole", {wire:"/"}, (err,d)->
-          if err then console.log err
-          else if d.data then peer d.data
-          
-        
-        pressed = []
-        deltim = null
-        #later = (data)->
-        #  if data
-        #    pressed.push data
-        #  clearTimeout deltim
-        #  setTimeout (->
-        #    if urb.reqq.length > 0 
-        #      return deltim = later()
-        #    urb.send data: pressed
-        #    pressed = []
-        #  ), 500
-
-        sendAction = (data)->
-          urb.send {mark: 'sole-action', data}, (e,res)->
-            if res.status isnt 200 then $('#err')[0].innerText = res.data.mess
-        
-        doEdit = (ted)->
-          det = buffer.transmit ted
-          sync ted
-          sendAction {det}
-        
-        
-        Mousetrap.handleKey = (char, mod, e)->
-          norm = {
-            capslock:  'caps'
-            pageup:    'pgup'
-            pagedown:  'pgdn'
-            backspace: 'baxp'
-            enter:     'entr'
-          }
-          
-          key = switch
-            when char.length is 1
-              if e.type is 'keypress'
-                chac = char.charCodeAt(0)
-                if chac < 32          # normalize ctrl keys
-                  char = String.fromCharCode chac | 96
-                str: char
-            when e.type is 'keydown'
-              if char isnt 'space'
-                act: norm[char] ? char
-            when e.type is 'keyup' and norm[key] is 'caps'
-              act: 'uncap'
-          if !key then return
-          if key.act and key.act in mod
-            return
-          e.preventDefault()
-          mapr = matr.props
-          #[fore, aft] = (
-          #  [sli,cur] = [mapr.input.slice, mapr.cursor]
-          #  [sli(0, cur), sli(cur)]
-          #)
-
-          switch mod.sort().join '-'
-            when '', 'shift'
-              if key.str
-                doEdit ins: cha: key.str, at: mapr.cursor
-                update cursor: mapr.cursor+1
-              switch key.act
-                when 'entr' then sendAction 'ret'
-                when 'up'
-                  history = mapr.history.slice(); offset = mapr.offset
-                  if history[offset] == undefined
-                    return
-                  [input, history[offset]] = [history[offset], mapr.input]
-                  offset++
-                  doEdit set: input
-                  update {offset, history, cursor: input.length}
-                when 'down'
-                  history = mapr.history.slice(); offset = mapr.offset
-                  offset--
-                  if history[offset] == undefined
-                    return
-                  [input, history[offset]] = [history[offset], mapr.input]
-                  doEdit set: input
-                  update {offset, history, cursor: input.length}
-                when 'left' then if mapr.cursor > 0 
-                  update cursor: mapr.cursor-1
-                when 'right' then if mapr.cursor < mapr.input.length
-                  update cursor: mapr.cursor+1
-                when 'baxp' then if mapr.cursor > 0
-                  doEdit del: mapr.cursor-1
-                #else (if key.act then console.log key.act)
-            when 'ctrl' then switch key.str || key.act
-              when 'a','left'  then update cursor: 0
-              when 'e','right' then update cursor: mapr.input.length
-              when 'entr' then peer act: 'bel'
-              else console.log mod, str key
-            when 'alt' then switch key.str || key.act
-              when 'f','right'
-                rest = mapr.input.slice(mapr.cursor)
-                rest = rest.match(/[^a-z0-9]*[a-z0-9]*/)[0]
-                update cursor: mapr.cursor + rest.length
-              when 'b','left'
-                prev = mapr.input.slice(0,mapr.cursor)
-                prev = prev.split('').reverse().join('')  # XX
-                prev = prev.match(/[^a-z0-9]*[a-z0-9]*/)[0]
-                update cursor: mapr.cursor - prev.length
-            else console.log mod, str key
-
-          
-          #amod = (arr)->
-          #  for i in arr
-          #    unless mod.indexOf(i) < 0
-          #      return yes
-          #  no
-          # if key.str or key.act is 'baxp' or key.act is 'entr'
-          #   termRev++
-          #   [bot, rest...] = old = matr.props.rows
-          #   matr.setProps rows:(
-          #     switch  key.act 
-          #       when 'baxp'
-          #         if amod ['ctrl', 'meta']
-          #           ['', rest...]
-          #         else if amod ['alt']
-          #           [(bot.replace /\ *[^ ]*$/, ''), rest...]
-          #         else if bot and bot.length 
-          #           [bot.slice(0, -1), rest...]
-          #         else if rest[0] and rest[0].length
-          #           res = rest.slice()
-          #           res[0] = res[0].slice(0, -1)
-          #           res
-          #         else rest
-          #       when 'entr'
-          #         ['', old...]
-          #       when undefined
-          #         if mod.length > 1 or (mod.length and !amod ['shift'])
-          #           old
-          #         else unless old and bot isnt null
-          #           [key.str]
-          #         #else if bot.length is termWif
-          #         #  [key.str, old...]
-          #         else [bot + key.str, rest...]
-          #   )
-          #   document.title = "Matri"  # XX  debug
-          # later {mod, key}
-
-
-      '''
-    ==
+    ;script@"src/main.coffee"(type "text/coffeescript");
     ;+  (cdnj "coffee-script/1.7.1/coffee-script.min.js")
-==  ==
+  ==  
+==
diff --git a/main/pub/sole/src/main.coffee b/main/pub/sole/src/main.coffee
new file mode 100644
index 000000000..9a4ed5f1c
--- /dev/null
+++ b/main/pub/sole/src/main.coffee
@@ -0,0 +1,220 @@
+[DOM,recl,rend] = [React.DOM, React.createClass, React.renderComponent]
+[div, pre, span] = [DOM.div, DOM.pre, DOM.span]
+str = JSON.stringify
+
+Prompt = recl render: ->
+  [pro,cur,buf] = [@props.prompt, @props.cursor, @props.input + " "]
+  pre {}, pro,
+    span {style: background: 'lightgray'}, buf.slice(0,cur), "\u0332", buf.slice(cur)
+
+Matr = recl render: ->
+  lines = @props.rows.map (lin)-> pre {}, lin, " "
+  lines.push Prompt {prompt:@props.prompt, input:@props.input, cursor:@props.cursor}
+  div {}, lines
+
+$ ->
+
+  met = $('
').text('m').css(display: 'none').appendTo(term).width()
+  subs = ""
+  # $(window).resize -> 
+  #   window.termWif = ($(term).width() / met).toFixed()
+  #   path =  "/new/#{termWif}"
+  #   if path is subs
+  #     return
+  #   if subs
+  #     urb.unsubscribe path: subs
+  #   subs = path
+  #   urb.subscribe {path}, (err,dat)->
+  #       if err or dat.data.ok
+  #         return;
+  #       syncRev = dat.data.rev
+  #       unless termRev > syncRev
+  #         termRev = syncRev
+  #         matr.setProps rows: dat.data.stak
+  #         document.title = "Matrix"  # XX  debug
+  # $(window).resize()
+
+  flash = ($el, background)->
+    $el.css {background}
+    if background
+      setTimeout (-> flash $el,''), 50
+
+  matr = rend (Matr
+    rows:[]
+    prompt:""
+    input:""
+    cursor:0
+    history:[]
+    offset:0  ), term
+  window.matr = matr
+  update = (a) -> matr.setProps a
+  buffer = new Share ""
+  window.buffer = buffer
+  sync = (ted)-> 
+    update input: buffer.buf, cursor: buffer.transpose ted, matr.props.cursor
+
+  peer = (ruh) ->
+    if ruh.map then return ruh.map peer
+    mapr = matr.props
+    switch Object.keys(ruh)[0]
+      when 'txt' then update rows: [mapr.rows..., ruh.txt]
+      when 'tan' then ruh.tan.split("\n").reverse().map (txt)-> peer {txt}
+      when 'hop' then update cursor: buffer.transpose ruh.hop #; peer act:'bel'
+      when 'pro' then update prompt: ruh.pro.cad
+      when 'blk' then console.log "Stub #{str ruh}"
+      when 'det' then buffer.receive ruh.det; sync ruh.det.ted
+      when 'act' then switch ruh.act
+        when 'clr' then update rows:[]
+        when 'bel' then flash ($ 'body'), 'black'
+        when 'nex' then update
+          input: ""
+          cursor: 0
+          history: 
+            if !mapr.input then mapr.history
+            else [mapr.input, mapr.history...]
+          offset: 0
+      #   else throw "Unknown "+(JSON.stringify ruh)
+      else v = Object.keys(ruh); console.log v, ruh[v[0]]
+
+  urb.bind "/sole", {wire:"/"}, (err,d)->
+    if err then console.log err
+    else if d.data then peer d.data
+
+
+  pressed = []
+  deltim = null
+  #later = (data)->
+  #  if data
+  #    pressed.push data
+  #  clearTimeout deltim
+  #  setTimeout (->
+  #    if urb.reqq.length > 0 
+  #      return deltim = later()
+  #    urb.send data: pressed
+  #    pressed = []
+  #  ), 500
+
+  sendAction = (data)->
+    urb.send {mark: 'sole-action', data}, (e,res)->
+      if res.status isnt 200 then $('#err')[0].innerText = res.data.mess
+
+  doEdit = (ted)->
+    det = buffer.transmit ted
+    sync ted
+    sendAction {det}
+
+
+  Mousetrap.handleKey = (char, mod, e)->
+    norm = {
+      capslock:  'caps'
+      pageup:    'pgup'
+      pagedown:  'pgdn'
+      backspace: 'baxp'
+      enter:     'entr'
+    }
+
+    key = switch
+      when char.length is 1
+        if e.type is 'keypress'
+          chac = char.charCodeAt(0)
+          if chac < 32          # normalize ctrl keys
+            char = String.fromCharCode chac | 96
+          str: char
+      when e.type is 'keydown'
+        if char isnt 'space'
+          act: norm[char] ? char
+      when e.type is 'keyup' and norm[key] is 'caps'
+        act: 'uncap'
+    if !key then return
+    if key.act and key.act in mod
+      return
+    e.preventDefault()
+    mapr = matr.props
+    #[fore, aft] = (
+    #  [sli,cur] = [mapr.input.slice, mapr.cursor]
+    #  [sli(0, cur), sli(cur)]
+    #)
+
+    switch mod.sort().join '-'
+      when '', 'shift'
+        if key.str
+          doEdit ins: cha: key.str, at: mapr.cursor
+          update cursor: mapr.cursor+1
+        switch key.act
+          when 'entr' then sendAction 'ret'
+          when 'up'
+            history = mapr.history.slice(); offset = mapr.offset
+            if history[offset] == undefined
+              return
+            [input, history[offset]] = [history[offset], mapr.input]
+            offset++
+            doEdit set: input
+            update {offset, history, cursor: input.length}
+          when 'down'
+            history = mapr.history.slice(); offset = mapr.offset
+            offset--
+            if history[offset] == undefined
+              return
+            [input, history[offset]] = [history[offset], mapr.input]
+            doEdit set: input
+            update {offset, history, cursor: input.length}
+          when 'left' then if mapr.cursor > 0 
+            update cursor: mapr.cursor-1
+          when 'right' then if mapr.cursor < mapr.input.length
+            update cursor: mapr.cursor+1
+          when 'baxp' then if mapr.cursor > 0
+            doEdit del: mapr.cursor-1
+          #else (if key.act then console.log key.act)
+      when 'ctrl' then switch key.str || key.act
+        when 'a','left'  then update cursor: 0
+        when 'e','right' then update cursor: mapr.input.length
+        when 'entr' then peer act: 'bel'
+        else console.log mod, str key
+      when 'alt' then switch key.str || key.act
+        when 'f','right'
+          rest = mapr.input.slice(mapr.cursor)
+          rest = rest.match(/[^a-z0-9]*[a-z0-9]*/)[0]
+          update cursor: mapr.cursor + rest.length
+        when 'b','left'
+          prev = mapr.input.slice(0,mapr.cursor)
+          prev = prev.split('').reverse().join('')  # XX
+          prev = prev.match(/[^a-z0-9]*[a-z0-9]*/)[0]
+          update cursor: mapr.cursor - prev.length
+      else console.log mod, str key
+
+
+    #amod = (arr)->
+    #  for i in arr
+    #    unless mod.indexOf(i) < 0
+    #      return yes
+    #  no
+    # if key.str or key.act is 'baxp' or key.act is 'entr'
+    #   termRev++
+    #   [bot, rest...] = old = matr.props.rows
+    #   matr.setProps rows:(
+    #     switch  key.act 
+    #       when 'baxp'
+    #         if amod ['ctrl', 'meta']
+    #           ['', rest...]
+    #         else if amod ['alt']
+    #           [(bot.replace /\ *[^ ]*$/, ''), rest...]
+    #         else if bot and bot.length 
+    #           [bot.slice(0, -1), rest...]
+    #         else if rest[0] and rest[0].length
+    #           res = rest.slice()
+    #           res[0] = res[0].slice(0, -1)
+    #           res
+    #         else rest
+    #       when 'entr'
+    #         ['', old...]
+    #       when undefined
+    #         if mod.length > 1 or (mod.length and !amod ['shift'])
+    #           old
+    #         else unless old and bot isnt null
+    #           [key.str]
+    #         #else if bot.length is termWif
+    #         #  [key.str, old...]
+    #         else [bot + key.str, rest...]
+    #   )
+    #   document.title = "Matri"  # XX  debug
+    # later {mod, key}

From 1287173dc7227d3ff2aee79015e374c1680dca6e Mon Sep 17 00:00:00 2001
From: Anton Dyudin 
Date: Wed, 22 Apr 2015 15:35:35 -0700
Subject: [PATCH 58/89] more ctrl keys

---
 main/pub/sole/src/main.coffee | 102 ++++++++++++++++++++++------------
 1 file changed, 67 insertions(+), 35 deletions(-)

diff --git a/main/pub/sole/src/main.coffee b/main/pub/sole/src/main.coffee
index 9a4ed5f1c..3533418c7 100644
--- a/main/pub/sole/src/main.coffee
+++ b/main/pub/sole/src/main.coffee
@@ -38,6 +38,7 @@ $ ->
     $el.css {background}
     if background
       setTimeout (-> flash $el,''), 50
+  bell = -> flash ($ 'body'), 'black'
 
   matr = rend (Matr
     rows:[]
@@ -59,13 +60,13 @@ $ ->
     switch Object.keys(ruh)[0]
       when 'txt' then update rows: [mapr.rows..., ruh.txt]
       when 'tan' then ruh.tan.split("\n").reverse().map (txt)-> peer {txt}
-      when 'hop' then update cursor: buffer.transpose ruh.hop #; peer act:'bel'
+      when 'hop' then update cursor: ruh.hop; bell() # XX buffer.transpose?
       when 'pro' then update prompt: ruh.pro.cad
       when 'blk' then console.log "Stub #{str ruh}"
       when 'det' then buffer.receive ruh.det; sync ruh.det.ted
       when 'act' then switch ruh.act
         when 'clr' then update rows:[]
-        when 'bel' then flash ($ 'body'), 'black'
+        when 'bel' then bell()
         when 'nex' then update
           input: ""
           cursor: 0
@@ -103,38 +104,9 @@ $ ->
     sync ted
     sendAction {det}
 
-
-  Mousetrap.handleKey = (char, mod, e)->
-    norm = {
-      capslock:  'caps'
-      pageup:    'pgup'
-      pagedown:  'pgdn'
-      backspace: 'baxp'
-      enter:     'entr'
-    }
-
-    key = switch
-      when char.length is 1
-        if e.type is 'keypress'
-          chac = char.charCodeAt(0)
-          if chac < 32          # normalize ctrl keys
-            char = String.fromCharCode chac | 96
-          str: char
-      when e.type is 'keydown'
-        if char isnt 'space'
-          act: norm[char] ? char
-      when e.type is 'keyup' and norm[key] is 'caps'
-        act: 'uncap'
-    if !key then return
-    if key.act and key.act in mod
-      return
-    e.preventDefault()
+  yank = ''
+  eatKyev= (mod, key)->
     mapr = matr.props
-    #[fore, aft] = (
-    #  [sli,cur] = [mapr.input.slice, mapr.cursor]
-    #  [sli(0, cur), sli(cur)]
-    #)
-
     switch mod.sort().join '-'
       when '', 'shift'
         if key.str
@@ -168,20 +140,79 @@ $ ->
       when 'ctrl' then switch key.str || key.act
         when 'a','left'  then update cursor: 0
         when 'e','right' then update cursor: mapr.input.length
+        when 'l' then update rows: []
         when 'entr' then peer act: 'bel'
+        when 'w' then eatKyev ['alt'], act:'baxp'
+        when 'p' then eatKyev [], act: 'up'
+        when 'n' then eatKyev [], act: 'down'
+        when 'b' then eatKyev [], act: 'left'
+        when 'f' then eatKyev [], act: 'right'
+        when 'g' then bell()
+        when 't'
+          if mapr.cursor is 0 or mapr.input.length < 2
+            return bell()
+          cursor = mapr.cursor
+          if cursor < mapr.input.length
+            cursor++
+          doEdit [{del:cursor-1},ins:{at:cursor-2,cha:mapr.input[cursor-1]}]
+          update {cursor}
+        when 'u' 
+          yank = mapr.input.slice(0,mapr.cursor)
+          doEdit (del:mapr.cursor - n for n in [1..mapr.cursor])
+        when 'k'
+          yank = mapr.input.slice(mapr.cursor)
+          doEdit (del:mapr.cursor for _ in [mapr.cursor...mapr.input.length])
+        when 'y'
+          doEdit (ins: {cha, at: mapr.cursor + n} for cha,n in yank)
         else console.log mod, str key
       when 'alt' then switch key.str || key.act
         when 'f','right'
           rest = mapr.input.slice(mapr.cursor)
-          rest = rest.match(/[^a-z0-9]*[a-z0-9]*/)[0]
+          rest = rest.match(/\W*\w*/)[0] # XX unicode
           update cursor: mapr.cursor + rest.length
         when 'b','left'
           prev = mapr.input.slice(0,mapr.cursor)
           prev = prev.split('').reverse().join('')  # XX
-          prev = prev.match(/[^a-z0-9]*[a-z0-9]*/)[0]
+          prev = prev.match(/\W*\w*/)[0] # XX unicode
           update cursor: mapr.cursor - prev.length
+        when 'baxp'
+          prev = mapr.input.slice(0,mapr.cursor)
+          prev = prev.split('').reverse().join('')  # XX
+          prev = prev.match(/\W*\w*/)[0] # XX unicode
+          yank = prev
+          doEdit (del: mapr.cursor-1 - n for _,n in prev)
       else console.log mod, str key
 
+  Mousetrap.handleKey = (char, mod, e)->
+    norm = {
+      capslock:  'caps'
+      pageup:    'pgup'
+      pagedown:  'pgdn'
+      backspace: 'baxp'
+      enter:     'entr'
+    }
+
+    key = switch
+      when char.length is 1
+        if e.type is 'keypress'
+          chac = char.charCodeAt(0)
+          if chac < 32          # normalize ctrl keys
+            char = String.fromCharCode chac | 96
+          str: char
+      when e.type is 'keydown'
+        if char isnt 'space'
+          act: norm[char] ? char
+      when e.type is 'keyup' and norm[key] is 'caps'
+        act: 'uncap'
+    if !key then return
+    if key.act and key.act in mod
+      return
+    e.preventDefault()
+    #[fore, aft] = (
+    #  [sli,cur] = [mapr.input.slice, mapr.cursor]
+    #  [sli(0, cur), sli(cur)]
+    #)
+    eatKyev mod, key
 
     #amod = (arr)->
     #  for i in arr
@@ -218,3 +249,4 @@ $ ->
     #   )
     #   document.title = "Matri"  # XX  debug
     # later {mod, key}
+

From 459be5899f04aea18ccf12fb947aaf7b5ca5448d Mon Sep 17 00:00:00 2001
From: Anton Dyudin 
Date: Wed, 22 Apr 2015 15:55:46 -0700
Subject: [PATCH 59/89] 80 column violation

---
 arvo/ford.hoon | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arvo/ford.hoon b/arvo/ford.hoon
index 956b9af3c..698efc5c3 100644
--- a/arvo/ford.hoon
+++ b/arvo/ford.hoon
@@ -1,5 +1,5 @@
 !:::::
-::  ::  %ford, new execution control     
+::  ::  %ford, new execution control
 !?  164
 ::::
 |=  pit=vase   
@@ -10,7 +10,7 @@
 ++  bead  ,[p=(set beam) q=cage]                        ::  computed result
 ++  gift                                                ::  out result <-$
           $%  [%made p=@uvH q=(each cage tang)]         ::  computed result
-              [%news ~]                                 ::  fresh depends                                 
+              [%news ~]                                 ::  fresh depends
           ==                                            ::
 ++  heel  path                                          ::  functional ending
 ++  hock                                                ::  standard label

From a8dd15c34df9773263a68ee3822485c64316aedb Mon Sep 17 00:00:00 2001
From: Galen Wolfe-Pauly 
Date: Wed, 22 Apr 2015 17:43:52 -0700
Subject: [PATCH 60/89] a cleaner library

---
 docs/pub/doc/hoon/library.md                  |  4 +-
 docs/pub/doc/hoon/library/0.md                |  2 +-
 docs/pub/doc/hoon/library/2ez.md              |  4 +-
 .../src/js/components/ListComponent.coffee    |  5 ++-
 docs/pub/tree/src/js/main.js                  | 45 +++++++++++--------
 docs/pub/tree/src/js/stores/TreeStore.coffee  |  4 +-
 docs/tree/hymn.hook                           |  6 ++-
 docs/tree/json.hook                           | 11 +++--
 main/mar/react-snip/door.hook                 |  6 +++
 9 files changed, 55 insertions(+), 32 deletions(-)

diff --git a/docs/pub/doc/hoon/library.md b/docs/pub/doc/hoon/library.md
index 2820a2843..128db6dad 100644
--- a/docs/pub/doc/hoon/library.md
+++ b/docs/pub/doc/hoon/library.md
@@ -1,4 +1,4 @@
 Library
-=======
+========
 
-
+
diff --git a/docs/pub/doc/hoon/library/0.md b/docs/pub/doc/hoon/library/0.md
index 0345065d2..286ca83b6 100644
--- a/docs/pub/doc/hoon/library/0.md
+++ b/docs/pub/doc/hoon/library/0.md
@@ -1,4 +1,4 @@
-volume 0, Kelvin Versioning
+volume 0, Kelvin Versioning.
 ===========================
 
 ### ++hoon
diff --git a/docs/pub/doc/hoon/library/2ez.md b/docs/pub/doc/hoon/library/2ez.md
index 93f2a68c6..9e8142dec 100644
--- a/docs/pub/doc/hoon/library/2ez.md
+++ b/docs/pub/doc/hoon/library/2ez.md
@@ -1,7 +1,5 @@
 section 2eZ, OLD rendering
---------------------------
-
-------------------------------------------------------------------------
+==========================
 
 ### ++show
 
diff --git a/docs/pub/tree/src/js/components/ListComponent.coffee b/docs/pub/tree/src/js/components/ListComponent.coffee
index 3456bab77..d4ddbad11 100644
--- a/docs/pub/tree/src/js/components/ListComponent.coffee
+++ b/docs/pub/tree/src/js/components/ListComponent.coffee
@@ -45,7 +45,10 @@ module.exports = recl
         _path = @state.path+"/"+v
         if @props.dataPreview?
           c = "preview"
-          prev = @state.snip[_path]
+          if @props.titlesOnly
+            prev = @state.snip[_path].head
+          else
+            prev = @state.snip[_path]
         else
           c = ""
           prev = (h1 {},v)
diff --git a/docs/pub/tree/src/js/main.js b/docs/pub/tree/src/js/main.js
index 0f6a4d410..51afd8737 100644
--- a/docs/pub/tree/src/js/main.js
+++ b/docs/pub/tree/src/js/main.js
@@ -1,4 +1,4 @@
-(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o
     @mergePathToTree path,_.pluck(snip,"name")
     for k,v of snip
-      _snip[path+"/"+v.name] = window.tree.reactify v.body
+      _snip[path+"/"+v.name] = 
+        head: window.tree.reactify v.body.head
+        body: window.tree.reactify v.body.body
 
   loadKids: (path,kids) ->
     @mergePathToTree path,_.pluck(kids,"name")
diff --git a/docs/tree/hymn.hook b/docs/tree/hymn.hook
index 66d785d8b..3cec27ac0 100644
--- a/docs/tree/hymn.hook
+++ b/docs/tree/hymn.hook
@@ -17,11 +17,13 @@
   ;head
     ;title: urbit Tree
     ;meta(name "viewport", content "width=device-width, initial-scale=1");
-    ;link(type "text/css", rel "stylesheet", href "/docs/pub/tree/src/css/main.css");
+    ::;link(type "text/css", rel "stylesheet", href "/docs/pub/tree/src/css/main.css");
+    ;link(type "text/css", rel "stylesheet", href "http://localhost:8000/docs/pub/tree/src/css/main.css");
     ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js");
     ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js");
     ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/react/0.12.2/react.js");
-    ;script(type "text/javascript", src "/docs/pub/tree/src/js/main.js");
+    ::;script(type "text/javascript", src "/docs/pub/tree/src/js/main.js");
+    ;script(type "text/javascript", src "http://localhost:8000/docs/pub/tree/src/js/main.js");
   ==
   ;body
     ;script(type "text/javascript"):"""
diff --git a/docs/tree/json.hook b/docs/tree/json.hook
index d5abda64f..2d3e02d9b 100644
--- a/docs/tree/json.hook
+++ b/docs/tree/json.hook
@@ -8,9 +8,9 @@
              /_    /react-js/
 ::
 /=    sal    /:    /=docs=/pub
-             /;    |=  a=(map ,@ta cord)  a
+             /;    |=  a=(map ,@ta json)  a
              /%    2
-             /_    /react-snip-js/
+             /_    /react-snip-json/
 ::
 ::::
   ::
@@ -23,6 +23,7 @@
   ::
 ^-  json
 =+  ~(. util gas)
+::  .json?kids
 ?:  (~(has by qix.gas) %kids)
   %+  joba  %kids
   =.  pal  (~(del by pal) %md)                                     :: XX haxor
@@ -32,15 +33,17 @@
     name/s/a
     body/s/b
   ==
+::  .json?snip
 ?:  (~(has by qix.gas) %snip)
   %+  joba  %snip
   =.  sal  (~(del by sal) %md)                                   :: XX haxor
   =-  [%a (turn (~(tap by sal)) -)]
-  |=  [a=span b=cord] 
+  |=  [a=span b=json]
   %-  jobe  :~
     name/s/a
-    body/s/b
+    body/b
   ==
+::  .json
 %-  jobe  :~
   kids/[%a (turn get-kids |=(a=span s/a))]
   body/[%s ral]
diff --git a/main/mar/react-snip/door.hook b/main/mar/react-snip/door.hook
index 360368cba..561e3c881 100644
--- a/main/mar/react-snip/door.hook
+++ b/main/mar/react-snip/door.hook
@@ -53,6 +53,12 @@
       ")"
     ==
   ++  react-snip-js  (crip tape)
+  ++  react-snip-json
+    ::?>  ?=([[%div ~] [[%h1 ~] *] [[%div ~] *] ~]] own)  :: xx mystery fish-loop
+    %^  jobe
+      head/(jape tape(own &2.own))
+      body/(jape tape(own &3.own))
+    ~
 ::   ++  js  react-snip-js                                 ::  convert to %js
   ++  mime  [/text/javascript (taco react-snip-js)]                ::  convert to %mime
   --

From 34f235bab2e4aa3fdb7a39f910797636ceb70afc Mon Sep 17 00:00:00 2001
From: Galen Wolfe-Pauly 
Date: Wed, 22 Apr 2015 17:45:12 -0700
Subject: [PATCH 61/89] whoops, live links

---
 docs/tree/hymn.hook | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/docs/tree/hymn.hook b/docs/tree/hymn.hook
index 3cec27ac0..b64fa15b8 100644
--- a/docs/tree/hymn.hook
+++ b/docs/tree/hymn.hook
@@ -17,13 +17,13 @@
   ;head
     ;title: urbit Tree
     ;meta(name "viewport", content "width=device-width, initial-scale=1");
-    ::;link(type "text/css", rel "stylesheet", href "/docs/pub/tree/src/css/main.css");
-    ;link(type "text/css", rel "stylesheet", href "http://localhost:8000/docs/pub/tree/src/css/main.css");
+    ;link(type "text/css", rel "stylesheet", href "/docs/pub/tree/src/css/main.css");
+    ::;link(type "text/css", rel "stylesheet", href "http://localhost:8000/docs/pub/tree/src/css/main.css");
     ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js");
     ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js");
     ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/react/0.12.2/react.js");
-    ::;script(type "text/javascript", src "/docs/pub/tree/src/js/main.js");
-    ;script(type "text/javascript", src "http://localhost:8000/docs/pub/tree/src/js/main.js");
+    ;script(type "text/javascript", src "/docs/pub/tree/src/js/main.js");
+    ::;script(type "text/javascript", src "http://localhost:8000/docs/pub/tree/src/js/main.js");
   ==
   ;body
     ;script(type "text/javascript"):"""

From 51f90fd13689dc40fc5cddc720dd5d627f0b51e9 Mon Sep 17 00:00:00 2001
From: Galen Wolfe-Pauly 
Date: Thu, 23 Apr 2015 11:32:38 -0700
Subject: [PATCH 62/89] working on type

---
 docs/pub/doc/hoon/library/2ec.md | 2 +-
 docs/pub/tree/src/css/main.css   | 3 ++-
 docs/pub/tree/src/css/main.styl  | 3 ++-
 docs/tree/hymn.hook              | 8 ++++----
 4 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/docs/pub/doc/hoon/library/2ec.md b/docs/pub/doc/hoon/library/2ec.md
index aed4f419a..dff72c554 100644
--- a/docs/pub/doc/hoon/library/2ec.md
+++ b/docs/pub/doc/hoon/library/2ec.md
@@ -1,7 +1,7 @@
 section 2eC, parsing (custom rules)
 ===================================
 
-### ++cold
+

++cold

Replace with constant diff --git a/docs/pub/tree/src/css/main.css b/docs/pub/tree/src/css/main.css index cbab27c16..747d08a9c 100644 --- a/docs/pub/tree/src/css/main.css +++ b/docs/pub/tree/src/css/main.css @@ -132,7 +132,8 @@ pre { margin-left: -0.3rem; } code { - font-size: 0.9rem; + font-size: 0.8rem; + line-height: 1.2rem; background-color: #f4f4f4; margin-top: -0.05rem; padding: 0.2rem; diff --git a/docs/pub/tree/src/css/main.styl b/docs/pub/tree/src/css/main.styl index 1c6906b25..b32b58d38 100644 --- a/docs/pub/tree/src/css/main.styl +++ b/docs/pub/tree/src/css/main.styl @@ -62,7 +62,8 @@ pre margin-left -.3rem code - font-size .9rem + font-size .8rem + line-height 1.2rem background-color #f4f4f4 margin-top -.05rem padding .2rem diff --git a/docs/tree/hymn.hook b/docs/tree/hymn.hook index b64fa15b8..3cec27ac0 100644 --- a/docs/tree/hymn.hook +++ b/docs/tree/hymn.hook @@ -17,13 +17,13 @@ ;head ;title: urbit Tree ;meta(name "viewport", content "width=device-width, initial-scale=1"); - ;link(type "text/css", rel "stylesheet", href "/docs/pub/tree/src/css/main.css"); - ::;link(type "text/css", rel "stylesheet", href "http://localhost:8000/docs/pub/tree/src/css/main.css"); + ::;link(type "text/css", rel "stylesheet", href "/docs/pub/tree/src/css/main.css"); + ;link(type "text/css", rel "stylesheet", href "http://localhost:8000/docs/pub/tree/src/css/main.css"); ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"); ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"); ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/react/0.12.2/react.js"); - ;script(type "text/javascript", src "/docs/pub/tree/src/js/main.js"); - ::;script(type "text/javascript", src "http://localhost:8000/docs/pub/tree/src/js/main.js"); + ::;script(type "text/javascript", src "/docs/pub/tree/src/js/main.js"); + ;script(type "text/javascript", src "http://localhost:8000/docs/pub/tree/src/js/main.js"); == ;body ;script(type "text/javascript"):""" From 0cce8e35d3e1b0a28a3128daf6f213bb4f671e81 Mon Sep 17 00:00:00 2001 From: Galen Wolfe-Pauly Date: Thu, 23 Apr 2015 11:34:19 -0700 Subject: [PATCH 63/89] anchor links --- docs/pub/doc/hoon/library/0.md | 2 +- docs/pub/doc/hoon/library/1.md | 200 ++++++++--------- docs/pub/doc/hoon/library/2a.md | 32 +-- docs/pub/doc/hoon/library/2b.md | 68 +++--- docs/pub/doc/hoon/library/2c.md | 152 ++++++------- docs/pub/doc/hoon/library/2da.md | 28 +-- docs/pub/doc/hoon/library/2db.md | 56 ++--- docs/pub/doc/hoon/library/2dc.md | 18 +- docs/pub/doc/hoon/library/2dd.md | 6 +- docs/pub/doc/hoon/library/2ea.md | 8 +- docs/pub/doc/hoon/library/2eb.md | 4 +- docs/pub/doc/hoon/library/2ec.md | 38 ++-- docs/pub/doc/hoon/library/2ed.md | 18 +- docs/pub/doc/hoon/library/2ee.md | 16 +- docs/pub/doc/hoon/library/2ef.md | 68 +++--- docs/pub/doc/hoon/library/2eg.md | 20 +- docs/pub/doc/hoon/library/2eh.md | 52 ++--- docs/pub/doc/hoon/library/2ei.md | 8 +- docs/pub/doc/hoon/library/2ej.md | 36 +-- docs/pub/doc/hoon/library/2ek.md | 14 +- docs/pub/doc/hoon/library/2el.md | 162 +++++++------- docs/pub/doc/hoon/library/2em.md | 94 ++++---- docs/pub/doc/hoon/library/2en.md | 18 +- docs/pub/doc/hoon/library/2eo.md | 18 +- docs/pub/doc/hoon/library/2ep.md | 28 +-- docs/pub/doc/hoon/library/2ew.md | 42 ++-- docs/pub/doc/hoon/library/2ex.md | 96 ++++---- docs/pub/doc/hoon/library/2ey.md | 30 +-- docs/pub/doc/hoon/library/2ez.md | 32 +-- docs/pub/doc/hoon/library/3ba.md | 14 +- docs/pub/doc/hoon/library/3bb.md | 68 +++--- docs/pub/doc/hoon/library/3bc.md | 24 +- docs/pub/doc/hoon/library/3bd.md | 154 ++++++------- docs/pub/doc/hoon/library/3be.md | 138 ++++++------ docs/pub/doc/hoon/library/3bf.md | 18 +- docs/pub/doc/hoon/library/3bg.md | 74 +++---- docs/pub/doc/hoon/library/3bh.md | 24 +- docs/pub/doc/hoon/library/3bi.md | 366 +++++++++++++++---------------- 38 files changed, 1122 insertions(+), 1122 deletions(-) diff --git a/docs/pub/doc/hoon/library/0.md b/docs/pub/doc/hoon/library/0.md index 286ca83b6..082e0a734 100644 --- a/docs/pub/doc/hoon/library/0.md +++ b/docs/pub/doc/hoon/library/0.md @@ -1,7 +1,7 @@ volume 0, Kelvin Versioning. =========================== -### ++hoon +

++hoon

++ hoon %164 :: version stub diff --git a/docs/pub/doc/hoon/library/1.md b/docs/pub/doc/hoon/library/1.md index db01c434f..c94962f70 100644 --- a/docs/pub/doc/hoon/library/1.md +++ b/docs/pub/doc/hoon/library/1.md @@ -3,7 +3,7 @@ volume 1, Hoon Structures ------------------------------------------------------------------------ -### ++abel +

++abel

++ abel typo :: original sin: type @@ -16,7 +16,7 @@ See also: `++typo` ------------------------------------------------------------------------ -### ++axis +

++axis

++ axis ,@ :: tree address @@ -36,7 +36,7 @@ See also: `++clue`, `++limb`, `++slot`, `++peg`, and Section 2fC ------------------------------------------------------------------------ -### ++also +

++also

++ also ,[p=term q=wing r=type] :: alias @@ -44,7 +44,7 @@ XX unused? ------------------------------------------------------------------------ -### ++base +

++base

++ base ?([%atom p=odor] %noun %cell %bean %null) :: axils, @ * ^ ? ~ @@ -66,7 +66,7 @@ See also: `++tile`, `++twig` ------------------------------------------------------------------------ -### ++bean +

++bean

++ bean ,? :: 0=&=yes, 1=|=no @@ -83,7 +83,7 @@ The Urbit version of a boolean, which we call a loobean. 0 or & is ------------------------------------------------------------------------ -### ++beer +

++beer

++ beer $|(@ [~ p=twig]) :: simple embed @@ -98,7 +98,7 @@ See also: `++phax`, `++scat`, section 2fD ------------------------------------------------------------------------ -### ++beet +

++beet

++ beet $| @ :: advanced embed $% [%a p=twig] :: take tape @@ -114,7 +114,7 @@ See also: `++sail`, section 2fD ------------------------------------------------------------------------ -### ++bloq +

++bloq

++ bloq ,@ :: blockclass @@ -129,7 +129,7 @@ See also: section 2cA ------------------------------------------------------------------------ -### ++calf +

++calf

++ calf ,[p=(map ,@ud wine) q=wine] :: @@ -150,7 +150,7 @@ See also: `++wine`, `++dole`, `++doge`, `++dish`, section 2fC ------------------------------------------------------------------------ -### ++char +

++char

++ char ,@tD :: UTF-8 byte @@ -167,7 +167,7 @@ See also: `++tape`, `++lust`, `++just`, `++mask`, chapter 2f ------------------------------------------------------------------------ -### ++chub +

++chub

++ chub :: registered battery $: p=(pair chum tyre) :: definition @@ -181,7 +181,7 @@ See also: Section 2fB. ------------------------------------------------------------------------ -### ++chum +

++chum

++ chum $? lef=term :: jet name [std=term kel=@] :: kelvin version @@ -205,7 +205,7 @@ See also: `++twig`, `++clue` ------------------------------------------------------------------------ -### ++clue +

++clue

++ clue ,[p=axis q=chum r=tyre] :: battery definition @@ -217,7 +217,7 @@ See also: section 2fB ------------------------------------------------------------------------ -### ++coil +

++coil

++ coil $: p=?(%gold %iron %lead %zinc) :: core type q=type :: @@ -232,7 +232,7 @@ See also: `++core`, Section 2fB ------------------------------------------------------------------------ -### ++coin +

++coin

++ coin $% [%$ p=dime] :: [%blob p=*] :: @@ -264,7 +264,7 @@ See also: `++so`, `++co`, Section 2eL, `++dime` ------------------------------------------------------------------------ -### ++cord +

++cord

++ cord ,@t :: text atom (UTF-8) @@ -287,7 +287,7 @@ See also: `++trip`, `++crip`, Section 2eJ ------------------------------------------------------------------------ -### ++date +

++date

++ date ,[[a=? y=@ud] m=@ud t=tarp] :: parsed date @@ -302,7 +302,7 @@ See also: `++year`, `++yore`, Section 2cH, `++stud`, `++dust`, Section ------------------------------------------------------------------------ -### ++dime +

++dime

++ dime ,[p=@ta q=@] :: @@ -319,7 +319,7 @@ See also: `++so`, `++co`, Section 2eL, `++coin` ------------------------------------------------------------------------ -### ++dram +

++dram

++ dram $% [| p=(map ,@tas dram)] :: simple unix dir [& p=@ud q=@] :: @@ -333,7 +333,7 @@ XX Unused ------------------------------------------------------------------------ -### ++each +

++each

++ each |*([a=$+(* *) b=$+(* *)] $%([& p=a] [| p=b])) :: either a or b @@ -345,7 +345,7 @@ Tile generator: produces a dicriminated fork between two types. ------------------------------------------------------------------------ -### ++edge +

++edge

++ edge ,[p=hair q=(unit ,[p=* q=nail])] :: parsing output @@ -360,7 +360,7 @@ See also: Section 2eD, `++rule` ------------------------------------------------------------------------ -### ++foot +

++foot

++ foot $% [%ash p=twig] :: dry arm, geometric [%elm p=twig] :: wet arm, generic @@ -386,7 +386,7 @@ See also: `++ap`, `++ut`, Section 2fB, Section 2fC ------------------------------------------------------------------------ -### ++gate +

++gate

++ gate $+(* *) :: general gate @@ -407,7 +407,7 @@ See also: `++lift`, `++cork`, Core Language Doc ------------------------------------------------------------------------ -### ++hair +

++hair

++ hair ,[p=@ud q=@ud] :: parsing trace @@ -427,7 +427,7 @@ See also: `++last`, Section 2eB ------------------------------------------------------------------------ -### ++like +

++like

++ like |* a=_,* :: generic edge |= b=_`*`[(hair) ~] :: @@ -455,7 +455,7 @@ See also: `++easy`, `++just`/`++jest`, `++knee`, `++mask`, `++shim`, ------------------------------------------------------------------------ -### ++limb +

++limb

++ limb $|(term $%([%& p=axis] [%| p=@ud q=term])) :: @@ -474,7 +474,7 @@ See also: section 2fC-2fD ------------------------------------------------------------------------ -### ++line +

++line

++ line ,[p=[%leaf p=odor q=@] q=tile] :: %kelp case @@ -501,7 +501,7 @@ Used in compilation and grammar, section 2fC-2fD ------------------------------------------------------------------------ -### ++list +

++list

++ list |* a=_,* :: null-term list $|(~ [i=a t=(list a)]) :: @@ -520,7 +520,7 @@ See also: `++turn`, `++snag`, section 2bB. ------------------------------------------------------------------------ -### ++lone +

++lone

++ lone |*(a=$+(* *) ,p=a) :: just one thing @@ -530,7 +530,7 @@ Tile generator. `++lone` puts face of `p` on something. ------------------------------------------------------------------------ -### ++mane +

++mane

++ mane $|(@tas [@tas @tas]) :: XML name/space @@ -549,7 +549,7 @@ See also: `++sail` doc, Section 3bD ------------------------------------------------------------------------ -### ++manx +

++manx

++ manx ,[g=marx c=marl] :: XML node @@ -561,7 +561,7 @@ See also: `++sail` doc, Section 3bD ------------------------------------------------------------------------ -### ++marl +

++marl

++ marl (list manx) :: XML node list @@ -573,7 +573,7 @@ See also: `++sail` doc ------------------------------------------------------------------------ -### ++mars +

++mars

++ mars ,[t=[n=%$ a=[i=[n=%$ v=tape] t=~]] c=~] :: XML cdata @@ -583,7 +583,7 @@ See also: `++sail` doc ------------------------------------------------------------------------ -### ++mart +

++mart

++ mart (list ,[n=mane v=tape]) :: XML attributes @@ -596,7 +596,7 @@ See also: `++sail` doc ------------------------------------------------------------------------ -### ++marx +

++marx

++ marx ,[n=mane a=mart] :: XML tag @@ -609,7 +609,7 @@ See also: `++sail` doc ------------------------------------------------------------------------ -### ++metl +

++metl

++ metl ?(%gold %iron %zinc %lead) :: core variance @@ -619,7 +619,7 @@ See also: `++coil` ------------------------------------------------------------------------ -### ++noun +

++noun

++ noun ,* :: any noun @@ -630,7 +630,7 @@ Used nowhere XX ------------------------------------------------------------------------ -### ++null +

++null

++ null ,~ :: null, nil, etc @@ -642,7 +642,7 @@ Used nowhere XX ------------------------------------------------------------------------ -### ++odor +

++odor

++ odor ,@ta :: atom format @@ -657,7 +657,7 @@ See also: `++base`, odor reference ------------------------------------------------------------------------ -### ++tarp +

++tarp

++ tarp ,[d=@ud h=@ud m=@ud s=@ud f=(list ,@ux)] :: parsed time @@ -677,7 +677,7 @@ See also: `++date`, `++yell`/`++yule`, Section 2cH ------------------------------------------------------------------------ -### ++time +

++time

++ time ,@da :: galactic time @@ -693,7 +693,7 @@ See also: `++date`, odor reference ------------------------------------------------------------------------ -### ++tree +

++tree

++ tree |* a=_,* :: binary tree $|(~ [n=a l=(tree a) r=(tree a)]) :: @@ -706,7 +706,7 @@ left/right sub `++tree`s of the same type. Pretty-printed with `{}`. ------------------------------------------------------------------------ -### ++nail +

++nail

++ nail ,[p=hair q=tape] :: parsing input @@ -721,7 +721,7 @@ See also: `++roll` ------------------------------------------------------------------------ -### ++numb +

++numb

++ numb ,@ :: just a number @@ -729,7 +729,7 @@ Used nowhere XX ------------------------------------------------------------------------ -### ++pair +

++pair

++ pair |*([a=$+(* *) b=$+(* *)] ,[p=a q=b]) :: just a pair @@ -740,7 +740,7 @@ Tile generator. Produces a tuple of two of the types passed in. ------------------------------------------------------------------------ -### ++pass +

++pass

++ pass ,@ :: public key @@ -750,7 +750,7 @@ See also: `++acru`, `++crua`, `++crub` ------------------------------------------------------------------------ -### ++path +

++path

++ path (list span) :: filesys location @@ -762,7 +762,7 @@ A filesystem path. A `++path` is a list of `++span`, `@ta`. Used in ------------------------------------------------------------------------ -### ++pint +

++pint

++ pint ,[p=[p=@ q=@] q=[p=@ q=@]] :: line/column range @@ -777,7 +777,7 @@ hairs indicating from - to. ------------------------------------------------------------------------ -### ++pole +

++pole

++ pole |* a=_,* :: nameless list $|(~ [a (pole a)]) :: @@ -790,7 +790,7 @@ without the `i=` and `t=`. ------------------------------------------------------------------------ -### ++port +

++port

++ port $: p=axis :: $= q :: @@ -808,7 +808,7 @@ Type and location of core-shaped thing? XX Compiler Internals ------------------------------------------------------------------------ -### ++post +

++post

++ post $: p=axis :: $= q :: @@ -827,7 +827,7 @@ Type and location of possibly core-shaped thing? XX Compiler Internals ------------------------------------------------------------------------ -### ++prop +

++prop

++ prop $: p=axis :: $= q :: @@ -843,7 +843,7 @@ Verified core-shaped thing? XX Compiler Internals ------------------------------------------------------------------------ -### ++qual +

++qual

++ qual |* [a=$+(* *) b=$+(* *) c=$+(* *) d=$+(* *)] :: just a quadruple ,[p=a q=b r=c s=d] :: @@ -855,7 +855,7 @@ Tile generator. A `++qual` is a tuple of four of the types passed in.. ------------------------------------------------------------------------ -### ++rege +

++rege

++ rege $| ?(%dote %ende %sart %empt %boun %bout) :: parsed regex $% [%lite p=char] :: literal @@ -885,7 +885,7 @@ See also: `++rexp`, `++repg`, `++pars` ------------------------------------------------------------------------ -### ++ring +

++ring

++ ring ,@ :: private key @@ -895,7 +895,7 @@ See also: `++acru`, `++crua`, `++crub`. ------------------------------------------------------------------------ -### ++rule +

++rule

++ rule |=(tub=nail `edge`[p.tub ~ ~ tub]) :: parsing rule @@ -916,7 +916,7 @@ See also: `++cold`, Section 2eC ------------------------------------------------------------------------ -### ++span +

++span

++ span ,@ta :: text-atom (ASCII) @@ -941,7 +941,7 @@ besides numbers and lowercase letters are permitted. ------------------------------------------------------------------------ -### ++spot +

++spot

++ spot ,[p=path q=pint] :: range in file @@ -957,7 +957,7 @@ See also: `++pint` ------------------------------------------------------------------------ -### ++tang +

++tang

++ tang (list tank) :: general error @@ -965,7 +965,7 @@ Unused XX ------------------------------------------------------------------------ -### ++tank +

++tank

++ tank $% [%leaf p=tape] :: printing formats $: %palm :: @@ -996,7 +996,7 @@ list of `++tank` delimted by the strings in `p`. ------------------------------------------------------------------------ -### ++tape +

++tape

++ tape (list char) :: like a string @@ -1010,7 +1010,7 @@ list of chars. ------------------------------------------------------------------------ -### ++term +

++term

++ term ,@tas :: Hoon ASCII subset @@ -1030,7 +1030,7 @@ always preceded by `%`. This means a term is always cubical. The empty ------------------------------------------------------------------------ -### ++tiki +

++tiki

++ tiki :: test case $% [& p=(unit term) q=wing] :: simple wing @@ -1062,13 +1062,13 @@ A `++wing` or `++twig`. ------------------------------------------------------------------------ -### ++tile +

++tile

See the Tile section of the Hoon Reference. ------------------------------------------------------------------------ -### ++toga +

++toga

++ toga :: face control $| p=term :: two togas @@ -1104,7 +1104,7 @@ using `^=`. ------------------------------------------------------------------------ -### ++trap +

++trap

++ trap ,_|.(_*) :: makes perfect sense @@ -1121,7 +1121,7 @@ See also: `|.` ------------------------------------------------------------------------ -### ++trel +

++trel

++ trel |* [a=$+(* *) b=$+(* *) c=$+(* *)] :: just a triple ,[p=a q=b r=c] :: @@ -1133,7 +1133,7 @@ Tile generator. `++trel` is a tuple of three of the types passed in. ------------------------------------------------------------------------ -### ++tuna +

++tuna

++ tuna :: tagflow $% [%a p=twig] :: plain text @@ -1154,13 +1154,13 @@ See also: `++sail` ------------------------------------------------------------------------ -### ++twig +

++twig

See Twig section of Hoon reference ------------------------------------------------------------------------ -### ++tine +

++tine

++ tine (list ,[p=tile q=twig]) :: @@ -1186,7 +1186,7 @@ See also: `++twig` ------------------------------------------------------------------------ -### ++tusk +

++tusk

++ tusk (list twig) :: @@ -1202,7 +1202,7 @@ See also: `++twig` ------------------------------------------------------------------------ -### ++tyre +

++tyre

++ tyre (list ,[p=term q=twig]) :: @@ -1212,7 +1212,7 @@ See also: `++twig` ------------------------------------------------------------------------ -### ++tyke +

++tyke

++ tyke (list (unit twig)) :: @@ -1227,7 +1227,7 @@ where the `=` are inferred from your current path. ------------------------------------------------------------------------ -### ++tram +

++tram

++ tram (list ,[p=wing q=twig]) :: @@ -1246,7 +1246,7 @@ See also: `++twig` ------------------------------------------------------------------------ -### ++nock +

++nock

++ nock $& [p=nock q=nock] :: autocons $% [%0 p=@] :: axis select @@ -1272,7 +1272,7 @@ See Nock doc ------------------------------------------------------------------------ -### ++tone +

++tone

++ tone $% [%0 p=*] :: success [%1 p=(list)] :: blocks @@ -1314,7 +1314,7 @@ trace is not yet rendered. ------------------------------------------------------------------------ -### ++toon +

++toon

++ toon $% [%0 p=*] :: success [%1 p=(list)] :: blocks @@ -1337,7 +1337,7 @@ requests blocked on (`%1`), or failure with stack trace (`%2`). ------------------------------------------------------------------------ -### ++tune +

++tune

++ tune $% [%0 p=vase] :: [%1 p=(list)] :: @@ -1350,7 +1350,7 @@ Probably typed `tone`? ------------------------------------------------------------------------ -### ++twin +

++twin

++ twin ,[p=term q=wing r=axis s=type] :: alias info @@ -1368,13 +1368,13 @@ Aliasing. Used in `%bull` `++type` to typecheck aliased faces. ------------------------------------------------------------------------ -### ++type +

++type

See Type section of Hoon reference ------------------------------------------------------------------------ -### ++typo +

++typo

++ typo type :: old type @@ -1385,7 +1385,7 @@ See also: `++seem`, `++vise`, `++type` ------------------------------------------------------------------------ -### ++udal +

++udal

++ udal :: atomic change (%b) $: p=@ud :: blockwidth @@ -1396,7 +1396,7 @@ XX Unused ------------------------------------------------------------------------ -### ++udon +

++udon

++ udon :: abstract delta $: p=umph :: preprocessor @@ -1412,7 +1412,7 @@ See `%clay` doc ------------------------------------------------------------------------ -### ++umph +

++umph

++ umph :: change filter $| $? %a :: no filter @@ -1426,7 +1426,7 @@ See `%clay` doc ------------------------------------------------------------------------ -### ++unce +

++unce

++ unce |* a=_,* :: change part $% [%& p=@ud] :: skip[copy] @@ -1437,7 +1437,7 @@ See `%clay` doc ------------------------------------------------------------------------ -### ++unit +

++unit

++ unit |* a=_,* :: maybe $|(~ [~ u=a]) :: @@ -1455,7 +1455,7 @@ See also: `++bind`, Section 2bA ------------------------------------------------------------------------ -### ++upas +

++upas

++ upas :: tree change (%d) $& [p=upas q=upas] :: cell @@ -1468,7 +1468,7 @@ See `%clay` doc ------------------------------------------------------------------------ -### ++urge +

++urge

++ urge |*(a=_,* (list (unce a))) :: list change @@ -1476,7 +1476,7 @@ See `%clay` doc ------------------------------------------------------------------------ -### ++vase +

++vase

++ vase ,[p=type q=*] :: type-value pair @@ -1490,7 +1490,7 @@ See `%arvo` doc ------------------------------------------------------------------------ -### ++vise +

++vise

++ vise ,[p=typo q=*] :: old vase @@ -1500,7 +1500,7 @@ See `++typo`, `++seer` ------------------------------------------------------------------------ -### ++wall +

++wall

++ wall (list tape) :: text lines (no \n) @@ -1523,7 +1523,7 @@ See also: `++wash` ------------------------------------------------------------------------ -### ++wain +

++wain

++ wain (list cord) :: text lines (no \n) @@ -1556,7 +1556,7 @@ See also: `++lore`, `++role` ------------------------------------------------------------------------ -### ++wing +

++wing

++ wing (list limb) :: @@ -1572,7 +1572,7 @@ See also: `++twig` ------------------------------------------------------------------------ -### ++wine +

++wine

++ wine $| ?(%noun %path %tank %void %wall %wool %yarn) $% [%atom p=term] :: @@ -1654,7 +1654,7 @@ See also: `++calf` ------------------------------------------------------------------------ -### ++wonk +

++wonk

++ wonk |*(veq=edge ?~(q.veq !! p.u.q.veq)) :: :: :: @@ -1682,7 +1682,7 @@ See also: `++edge`, Section 2eC ------------------------------------------------------------------------ -### ++map +

++map

++ map |* [a=_,* b=_,*] :: associative tree $|(~ [n=[p=a q=b] l=(map a b) r=(map a b)]) :: @@ -1700,7 +1700,7 @@ See also: `++by` ------------------------------------------------------------------------ -### ++qeu +

++qeu

++ qeu |* a=_,* :: queue $|(~ [n=a l=(qeu a) r=(qeu a)]) :: @@ -1717,7 +1717,7 @@ See also: `++to` ------------------------------------------------------------------------ -### ++set +

++set

++ set |* a=_,* :: set $|(~ [n=a l=(set a) r=(set a)]) :: @@ -1736,7 +1736,7 @@ See also: `++in` ------------------------------------------------------------------------ -### ++jar +

++jar

++ jar |*([a=_,* b=_,*] (map a (list b))) :: map of lists @@ -1760,7 +1760,7 @@ See also: `++ja`, `++by`, `++map`, `++list` ------------------------------------------------------------------------ -### ++jug +

++jug

++ jug |*([a=_,* b=_,*] (map a (set b))) :: map of sets diff --git a/docs/pub/doc/hoon/library/2a.md b/docs/pub/doc/hoon/library/2a.md index ec9bdd859..c49ba7c68 100644 --- a/docs/pub/doc/hoon/library/2a.md +++ b/docs/pub/doc/hoon/library/2a.md @@ -1,7 +1,7 @@ chapter 2a, basic unsigned math =============================== -### ++add +

++add

Add @@ -28,7 +28,7 @@ Produces the sum of `a` and `b` as an atom. ------------------------------------------------------------------------ -### ++cap +

++cap

Tree head @@ -59,7 +59,7 @@ within the tail. ------------------------------------------------------------------------ -### ++dec +

++dec

Decrement @@ -86,7 +86,7 @@ Produces `a-1` as an atom. ------------------------------------------------------------------------ -### ++div +

++div

Divide @@ -117,7 +117,7 @@ Computes `a` divided by `b`, producing an atom. ------------------------------------------------------------------------ -### ++fac +

++fac

Factorial @@ -142,7 +142,7 @@ Computes the factorial of `a`, producing an atom. ------------------------------------------------------------------------ -### ++gte +

++gte

Greater-than/equal @@ -168,7 +168,7 @@ Tests whether `a` is greater than a number `b`, producing a loobean. ------------------------------------------------------------------------ -### ++gth +

++gth

Greater-than @@ -192,7 +192,7 @@ Tests whether `a` is greater than `b`, producing a loobean. ------------------------------------------------------------------------ -### ++lte +

++lte

Less-than/equal @@ -219,7 +219,7 @@ Tests whether `a` is less than or equal to `b`, producing a loobean. ------------------------------------------------------------------------ -### ++lth +

++lth

Less-than @@ -252,7 +252,7 @@ Tests whether `a` is less than `b`, producing a loobean. ------------------------------------------------------------------------ -### ++mas +

++mas

Axis within head/tail @@ -287,7 +287,7 @@ Computes the axis of `a` within the head or the tail, producing an atom. ~zod/try=> (mas 1) ! exit -### ++max +

++max

Maximum @@ -314,7 +314,7 @@ Computes the maximum of `a` and `b`, producing an atom. ------------------------------------------------------------------------ -### ++min +

++min

Minimum @@ -341,7 +341,7 @@ Computes the minimum of `a` and `b`, producing an atom. ------------------------------------------------------------------------ -### ++mod +

++mod

Modulus @@ -361,7 +361,7 @@ Computes the remainder of dividing `a` by `b`, producing an atom. ------------------------------------------------------------------------ -### ++mul +

++mul

Multiply @@ -388,7 +388,7 @@ Multiplies `a` by `b`, producing an atom. ------------------------------------------------------------------------ -### ++peg +

++peg

Axis within axis @@ -419,7 +419,7 @@ Computes the axis of `b` within axis `a`, producing an atom. ------------------------------------------------------------------------ -### ++sub +

++sub

Subtract diff --git a/docs/pub/doc/hoon/library/2b.md b/docs/pub/doc/hoon/library/2b.md index 5e68f3d27..dfa3637a2 100644 --- a/docs/pub/doc/hoon/library/2b.md +++ b/docs/pub/doc/hoon/library/2b.md @@ -4,7 +4,7 @@ chapter 2b, basic containers Section 2bA, units ------------------ -### ++biff +

++biff

Unit as argument @@ -27,7 +27,7 @@ Applies a gate that produces a unit, `b`, to the value (`u.a`) of a unit ------------------------------------------------------------------------ -### ++bind +

++bind

Bind @@ -51,7 +51,7 @@ unit. ------------------------------------------------------------------------ -### ++bond +

++bond

Replace null @@ -77,7 +77,7 @@ unit is not empty, then the original unit is produced. ------------------------------------------------------------------------ -### ++both +

++both

Group unit values @@ -101,7 +101,7 @@ Produces a unit whose value is a cell of the values of two input units ------------------------------------------------------------------------ -### ++clap +

++clap

Apply gate to two units @@ -133,7 +133,7 @@ two units `a` and `b`. ------------------------------------------------------------------------ -### ++drop +

++drop

Unit list @@ -155,7 +155,7 @@ Produces a [list]() of the value from a unit `a`. ------------------------------------------------------------------------ -### ++fall +

++fall

Default unit @@ -177,7 +177,7 @@ null. ------------------------------------------------------------------------ -### ++lift +

++lift

Fmap @@ -201,7 +201,7 @@ produces a unit value. ------------------------------------------------------------------------ -### ++mate +

++mate

Choose @@ -237,7 +237,7 @@ produces that value. If the assertion fails, `++mate` crashes with ------------------------------------------------------------------------ -### ++need +

++need

Unwrap @@ -262,7 +262,7 @@ Retrieve the value from a unit and crash if the unit is null. ------------------------------------------------------------------------ -### ++some +

++some

Unify @@ -286,7 +286,7 @@ section 2bB, lists Reverse -### ++flop +

++flop

++ flop :: reverse ~/ %flop @@ -306,7 +306,7 @@ Produces the list `a` in reverse order. ~zod/try=> (flop a) ~[3 2 1] -### ++homo +

++homo

Homogenize @@ -332,7 +332,7 @@ list `a`. ~zod/try=> (homo a) ~[1 2 3] -### ++limo +

++limo

List Constructor @@ -350,7 +350,7 @@ Turns a null-terminated tuple into a list. ~zod/try=> (limo [1 2 3 ~]) [i=1 t=[i=2 t=[i=3 t=~]]] -### ++lent +

++lent

List length @@ -374,7 +374,7 @@ Produces the length of any list `a` as an atom. ------------------------------------------------------------------------ -### ++levy +

++levy

"and" to list @@ -402,7 +402,7 @@ passed to gate `b`. ------------------------------------------------------------------------ -### ++lien +

++lien

"or" to list @@ -430,7 +430,7 @@ passed to gate `b`. ------------------------------------------------------------------------ -### ++murn +

++murn

Maybe transform @@ -454,7 +454,7 @@ Produces a new list with all the results that do not produce `~`. ~zod/try=> (murn (limo [0 1 2 3 ~]) a) [i=12 t=[i=13 t=~]] -### ++reap +

++reap

Replicate @@ -479,7 +479,7 @@ Replicate: produces a list containing `a` copies of `b`. ------------------------------------------------------------------------ -### ++reel +

++reel

Right fold @@ -511,7 +511,7 @@ the final value of the accumulator. ------------------------------------------------------------------------ -### ++roll +

++roll

Left fold @@ -543,7 +543,7 @@ producing the final value of the accumulator. ------------------------------------------------------------------------ -### ++skid +

++skid

Separate @@ -567,7 +567,7 @@ true when slammed to gate `b` and those who produce `%.n`. ------------------------------------------------------------------------ -### ++skim +

++skim

Suffix @@ -593,7 +593,7 @@ producing a list of all of the members that produce `%.y`. Inverse of ------------------------------------------------------------------------ -### ++skip +

++skip

Except @@ -619,7 +619,7 @@ producing a list of all of the members that produce `%.n`. Inverse of ------------------------------------------------------------------------ -### ++scag +

++scag

Prefix @@ -644,7 +644,7 @@ the front of the list. ------------------------------------------------------------------------ -### ++slag +

++slag

Suffix @@ -670,7 +670,7 @@ Accepts an atom `a` and list `b`, producing the remaining elements from ------------------------------------------------------------------------ -### ++snag +

++snag

Index @@ -697,7 +697,7 @@ of `a`and failing if the list is null. Lists are 0-indexed. ------------------------------------------------------------------------ -### ++sort +

++sort

Quicksort @@ -726,7 +726,7 @@ sorted according to `b`. ------------------------------------------------------------------------ -### ++swag +

++swag

Infix @@ -748,7 +748,7 @@ inclusive index `a`, producing `b` number of characters. ------------------------------------------------------------------------ -### ++turn +

++turn

Gate to list @@ -774,7 +774,7 @@ to each element of the original list. ------------------------------------------------------------------------ -### ++weld +

++weld

Concatenate @@ -797,7 +797,7 @@ Concatenate two lists `a` and `b`. ------------------------------------------------------------------------ -### ++welp +

++welp

Perfect weld @@ -827,7 +827,7 @@ to homogenization. ------------------------------------------------------------------------ -### ++wild +

++wild

XXDELETE @@ -873,7 +873,7 @@ individually. ------------------------------------------------------------------------ -### ++zing +

++zing

Cons diff --git a/docs/pub/doc/hoon/library/2c.md b/docs/pub/doc/hoon/library/2c.md index 41e86be44..4e0688e3f 100644 --- a/docs/pub/doc/hoon/library/2c.md +++ b/docs/pub/doc/hoon/library/2c.md @@ -4,7 +4,7 @@ chapter 2c, simple noun surgery section 2cA, bit surgery ------------------------ -### ++bex +

++bex

Binary exponent @@ -28,7 +28,7 @@ Computes the result of `2^a`, producing an atom. ------------------------------------------------------------------------ -### ++xeb +

++xeb

Binary logarithm @@ -57,7 +57,7 @@ Computes the base-2 logarithm of `a`, producing an atom. ------------------------------------------------------------------------ -### ++can +

++can

Assemble @@ -91,7 +91,7 @@ value. ------------------------------------------------------------------------ -### ++cat +

++cat

Concatenate @@ -130,7 +130,7 @@ atom. ------------------------------------------------------------------------ -### ++cut +

++cut

Slice @@ -167,7 +167,7 @@ Produces an atom. ------------------------------------------------------------------------ -### ++end +

++end

Tail @@ -203,7 +203,7 @@ Produces an atom by taking the last `b` blocks of size `a` from `c`. ------------------------------------------------------------------------ -### ++fil +

++fil

Fill bloqstream @@ -235,7 +235,7 @@ Produces an atom by repeating `c` for `b` blocks of size `a`. ------------------------------------------------------------------------ -### ++lsh +

++lsh

Left-shift @@ -267,7 +267,7 @@ Produces an atom by left-shifting `c` by `b` blocks of size `a`. ------------------------------------------------------------------------ -### ++met +

++met

Measure @@ -299,7 +299,7 @@ Computes the number of blocks of size `a` in `b`, producing an atom. ------------------------------------------------------------------------ -### ++rap +

++rap

Assemble non-zero @@ -327,7 +327,7 @@ Concatenate a list of atoms `b` using blocksize `a`, producing an atom. ------------------------------------------------------------------------ -### ++rep +

++rep

Assemble single @@ -363,7 +363,7 @@ Produces an atom by assembling a list of atoms `b` using block size `a`. ------------------------------------------------------------------------ -### ++rip +

++rip

Disassemble @@ -399,7 +399,7 @@ Produces a list of atoms from the bits of `b` using block size `a`. ------------------------------------------------------------------------ -### ++rsh +

++rsh

Right-shift @@ -441,7 +441,7 @@ Right-shifts `c` by `b` blocks of size `a`, producing an atom. ------------------------------------------------------------------------ -### ++swap +

++swap

Reverse block order @@ -470,7 +470,7 @@ reversing the block order of `b` using block size `a`. section 2cB, bit logic ---------------------- -### ++con +

++con

Binary OR @@ -513,7 +513,7 @@ atom. ------------------------------------------------------------------------ -### ++dis +

++dis

Binary AND @@ -560,7 +560,7 @@ atom. ------------------------------------------------------------------------ -### ++mix +

++mix

Binary XOR @@ -599,7 +599,7 @@ Produces the bit-wise logical XOR of `a` and `b`, producing an atom. ------------------------------------------------------------------------ -### ++not +

++not

Binary NOT @@ -633,7 +633,7 @@ of `c`. section 2cC, noun orders ------------------------ -### ++aor +

++aor

Alphabetic order @@ -680,7 +680,7 @@ loobean. ------------------------------------------------------------------------ -### ++dor +

++dor

Numeric order @@ -719,7 +719,7 @@ loobean. ------------------------------------------------------------------------ -### ++gor +

++gor

Hash order @@ -758,7 +758,7 @@ XX revisit ------------------------------------------------------------------------ -### ++hor +

++hor

Hash order @@ -789,7 +789,7 @@ Recursive hash comparator gate. ------------------------------------------------------------------------ -### ++vor +

++vor

++ vor :: v-order ~/ %vor @@ -814,7 +814,7 @@ Double hash comparator gate. section 2cD, insecure hashing ----------------------------- -### ++fnv +

++fnv

++ fnv |=(a=@ (end 5 1 (mul 16.777.619 a))) :: FNV scrambler @@ -833,7 +833,7 @@ of size 5 off the product's end, producing atom. ------------------------------------------------------------------------ -### ++mum +

++mum

++ mum :: mug with murmur3 ~/ %mum @@ -889,7 +889,7 @@ XX document ~zod/try=> (mum ~[1 2 3 4 5]) 1.517.902.092 -### ++mug +

++mug

++ mug :: 31bit nonzero FNV1a ~/ %mug @@ -929,7 +929,7 @@ algorithm, producing an atom. section 2cE, phonetic base -------------------------- -### ++po +

++po

++ po ~/ %po @@ -975,7 +975,7 @@ contained in this section. ------------------------------------------------------------------------ -### ++ind +

++ind

Parse prefix @@ -998,7 +998,7 @@ Produces the byte of the right-hand syllable `a`. ------------------------------------------------------------------------ -### ++ins +

++ins

Parse suffix @@ -1023,7 +1023,7 @@ Produces the byte of the left-hand phonetic syllable `b`. ------------------------------------------------------------------------ -### ++tod +

++tod

Fetch prefix @@ -1050,7 +1050,7 @@ atom. ------------------------------------------------------------------------ -### ++tos +

++tos

Fetch suffix @@ -1074,7 +1074,7 @@ atom. section 2cF, signed and modular ints ------------------------------------ -### ++si +

++si

++ si !: :: signed integer |% @@ -1083,7 +1083,7 @@ Container for the signed integer functions. ------------------------------------------------------------------------ -### ++abs +

++abs

++ abs |=(a=@s (add (end 0 1 a) (rsh 0 1 a))) :: absolute value @@ -1100,7 +1100,7 @@ Produces the absolute value of a signed integer. ------------------------------------------------------------------------ -### ++dif +

++dif

++ dif |= [a=@s b=@s] :: subtraction (sum a (new !(syn b) (abs b))) @@ -1122,7 +1122,7 @@ Produces the difference between two signed integers `b` and `c`. ------------------------------------------------------------------------ -### ++dul +

++dul

++ dul |= [a=@s b=@] :: modulus =+(c=(old a) ?:(-.c (mod +.c b) (sub b +.c))) @@ -1146,7 +1146,7 @@ Produces the modulus of two signed integers. ------------------------------------------------------------------------ -### ++fra +

++fra

++ fra |= [a=@s b=@s] :: divide (new =(0 (mix (syn a) (syn b))) (div (abs a) (abs b))) @@ -1164,7 +1164,7 @@ Produces the quotient of two signed integers. ------------------------------------------------------------------------ -### ++new +

++new

++ new |= [a=? b=@] :: [sign value] to @s `@s`?:(a (mul 2 b) ?:(=(0 b) 0 +((mul 2 (dec b))))) @@ -1184,7 +1184,7 @@ Produces a signed integer from a loobean sign value `a` and an atom `b`. ------------------------------------------------------------------------ -### ++old +

++old

++ old |=(a=@s [(syn a) (abs a)]) :: [sign value] @@ -1206,7 +1206,7 @@ Produces the cell `[sign value]` representations of a signed integer. ------------------------------------------------------------------------ -### ++pro +

++pro

++ pro |= [a=@s b=@s] :: multiplication (new =(0 (mix (syn a) (syn b))) (mul (abs a) (abs b))) @@ -1228,7 +1228,7 @@ Produces the product of two signed integers. ------------------------------------------------------------------------ -### ++rem +

++rem

++ rem |=([a=@s b=@s] (dif a (pro b (fra a b)))) :: remainder @@ -1251,7 +1251,7 @@ Produces the remainder from a division of two signed integers. ------------------------------------------------------------------------ -### ++sum +

++sum

++ sum |= [a=@s b=@s] :: addition ~| %si-sum @@ -1285,7 +1285,7 @@ Sum two signed integers. ------------------------------------------------------------------------ -### ++sun +

++sun

++ sun |=(a=@u (mul 2 a)) :: @u to @s @@ -1309,7 +1309,7 @@ inferred as an unsigned integer in the type system. ------------------------------------------------------------------------ -### ++syn +

++syn

++ syn |=(a=@s =(0 (end 0 1 a))) :: sign test @@ -1326,7 +1326,7 @@ Produce the sign of a signed integer, `&` being posiitve, `|` negative. ------------------------------------------------------------------------ -### ++cmp +

++cmp

++ cmp |= [a=@s b=@s] :: compare ^- @s @@ -1359,7 +1359,7 @@ Compare two signed integers. ~zod/try=> (cmp:si -10 --7) -1 -### ++dif +

++dif

++ dif |=([b=@ c=@] (sit (sub (add out (sit b)) (sit c)))) @@ -1389,7 +1389,7 @@ representation. ------------------------------------------------------------------------ -### ++inv +

++inv

++ inv |=(b=@ (sub (dec out) (sit b))) @@ -1412,7 +1412,7 @@ Inverts the order of the modular field. ------------------------------------------------------------------------ -### ++net +

++net

++ net |= b=@ ^- @ => .(b (sit b)) @@ -1476,7 +1476,7 @@ Reverse bytes within block. ------------------------------------------------------------------------ -### ++out +

++out

++ out (bex (bex a)) @@ -1503,7 +1503,7 @@ The maximum integer value that the current block can store. ------------------------------------------------------------------------ -### ++rol +

++rol

++ rol |= [b=bloq c=@ d=@] ^- @ :: roll left =+ e=(sit d) @@ -1532,7 +1532,7 @@ Roll `d` to the left by `c` `b`-sized blocks. ------------------------------------------------------------------------ -### ++ror +

++ror

++ ror |= [b=bloq c=@ d=@] ^- @ :: roll right =+ e=(sit d) @@ -1563,7 +1563,7 @@ Roll `d` to the right by `c` `b`-sized blocks. ------------------------------------------------------------------------ -### ++sum +

++sum

++ sum |=([b=@ c=@] (sit (add b c))) :: wrapping add @@ -1588,7 +1588,7 @@ Sum two numbers in this modular field. ~zod/try=> (~(sum fe 4) 10.000 100.000) 44.464 -### ++sit +

++sit

++ sit |=(b=@ (end a 1 b)) :: enforce modulo @@ -1635,7 +1635,7 @@ format. We use this for many of our examples. ~zod/try=> -<- ~2014.8.4..19.39.59..9288 -### ++year +

++year

++ year :: date to @d |= det=date @@ -1657,7 +1657,7 @@ its `@d`representation. ------------------------------------------------------------------------ -### ++yore +

++yore

++ yore :: @d to date |= now=@d @@ -1678,7 +1678,7 @@ Produces a `++date` from a `@d` ~zod/try=> (yore -<-) [[a=%.y y=2.014] m=8 t=[d=4 h=20 m=28 s=53 f=~[0x7b82]]] -### ++yell +

++yell

++ yell :: tarp from @d |= now=@d @@ -1712,7 +1712,7 @@ Produce a parsed daily time format from an atomic date. ------------------------------------------------------------------------ -### ++yule +

++yule

++ yule :: time atom |= rip=tarp @@ -1752,7 +1752,7 @@ Accept a [`++tarp`](), a parsed daily time, and produces a time atom, ------------------------------------------------------------------------ -### ++yall +

++yall

++ yall :: day # to day of year |= day=@ud @@ -1792,7 +1792,7 @@ day from a number of days from the beginning of time. ------------------------------------------------------------------------ -### ++yawn +

++yawn

++ yawn :: days since Jesus |= [yer=@ud mot=@ud day=@ud] @@ -1837,7 +1837,7 @@ tuple `[yer=@ud mot=@ud day=@ud]`. ------------------------------------------------------------------------ -### ++yelp +

++yelp

++ yelp :: leap year |= yer=@ud ^- ? @@ -1859,14 +1859,14 @@ loobean. ------------------------------------------------------------------------ -### ++yo +

++yo

++ yo :: time constants Useful constants for interacting with earth time. -### ++cet +

++cet

|% ++ cet 36.524 :: (add 24 (mul 100 365)) @@ -1883,7 +1883,7 @@ days from leap years in a century (24). ------------------------------------------------------------------------ -### ++day +

++day

++ day 86.400 :: (mul 24 hor) @@ -1896,7 +1896,7 @@ Number of seconds in a day. ------------------------------------------------------------------------ -### ++era +

++era

++ era 146.097 :: (add 1 (mul 4 cet)) @@ -1904,7 +1904,7 @@ XX Revisit ------------------------------------------------------------------------ -### ++hor +

++hor

++ hor 3.600 :: (mul 60 mit) @@ -1918,7 +1918,7 @@ seconds in a minute by the minutes in an hour. ------------------------------------------------------------------------ -### ++jes +

++jes

++ jes 106.751.991.084.417 :: (mul 730.692.561 era) @@ -1929,7 +1929,7 @@ XX Revisit ------------------------------------------------------------------------ -### ++mit +

++mit

++ mit 60 @@ -1940,7 +1940,7 @@ The number of seconds in a minute. ------------------------------------------------------------------------ -### ++moh +

++moh

++ moh `(list ,@ud)`[31 28 31 30 31 30 31 31 30 31 30 31 ~] @@ -1955,7 +1955,7 @@ month at the year at that index. ------------------------------------------------------------------------ -### ++moy +

++moy

++ moy `(list ,@ud)`[31 29 31 30 31 30 31 31 30 31 30 31 ~] @@ -1970,7 +1970,7 @@ month at the leap-year at that index. ------------------------------------------------------------------------ -### ++qad +

++qad

++ qad 126.144.001 :: (add 1 (mul 4 yer)) @@ -1982,7 +1982,7 @@ number of seconds in four years. ------------------------------------------------------------------------ -### ++yer +

++yer

++ yer 31.536.000 :: (mul 365 day) @@ -1997,7 +1997,7 @@ seconds in a day by 365. section 2cI, almost macros -------------------------- -### ++cury +

++cury

++ cury |* [a=_|=(^ _*) b=*] @@ -2018,7 +2018,7 @@ Curry a gate, binding the head of its sample ------------------------------------------------------------------------ -### ++curr +

++curr

++ curr |* [a=_|=(^ _*) c=*] @@ -2039,7 +2039,7 @@ Right curry a gate, binding the tail of its sample ------------------------------------------------------------------------ -### ++cork +

++cork

++ cork |*([a=_,* b=gate] (corl b a)) :: compose forward @@ -2059,7 +2059,7 @@ Build `f` such that `(f x) .= (b (a x))`. ------------------------------------------------------------------------ -### ++corl +

++corl

++ corl :: compose backwards |* [a=gate b=_,*] @@ -2079,7 +2079,7 @@ XX Revisit ------------------------------------------------------------------------ -### ++hard +

++hard

++ hard |* han=$+(* *) @@ -2103,7 +2103,7 @@ not. ------------------------------------------------------------------------ -### ++soft +

++soft

++ soft |* han=$+(* *) diff --git a/docs/pub/doc/hoon/library/2da.md b/docs/pub/doc/hoon/library/2da.md index e094f6344..811e1e0c7 100644 --- a/docs/pub/doc/hoon/library/2da.md +++ b/docs/pub/doc/hoon/library/2da.md @@ -1,7 +1,7 @@ section 2dA, sets ================= -### ++apt +

++apt

Set verification @@ -29,7 +29,7 @@ Produces a loobean indicating whether `a` is a set or not. ------------------------------------------------------------------------ -### ++in +

++in

Set operations @@ -44,7 +44,7 @@ Input arm. `a` is a [set]() -### +-all:in +

+-all:in

Logical AND @@ -73,7 +73,7 @@ producing a loobean. ------------------------------------------------------------------------ -### +-any:in +

+-any:in

Logical OR @@ -101,7 +101,7 @@ Computes the logical OR on every element of `a` slammed with `b`. ------------------------------------------------------------------------ -### +-del:in +

+-del:in

Remove noun @@ -140,7 +140,7 @@ Removes `b` from the set `a`. ------------------------------------------------------------------------ -### +-dig:in +

+-dig:in

Axis a in b @@ -175,7 +175,7 @@ Produce the axis of `b` within `a`. ------------------------------------------------------------------------ -### +-gas:in +

+-gas:in

Concatenate @@ -203,7 +203,7 @@ Insert the elements of a list `b` into a set `a`. ------------------------------------------------------------------------ -### +-has:in +

+-has:in

b in a? @@ -234,7 +234,7 @@ Checks if `b` is an element of `a`, producing a loobean. ------------------------------------------------------------------------ -### +-int:in +

+-int:in

Intersection @@ -272,7 +272,7 @@ Produces a set of the intersection between two sets of the same type, ------------------------------------------------------------------------ -### +-put:in +

+-put:in

Put b in a @@ -312,7 +312,7 @@ Add an element `b` to the set `a`. ------------------------------------------------------------------------ -### +-rep:in +

+-rep:in

Accumulate @@ -339,7 +339,7 @@ Accumulate the elements of `a` using a gate `c` and an accumulator `b`. ------------------------------------------------------------------------ -### +-tap:in +

+-tap:in

Set to list @@ -372,7 +372,7 @@ Flatten the set `a` into a list. ------------------------------------------------------------------------ -### +-uni:in +

+-uni:in

Union @@ -414,7 +414,7 @@ Produces a set of the union between two sets of the same type, `a` and ------------------------------------------------------------------------ -### +-wyt:in +

+-wyt:in

Set size diff --git a/docs/pub/doc/hoon/library/2db.md b/docs/pub/doc/hoon/library/2db.md index 189eb213f..bd8ecacd5 100644 --- a/docs/pub/doc/hoon/library/2db.md +++ b/docs/pub/doc/hoon/library/2db.md @@ -1,7 +1,7 @@ section 2dB, maps ================= -### ++ept +

++ept

Map invariant. @@ -29,7 +29,7 @@ Computes whether `a` is a [map](), producing a loobean. ------------------------------------------------------------------------ -### ++ja +

++ja

Jar engine @@ -46,7 +46,7 @@ A container arm for `++jar` operation arms. A `++jar` is a `++map` of ------------------------------------------------------------------------ -### +-get:ja +

+-get:ja

Grab value by key @@ -73,7 +73,7 @@ Produces a list retrieved from jar `a` using the key `b`. ------------------------------------------------------------------------ -### +-add:ja +

+-add:ja

Prepend to list @@ -106,7 +106,7 @@ Produces jar `a` with value `c` prepended to the list located at key ------------------------------------------------------------------------ -### ++ju +

++ju

Jug operations @@ -121,7 +121,7 @@ Container arm for jug operation arms. A `++jug` is a `++map` of ~zod/try=> ~(. ju (mo (limo a/(sa "ho") b/(sa "he") ~))) <2.dgz [nlr([p={%a %b} q={nlr(^$1{@tD $1}) nlr(^$3{@tD $3})}]) <414.fvk 101.jzo 1.ypj %164>]> -### +-del:ju +

+-del:ju

Remove @@ -152,7 +152,7 @@ removed. ------------------------------------------------------------------------ -### +-get:ju +

+-get:ju

Retrieve set @@ -178,7 +178,7 @@ Produces a set retrieved from jar `a` using key `b`. ------------------------------------------------------------------------ -### +-has:ju +

+-has:ju

Check contents @@ -213,7 +213,7 @@ with jar `a`. Produces a loobean. ------------------------------------------------------------------------ -### +-put:ju +

+-put:ju

Add key-set pair @@ -242,7 +242,7 @@ Produces jar `a` with `c` added to the set value located at key `b`. ------------------------------------------------------------------------ -### ++by +

++by

Map operations @@ -260,7 +260,7 @@ pairs. The contained arms inherit it's [sample]() [map](), `a`. ------------------------------------------------------------------------ -### +-all:by +

+-all:by

Logical AND @@ -290,7 +290,7 @@ Computes the logical AND on the results of slamming every element in map ------------------------------------------------------------------------ -### +-any:by +

+-any:by

Logical OR @@ -318,7 +318,7 @@ gate `b`. Produces a loobean. ------------------------------------------------------------------------ -### +-del:by +

+-del:by

Delete @@ -351,7 +351,7 @@ Produces map `a` with the element located at key `b` removed. ------------------------------------------------------------------------ -### +-dig:by +

+-dig:by

Axis of key @@ -377,7 +377,7 @@ Produce the axis of key `b` within map `a`. ------------------------------------------------------------------------ -### +-gas:by +

+-gas:by

Concatenate @@ -403,7 +403,7 @@ Insert a list of key-value pairs `b` into map `a`. ------------------------------------------------------------------------ -### +-get:by +

+-get:by

Grab unit value @@ -431,7 +431,7 @@ Produce the unit value of the value located at key `b` within map `a`. ------------------------------------------------------------------------ -### +-got:by +

+-got:by

Assert @@ -459,7 +459,7 @@ does not exist. ------------------------------------------------------------------------ -### +-has:by +

+-has:by

Key existence check @@ -483,7 +483,7 @@ loobean. ------------------------------------------------------------------------ -### +-int:by +

+-int:by

Intersection @@ -539,7 +539,7 @@ different values, the element from map `b` is used. ------------------------------------------------------------------------ -### +-mar:by +

+-mar:by

Assert and Add @@ -575,7 +575,7 @@ XX This arm is broken, asana task 15186618346453 ------------------------------------------------------------------------ -### +-put:by +

+-put:by

Add key-value pair @@ -621,7 +621,7 @@ Produces `a` with the addition of the key-value pair of `b` and `c`. ------------------------------------------------------------------------ -### +-rep:by +

+-rep:by

+- rep :: replace by product |* [b=* c=_,*] @@ -635,7 +635,7 @@ XX interface changing. ------------------------------------------------------------------------ -### +-rib:by +

+-rib:by

+- rib :: transform + product |* [b=* c=_,*] @@ -653,7 +653,7 @@ XX interface changing, possibly disappearing ------------------------------------------------------------------------ -### +-run:by +

+-run:by

Transform values @@ -678,7 +678,7 @@ Iterates over every value in set `a` using gate `b`. Produces a map. ------------------------------------------------------------------------ -### +-tap:by +

+-tap:by

Listify pairs @@ -707,7 +707,7 @@ Produces the list of all elements in map `a` that is prepended to list ------------------------------------------------------------------------ -### +-uni:by +

+-uni:by

Union @@ -758,7 +758,7 @@ shares a key with `a`, the tuple from `a` is preserved. ------------------------------------------------------------------------ -### +-urn:by +

+-urn:by

Turn (with key) @@ -787,7 +787,7 @@ produces a noun (the new value). ------------------------------------------------------------------------ -### +-wyt:by +

+-wyt:by

Depth diff --git a/docs/pub/doc/hoon/library/2dc.md b/docs/pub/doc/hoon/library/2dc.md index 78f3f64f8..653e159f6 100644 --- a/docs/pub/doc/hoon/library/2dc.md +++ b/docs/pub/doc/hoon/library/2dc.md @@ -1,7 +1,7 @@ section 2dC, queues =================== -### ++to +

++to

Queue engine @@ -13,7 +13,7 @@ Container arm for queue operation arms. The contained arms inherit its `a` is a queue, [++qeu](). -### +-bal:to +

+-bal:to

Balance @@ -42,7 +42,7 @@ Vertically rebalances queue `a`. ------------------------------------------------------------------------ -### +-dep:to +

+-dep:to

Maximum Depth @@ -72,7 +72,7 @@ Produces the maximum depth of leaves (r.a and l.a) in queue `a`. ------------------------------------------------------------------------ -### +-gas +

+-gas

Push list @@ -97,7 +97,7 @@ Push all elements of list `b` into the queue. ------------------------------------------------------------------------ -### +-get:to +

+-get:to

Pop @@ -126,7 +126,7 @@ Produces the head and tail queue of `a`. ------------------------------------------------------------------------ -### +-nap:to +

+-nap:to

Remove last in @@ -154,7 +154,7 @@ Removes the head of queue `a`, producing the resulting queue. ------------------------------------------------------------------------ -### +-put:to +

+-put:to

Insert @@ -179,7 +179,7 @@ resulting queue. ------------------------------------------------------------------------ -### +-tap:to +

+-tap:to

Queue to list @@ -203,7 +203,7 @@ Produces queue `a` as a list from front to back. ------------------------------------------------------------------------ -### +-top:to +

+-top:to

+- top :: produces head |- ^- (unit ,_?>(?=(^ a) n.a)) diff --git a/docs/pub/doc/hoon/library/2dd.md b/docs/pub/doc/hoon/library/2dd.md index e60f84c2c..0b49e99ec 100644 --- a/docs/pub/doc/hoon/library/2dd.md +++ b/docs/pub/doc/hoon/library/2dd.md @@ -1,7 +1,7 @@ section 2dD, casual containers ============================== -### ++mo +

++mo

Map from list @@ -23,7 +23,7 @@ Produces a map of key-value pairs from the left-right cell pairs of list ------------------------------------------------------------------------ -### ++sa +

++sa

Set from list @@ -45,7 +45,7 @@ Produces a set of the elements in list `a`. ------------------------------------------------------------------------ -### ++qu +

++qu

Queue from list diff --git a/docs/pub/doc/hoon/library/2ea.md b/docs/pub/doc/hoon/library/2ea.md index 31fd555df..31f5641e6 100644 --- a/docs/pub/doc/hoon/library/2ea.md +++ b/docs/pub/doc/hoon/library/2ea.md @@ -1,7 +1,7 @@ section 2eA, packing ==================== -### ++cue +

++cue

Unpack atom to noun @@ -41,7 +41,7 @@ Produces a noun unpacked from atom `a`. The inverse of jam. ------------------------------------------------------------------------ -### ++jam +

++jam

++ jam :: pack ~/ %jam @@ -83,7 +83,7 @@ Produces an atom unpacked from noun `a`. The inverse of cue. ------------------------------------------------------------------------ -### ++mat +

++mat

Length-encode @@ -123,7 +123,7 @@ is the length of `q` in bits. ------------------------------------------------------------------------ -### ++rub +

++rub

Length-decode diff --git a/docs/pub/doc/hoon/library/2eb.md b/docs/pub/doc/hoon/library/2eb.md index 67609aa37..333700928 100644 --- a/docs/pub/doc/hoon/library/2eb.md +++ b/docs/pub/doc/hoon/library/2eb.md @@ -1,7 +1,7 @@ section 2eB, parsing (tracing) ============================== -### ++last +

++last

Farther trace @@ -30,7 +30,7 @@ Compares two line-column pairs, `zyc` and `naz`, and produces whichever ------------------------------------------------------------------------ -### ++lust +

++lust

Detect newline diff --git a/docs/pub/doc/hoon/library/2ec.md b/docs/pub/doc/hoon/library/2ec.md index dff72c554..4f86769bd 100644 --- a/docs/pub/doc/hoon/library/2ec.md +++ b/docs/pub/doc/hoon/library/2ec.md @@ -30,7 +30,7 @@ produces a constant `cus`, if `sef` is successful. ------------------------------------------------------------------------ -### ++cook +

++cook

Apply gate @@ -63,7 +63,7 @@ rule `sef` and slams it through `poq`. ------------------------------------------------------------------------ -### ++easy +

++easy

Always parse @@ -88,7 +88,7 @@ without consuming any text. ------------------------------------------------------------------------ -### ++fail +

++fail

Never parse @@ -106,7 +106,7 @@ result (`q=~`). ------------------------------------------------------------------------ -### ++full +

++full

Parse to end @@ -131,7 +131,7 @@ when a `tub` success consumes the remainder of the [tape](). ------------------------------------------------------------------------ -### ++funk +

++funk

Add to tape @@ -154,7 +154,7 @@ Parser modifier: prepend text to tape before applying parser. ------------------------------------------------------------------------ -### ++here +

++here

Place-based apply @@ -186,7 +186,7 @@ Parser modifier. Similar to [`++cook`](), produces a parser that takes a ------------------------------------------------------------------------ -### ++inde +

++inde

Indentation block @@ -231,7 +231,7 @@ the leading whitespace. ------------------------------------------------------------------------ -### ++jest +

++jest

Match a cord @@ -266,7 +266,7 @@ Match and consume a cord. ------------------------------------------------------------------------ -### ++just +

++just

Match a char @@ -300,7 +300,7 @@ Match and consume a single character. ------------------------------------------------------------------------ -### ++knee +

++knee

Recursive parsers @@ -341,7 +341,7 @@ compiled. ------------------------------------------------------------------------ -### ++mask +

++mask

Match char @@ -374,7 +374,7 @@ characters. ------------------------------------------------------------------------ -### ++next +

++next

Consume char @@ -398,7 +398,7 @@ Consume any character, producing it as a result. ------------------------------------------------------------------------ -### ++sear +

++sear

Conditional `++cook` @@ -426,7 +426,7 @@ a unit; if that unit is empty, fail. ------------------------------------------------------------------------ -### ++shim +

++shim

Char in range @@ -456,7 +456,7 @@ Match characters within a range. ------------------------------------------------------------------------ -### ++stag +

++stag

Add label @@ -486,7 +486,7 @@ Add a label to an edge parsed by a rule. ------------------------------------------------------------------------ -### ++stet +

++stet

Add faces @@ -523,7 +523,7 @@ Add `[p q]` faces to range-parser pairs in a list. ------------------------------------------------------------------------ -### ++stew +

++stew

Switch by first @@ -578,7 +578,7 @@ associated with a range the tape's first character falls in. ------------------------------------------------------------------------ -### ++stir +

++stir

Parse repeatedly @@ -612,7 +612,7 @@ binary gate. ------------------------------------------------------------------------ -### ++stun +

++stun

Parse several times diff --git a/docs/pub/doc/hoon/library/2ed.md b/docs/pub/doc/hoon/library/2ed.md index c31280f24..63671e04e 100644 --- a/docs/pub/doc/hoon/library/2ed.md +++ b/docs/pub/doc/hoon/library/2ed.md @@ -1,7 +1,7 @@ section 2eD =========== -### ++bend +

++bend

Conditional composer @@ -50,7 +50,7 @@ group of rules to a specified output. ------------------------------------------------------------------------ -### ++comp +

++comp

Arbitrary compose @@ -87,7 +87,7 @@ produces a cell of two nouns. ------------------------------------------------------------------------ -### ++glue +

++glue

Skip delimiter @@ -120,7 +120,7 @@ result. ------------------------------------------------------------------------ -### ++less +

++less

Parse unless @@ -150,7 +150,7 @@ connect `vex` with the following rule. ------------------------------------------------------------------------ -### ++pfix +

++pfix

Discard first rule @@ -171,7 +171,7 @@ ignoring the result of the first and producing the result of the second. ------------------------------------------------------------------------ -### ++plug +

++plug

Parse to tuple @@ -204,7 +204,7 @@ more detailed explanation. ------------------------------------------------------------------------ -### ++pose +

++pose

Parse options @@ -235,7 +235,7 @@ following rule `sab`. See also: the monad applicator [;\~]() ------------------------------------------------------------------------ -### ++simu +

++simu

First and second @@ -266,7 +266,7 @@ connect `vex` with the following rule. ------------------------------------------------------------------------ -### ++sfix +

++sfix

Discard second rule diff --git a/docs/pub/doc/hoon/library/2ee.md b/docs/pub/doc/hoon/library/2ee.md index 9ad969783..b98d3c2fc 100644 --- a/docs/pub/doc/hoon/library/2ee.md +++ b/docs/pub/doc/hoon/library/2ee.md @@ -1,7 +1,7 @@ section 2eE, parsing (composers) ================================ -### ++bass +

++bass

++ bass |* [wuc=@ tyd=_rule] @@ -30,7 +30,7 @@ as atom of a base. ------------------------------------------------------------------------ -### ++boss +

++boss

++ boss |* [wuc=@ tyd=_rule] @@ -59,7 +59,7 @@ as atom of a base. ------------------------------------------------------------------------ -### ++ifix +

++ifix

++ ifix |* [fel=[p=_rule q=_rule] hof=_rule] @@ -80,7 +80,7 @@ discarded. ------------------------------------------------------------------------ -### ++more +

++more

++ more |* [bus=_rule fel=_rule] @@ -102,7 +102,7 @@ Parser modifier: using a delimiter rule, parse a list of matches. ------------------------------------------------------------------------ -### ++most +

++most

++ most |* [bus=_rule fel=_rule] @@ -126,7 +126,7 @@ match. ------------------------------------------------------------------------ -### ++plus +

++plus

++ plus |*(fel=_rule ;~(plug fel (star fel))) @@ -145,7 +145,7 @@ Parser modifier: parse list of at least one match ------------------------------------------------------------------------ -### ++slug +

++slug

++ slug |* raq=_|*([a=* b=*] [a b]) @@ -167,7 +167,7 @@ matches. ------------------------------------------------------------------------ -### ++star +

++star

++ star :: 0 or more times |* fel=_rule diff --git a/docs/pub/doc/hoon/library/2ef.md b/docs/pub/doc/hoon/library/2ef.md index f0f1bef94..f8d57579b 100644 --- a/docs/pub/doc/hoon/library/2ef.md +++ b/docs/pub/doc/hoon/library/2ef.md @@ -1,7 +1,7 @@ section 2eF, parsing (ascii) ============================ -### ++ace +

++ace

Parse space @@ -20,7 +20,7 @@ Parses ASCII character 32, space. ------------------------------------------------------------------------ -### ++bar +

++bar

Parse vertical bar @@ -39,7 +39,7 @@ Parses ASCII character 124, the vertical bar. ------------------------------------------------------------------------ -### ++bas +

++bas

Parse backslash @@ -61,7 +61,7 @@ of `bas` with [`++just`]() is to escape the escape character, `\`. ------------------------------------------------------------------------ -### ++buc +

++buc

Parse dollar sign @@ -80,7 +80,7 @@ Parses ASCII character 36, the dollar sign. ------------------------------------------------------------------------ -### ++cab +

++cab

Parse underscore @@ -99,7 +99,7 @@ Parses ASCII character 95, the underscore. ------------------------------------------------------------------------ -### ++cen +

++cen

Parses percent sign @@ -118,7 +118,7 @@ Parses ASCII character 37, the percent sign. ------------------------------------------------------------------------ -### ++col +

++col

Parse colon @@ -137,7 +137,7 @@ Parses ASCII character 58, the colon ------------------------------------------------------------------------ -### ++com +

++com

Parse comma @@ -156,7 +156,7 @@ Parses ASCII character 44, the comma. ------------------------------------------------------------------------ -### ++doq +

++doq

Parse double quote @@ -179,7 +179,7 @@ Parses ASCII character 34, the double quote. ------------------------------------------------------------------------ -### ++dot +

++dot

Parse period @@ -198,7 +198,7 @@ Parses ASCII character 46, the period. ------------------------------------------------------------------------ -### ++fas +

++fas

Parse forward slash @@ -217,7 +217,7 @@ Parses ASCII character 47, the forward slash. ------------------------------------------------------------------------ -### ++gal +

++gal

Parse less-than sign @@ -238,7 +238,7 @@ Parses ASCII character 60, the less-than sign. ------------------------------------------------------------------------ -### ++gar +

++gar

Parse greater-than sign @@ -257,7 +257,7 @@ Parses ASCII character 62, the greater-than sign. ------------------------------------------------------------------------ -### ++hax +

++hax

Parse number sign @@ -276,7 +276,7 @@ Parses ASCII character 35, the number sign. ------------------------------------------------------------------------ -### ++kel +

++kel

Parse left curley bracket @@ -297,7 +297,7 @@ interpolation. To parse either of them, they must be escaped. ------------------------------------------------------------------------ -### ++ker +

++ker

Parse right curley bracket @@ -318,7 +318,7 @@ interpolation. To parse either of them, they must be escaped. ------------------------------------------------------------------------ -### ++ket +

++ket

Parse caret @@ -337,7 +337,7 @@ Parses ASCII character 94, the caret. ------------------------------------------------------------------------ -### ++lus +

++lus

Parse plus sign @@ -356,7 +356,7 @@ Parses ASCII character 43, the plus sign. ------------------------------------------------------------------------ -### ++hep +

++hep

Parse hyphen @@ -375,7 +375,7 @@ Parses ASCII character 45, the hyphen. ------------------------------------------------------------------------ -### ++pel +

++pel

Parse left parenthesis @@ -394,7 +394,7 @@ Parses ASCII character 40, the left parenthesis. ------------------------------------------------------------------------ -### ++pam +

++pam

Parse ampersand @@ -413,7 +413,7 @@ Parses ASCII character 38, the ampersand. ------------------------------------------------------------------------ -### ++per +

++per

Parse right parenthesis @@ -432,7 +432,7 @@ Parses ASCII character 41, the right parenthesis. ------------------------------------------------------------------------ -### ++pat +

++pat

Parse "at" sign @@ -451,7 +451,7 @@ Parses ASCII character 64, the "at" sign. ------------------------------------------------------------------------ -### ++sel +

++sel

Parse left square bracket @@ -472,7 +472,7 @@ Parses ASCII character 91, the left square bracket. ------------------------------------------------------------------------ -### ++sem +

++sem

Parse semicolon @@ -480,7 +480,7 @@ Parse semicolon Parses ASCII character 59, the semicolon. -### Examples +

Examples

~zod/try=> (scan ";" sem) ~~~3b. @@ -493,7 +493,7 @@ Parses ASCII character 59, the semicolon. ------------------------------------------------------------------------ -### ++ser +

++ser

Parse right square bracket @@ -512,7 +512,7 @@ Parses ASCII character 93, the right square bracket. ------------------------------------------------------------------------ -### ++sig +

++sig

Parse tilde @@ -531,7 +531,7 @@ Parses ASCII character 126, the tilde. ------------------------------------------------------------------------ -### ++soq +

++soq

Parse single quote @@ -551,7 +551,7 @@ Parses ASCII character 39, soq. Note the extra '' is to escape the first ------------------------------------------------------------------------ -### ++tar +

++tar

Parse asterisk @@ -570,7 +570,7 @@ Parses ASCII character 42, the asterisk. ------------------------------------------------------------------------ -### ++tec +

++tec

Parse backtick @@ -590,7 +590,7 @@ accent". ------------------------------------------------------------------------ -### ++tis +

++tis

Parse equals sign @@ -609,7 +609,7 @@ Parses ASCII character 61, the equals sign. ------------------------------------------------------------------------ -### ++wut +

++wut

Parses question mark @@ -628,7 +628,7 @@ Parses ASCII character 63, wut. ------------------------------------------------------------------------ -### ++zap +

++zap

Exclamation point diff --git a/docs/pub/doc/hoon/library/2eg.md b/docs/pub/doc/hoon/library/2eg.md index 73289c668..b889896c4 100644 --- a/docs/pub/doc/hoon/library/2eg.md +++ b/docs/pub/doc/hoon/library/2eg.md @@ -1,7 +1,7 @@ section 2eG, parsing (whitespace) ================================= -### ++dog +

++dog

`.` optional gap @@ -17,7 +17,7 @@ Dot followed by an optional gap, used in numbers. ------------------------------------------------------------------------ -### ++doh +

++doh

`@p` separator @@ -37,7 +37,7 @@ Phonetic base phrase separator ------------------------------------------------------------------------ -### ++dun +

++dun

`--` to `~` @@ -52,7 +52,7 @@ Parse phep, `--`, to null, `~`. ------------------------------------------------------------------------ -### ++duz +

++duz

`==` to `~` @@ -67,7 +67,7 @@ Parse stet, `==`, to null `~`. ------------------------------------------------------------------------ -### ++gah +

++gah

Newline or ' ' @@ -96,7 +96,7 @@ Whitespace component, either newline or space. ------------------------------------------------------------------------ -### ++gap +

++gap

Plural whitespace @@ -106,7 +106,7 @@ Separates tall runes ------------------------------------------------------------------------ -### ++gaq +

++gaq

End of line @@ -120,7 +120,7 @@ Two spaces, a newline, or comment. ------------------------------------------------------------------------ -### ++gaw +

++gaw

Classic whitespace @@ -130,7 +130,7 @@ Terran whitespace ------------------------------------------------------------------------ -### ++gay +

++gay

Optional gap. @@ -140,7 +140,7 @@ Optional gap. ------------------------------------------------------------------------ -### ++vul +

++vul

++ vul %- cold :- ~ :: comments ;~ plug col col diff --git a/docs/pub/doc/hoon/library/2eh.md b/docs/pub/doc/hoon/library/2eh.md index 3fff19596..6c5fbdae2 100644 --- a/docs/pub/doc/hoon/library/2eh.md +++ b/docs/pub/doc/hoon/library/2eh.md @@ -1,7 +1,7 @@ section 2eH, parsing (idioms) ============================= -### ++alf +

++alf

Alphabetic characters @@ -18,7 +18,7 @@ Parse alphabetic characters, both upper and lowercase. ------------------------------------------------------------------------ -### ++aln +

++aln

Alphanumeric characters @@ -35,7 +35,7 @@ Parse alphanumeric characters - both alphabetic characters and numbers. ------------------------------------------------------------------------ -### ++alp +

++alp

Alphanumeric and `-` @@ -52,7 +52,7 @@ Parse alphanumeric strings and hep, "-". ------------------------------------------------------------------------ -### ++bet +

++bet

Axis syntax `-`, `+` @@ -67,7 +67,7 @@ Parse the hep and lus axis syntax. ------------------------------------------------------------------------ -### ++bin +

++bin

Binary to atom @@ -87,7 +87,7 @@ representation. ------------------------------------------------------------------------ -### ++but +

++but

Binary digit @@ -108,7 +108,7 @@ Parse a single binary digit. ------------------------------------------------------------------------ -### ++cit +

++cit

Octal digit @@ -129,7 +129,7 @@ Parse a single octal digit. ------------------------------------------------------------------------ -### ++dem +

++dem

Decimal to atom @@ -148,7 +148,7 @@ Parse a decimal number to an atom. ------------------------------------------------------------------------ -### ++dit +

++dit

Decimal digit @@ -165,7 +165,7 @@ Parse a single decimal digit. ------------------------------------------------------------------------ -### ++gul +

++gul

Axis syntax `<` or `>` @@ -180,7 +180,7 @@ Parse the axis gal and gar axis syntax. ------------------------------------------------------------------------ -### ++gon +

++gon

Long numbers @@ -196,7 +196,7 @@ break characters bas and fas. ------------------------------------------------------------------------ -### ++hex +

++hex

Hex to atom @@ -221,7 +221,7 @@ Parse any hexadecimal number to an atom. ------------------------------------------------------------------------ -### ++hig +

++hig

Uppercase @@ -240,7 +240,7 @@ Parse a single uppercase letter. ------------------------------------------------------------------------ -### ++hit +

++hit

Hex digits @@ -263,7 +263,7 @@ Parse a single hexadecimal digit. ------------------------------------------------------------------------ -### ++low +

++low

Lowercase @@ -282,7 +282,7 @@ Parse a single lowercase letter. ------------------------------------------------------------------------ -### ++mes +

++mes

Hexbyte @@ -301,7 +301,7 @@ Parse a hexbyte. ------------------------------------------------------------------------ -### ++nix +

++nix

Letters, `-`, and `_` @@ -316,7 +316,7 @@ Letters, `-`, and `_` ------------------------------------------------------------------------ -### ++nud +

++nud

Numeric @@ -335,7 +335,7 @@ Parse a numeric character - A number. ------------------------------------------------------------------------ -### ++prn +

++prn

Printable character @@ -353,7 +353,7 @@ Parse any printable character ------------------------------------------------------------------------ -### ++qat +

++qat

Chars in blockcord @@ -376,7 +376,7 @@ Parse character in cord block. ------------------------------------------------------------------------ -### ++qit +

++qit

Chars in cord @@ -406,7 +406,7 @@ Parse an individual character to its cord atom representation. ------------------------------------------------------------------------ -### ++qut +

++qut

Cord @@ -439,7 +439,7 @@ triple-soq cord which must be in an indented block. ------------------------------------------------------------------------ -### ++soqs +

++soqs

Delimiting `'''` @@ -455,7 +455,7 @@ Triple single quote ------------------------------------------------------------------------ -### ++sym +

++sym

Term @@ -476,7 +476,7 @@ A term: a letter(lowercase), followed by letters, numbers, or `-`. ------------------------------------------------------------------------ -### ++ven +

++ven

`+>-` axis syntax @@ -506,7 +506,7 @@ Axis syntax parser ------------------------------------------------------------------------ -### ++vit +

++vit

Base64 digit diff --git a/docs/pub/doc/hoon/library/2ei.md b/docs/pub/doc/hoon/library/2ei.md index c5c304c5b..acb609c8f 100644 --- a/docs/pub/doc/hoon/library/2ei.md +++ b/docs/pub/doc/hoon/library/2ei.md @@ -1,7 +1,7 @@ section 2eI, parsing (external) =============================== -### ++rash +

++rash

Parse or crash @@ -29,7 +29,7 @@ parsed. ------------------------------------------------------------------------ -### ++rush +

++rush

Parse or null @@ -55,7 +55,7 @@ entirely parsed. ------------------------------------------------------------------------ -### ++rust +

++rust

Parse tape or null @@ -79,7 +79,7 @@ entirely parsed. ------------------------------------------------------------------------ -### ++scan +

++scan

Parse tape or crash diff --git a/docs/pub/doc/hoon/library/2ej.md b/docs/pub/doc/hoon/library/2ej.md index a445efefc..3a0d29763 100644 --- a/docs/pub/doc/hoon/library/2ej.md +++ b/docs/pub/doc/hoon/library/2ej.md @@ -1,7 +1,7 @@ section 2eJ, formatting (basic text) ==================================== -### ++cass +

++cass

To lowercase @@ -26,7 +26,7 @@ Produce the case insensitive (all lowercase) cord of a tape. ------------------------------------------------------------------------ -### ++cuss +

++cuss

To uppercase @@ -53,7 +53,7 @@ letters, as a cord. ------------------------------------------------------------------------ -### ++crip +

++crip

Tape to cord @@ -72,7 +72,7 @@ Produce cord from a tape. ------------------------------------------------------------------------ -### ++mesc +

++mesc

Escape special chars @@ -101,7 +101,7 @@ Escape special characters, used in [`++show`]() ------------------------------------------------------------------------ -### ++runt +

++runt

Prepend `n` times @@ -126,7 +126,7 @@ Add `a` repetitions of character `b` to the head of `c` ------------------------------------------------------------------------ -### ++sand +

++sand

Soft-cast by odor @@ -149,7 +149,7 @@ Soft-cast validity by odor. ------------------------------------------------------------------------ -### ++sane +

++sane

Check odor validity @@ -204,7 +204,7 @@ Check validity by odor. Produces a gate. ------------------------------------------------------------------------ -### ++trim +

++trim

Tape split @@ -232,7 +232,7 @@ Split first `a` characters off tape. ------------------------------------------------------------------------ -### ++trip +

++trip

Cord to tape @@ -257,7 +257,7 @@ Produce tape from cord. ------------------------------------------------------------------------ -### ++teff +

++teff

UTF8 Length @@ -281,7 +281,7 @@ Number of utf8 bytes. ------------------------------------------------------------------------ -### ++turf +

++turf

UTF8 to UTF32 cord @@ -322,7 +322,7 @@ Convert utf8 ([cord]()) to utf32 codepoints. ------------------------------------------------------------------------ -### ++tuba +

++tuba

UTF8 to UTF32 tape @@ -343,7 +343,7 @@ Convert tape to list of codepoints. ------------------------------------------------------------------------ -### ++tufa +

++tufa

UTF32 to UTF8 tape @@ -365,7 +365,7 @@ Wrap list of utf32 codepoints to utf8 [tape](). ------------------------------------------------------------------------ -### ++tuft +

++tuft

UTF32 to UTF8 text @@ -411,7 +411,7 @@ Convert utf32 glyph to ------------------------------------------------------------------------ -### ++wack +

++wack

Coin format encode @@ -443,7 +443,7 @@ Escape span `~` as `~~` and `_` as `~-`. Used for printing. ------------------------------------------------------------------------ -### ++wick +

++wick

Coin format decode @@ -472,7 +472,7 @@ Unescape span `~~` as `~` and `~-` as `_`. ------------------------------------------------------------------------ -### ++woad +

++woad

Unescape cord @@ -519,7 +519,7 @@ Unescape cord codepoints. ------------------------------------------------------------------------ -### ++wood +

++wood

Escape cord diff --git a/docs/pub/doc/hoon/library/2ek.md b/docs/pub/doc/hoon/library/2ek.md index a0d4372f7..231dbf1a2 100644 --- a/docs/pub/doc/hoon/library/2ek.md +++ b/docs/pub/doc/hoon/library/2ek.md @@ -1,7 +1,7 @@ section 2eK, formatting (layout) ================================ -### ++re +

++re

Pretty-printing engine @@ -15,7 +15,7 @@ Pretty-printing engine. /~zod/try=> ~(. re leaf/"ham") <2.ghl [[%leaf ""] <414.gly 100.xkc 1.ypj %164>]> -### ++ram +

++ram

Flatten to tape @@ -42,7 +42,7 @@ Flatten tank out into a tape. /~zod/try=> ~(ram re rose/["." "(" ")"]^~[leaf/"bar" leaf/"baz" leaf/"bam"]) "(bar.baz.bam)" -### ++win +

++win

Render at indent @@ -99,13 +99,13 @@ Render at indent level `tab` and width `edg`. /~zod/try=> (~(win re rose/["--" "[" "]"]^~[leaf/"1423" leaf/"2316"]) 0 10) <<"[ 1423" " 2316" "]">> -### ++din +

++din

++ din (mod (add 2 tab) (mul 2 (div edg 3))) XX document -### ++fit +

++fit

Fit on one line test @@ -113,7 +113,7 @@ Fit on one line test Determine whether `tac` fits on one line. Internal to `++win` -### ++rig +

++rig

Wrap in `\/` @@ -139,7 +139,7 @@ Wrap in `\/` Wrap tape in `\/` if it doesn't fit at current indentation. Internal to `++win` -### ++wig +

++wig

`++win` render tape diff --git a/docs/pub/doc/hoon/library/2el.md b/docs/pub/doc/hoon/library/2el.md index 243889127..0e27e2954 100644 --- a/docs/pub/doc/hoon/library/2el.md +++ b/docs/pub/doc/hoon/library/2el.md @@ -1,7 +1,7 @@ section 2eL, formatting (path) ============================== -### ++ab +

++ab

Primitive parser engine @@ -15,7 +15,7 @@ A core containing numeric parser primitives. ------------------------------------------------------------------------ -### ++bix +

++bix

Parse hex pair @@ -32,7 +32,7 @@ Parsing rule. Parses a pair of base-16 digits. Used in escapes. ------------------------------------------------------------------------ -### ++hif +

++hif

Parse phonetic pair @@ -48,7 +48,7 @@ encoded phonetically. ------------------------------------------------------------------------ -### ++huf +

++huf

Parse two phonetic pairs @@ -68,7 +68,7 @@ of two two-byte pairs that are encoded (and scrambled) phonetically. ------------------------------------------------------------------------ -### ++hyf +

++hyf

Parse 8 phonetic bytes @@ -84,7 +84,7 @@ phonetic bytes. ------------------------------------------------------------------------ -### ++pev +

++pev

Parse \<= 5 base-32 @@ -104,7 +104,7 @@ Parsing rule. Parses up to five base-32 digits without a leading zero. ------------------------------------------------------------------------ -### ++pew +

++pew

Parse \<= 5 base-64 @@ -127,7 +127,7 @@ Parsing rule. Parses up to five base-64 digits without a leading zero. ------------------------------------------------------------------------ -### ++piv +

++piv

Parse 5 base-32 @@ -143,7 +143,7 @@ Parsing rule. Parses exactly five base-32 digits. ------------------------------------------------------------------------ -### ++piw +

++piw

Parse 5 base-64 @@ -159,7 +159,7 @@ Parsing rule. Parses exactly five base-64 digits. ------------------------------------------------------------------------ -### ++qeb +

++qeb

Parse \<= 4 binary @@ -183,7 +183,7 @@ a leading zero. ------------------------------------------------------------------------ -### ++qex +

++qex

Parse \<= 4 hex @@ -205,7 +205,7 @@ without a leading zero. ------------------------------------------------------------------------ -### ++qib +

++qib

Parse 4 binary @@ -223,7 +223,7 @@ Parsing rule. Parses exactly four binary digits. ------------------------------------------------------------------------ -### ++qix +

++qix

Parse 4 hex @@ -241,7 +241,7 @@ Parsing rule. Parses exactly four hexadecimal digits. ------------------------------------------------------------------------ -### ++seb +

++seb

Parse 1 @@ -260,7 +260,7 @@ Parsing rule. Parses the number 1. ------------------------------------------------------------------------ -### ++sed +

++sed

Parse decimal @@ -276,7 +276,7 @@ Parsing rule. Parses a nonzero decimal digit. ------------------------------------------------------------------------ -### ++sev +

++sev

Parse base-32 @@ -292,7 +292,7 @@ Parsing rule. Parses a nonzero base-32 digit ------------------------------------------------------------------------ -### ++sew +

++sew

Parse base-64 @@ -308,7 +308,7 @@ Parsing rule. Parses a nonzero base-64 digit ------------------------------------------------------------------------ -### ++sex +

++sex

Parse hex @@ -324,7 +324,7 @@ Parsing rule. Parses a nonzero hexadecimal digit. ------------------------------------------------------------------------ -### ++sib +

++sib

Parse binary @@ -339,7 +339,7 @@ Parsing rule. Parses a binary digit. ------------------------------------------------------------------------ -### ++sid +

++sid

Parse decimal @@ -352,7 +352,7 @@ Parsing rule. Parses a decimal digit. ------------------------------------------------------------------------ -### ++siv +

++siv

Parse base-32 @@ -365,7 +365,7 @@ Parsing rule. Parses a base-32 digit. ------------------------------------------------------------------------ -### ++siw +

++siw

Parse base-64 @@ -378,7 +378,7 @@ Parsing rule. Parses a base-64 digit. ------------------------------------------------------------------------ -### ++six +

++six

Parse hex @@ -391,7 +391,7 @@ Parsing rule. Parses a hexadecimal digit. ------------------------------------------------------------------------ -### ++sov +

++sov

Parse base-32 @@ -404,7 +404,7 @@ Parsing rule. Parses a base-32 letter. ------------------------------------------------------------------------ -### ++sow +

++sow

Parse base-64 @@ -422,7 +422,7 @@ Parsing rule. Parses a base-64 letter/symbol. ------------------------------------------------------------------------ -### ++sox +

++sox

Parse hex letter @@ -435,7 +435,7 @@ Parsing rule. Parses a hexadecimal letter. ------------------------------------------------------------------------ -### ++ted +

++ted

Parse \<= 3 decimal @@ -456,7 +456,7 @@ leading zero. ------------------------------------------------------------------------ -### ++tip +

++tip

Leading phonetic byte @@ -472,7 +472,7 @@ syllable. ------------------------------------------------------------------------ -### ++tiq +

++tiq

Trailing phonetic syllable @@ -488,7 +488,7 @@ syllable. ------------------------------------------------------------------------ -### ++tid +

++tid

Parse 3 decimal digits @@ -504,7 +504,7 @@ Parsing rule. Parses exactly three decimal digits. ------------------------------------------------------------------------ -### ++til +

++til

Parse 3 lowercase @@ -522,7 +522,7 @@ Parsing rule. Parses exactly three lowercase letters. ------------------------------------------------------------------------ -### ++urs +

++urs

Parse span characters @@ -539,7 +539,7 @@ Parsing rule. Parses characters from an atom of the span odor [`@ta`](). ------------------------------------------------------------------------ -### ++urt +

++urt

Parse non-`_` span @@ -555,7 +555,7 @@ for cab, `_`. ------------------------------------------------------------------------ -### ++voy +

++voy

Parse bas, soq, or bix @@ -571,7 +571,7 @@ byte. ------------------------------------------------------------------------ -### ++ag +

++ag

Top-level atom parser engine @@ -585,7 +585,7 @@ A core containing top-level atom parsers. ------------------------------------------------------------------------ -### ++ape +

++ape

Parse 0 or rule @@ -600,7 +600,7 @@ Parser modifier. Parses 0 or the sample rule `fel`. ------------------------------------------------------------------------ -### ++bay +

++bay

Parses binary number @@ -613,7 +613,7 @@ Parsing rule. Parses a binary number without a leading zero. ------------------------------------------------------------------------ -### ++bip +

++bip

Parse IPv6 @@ -629,7 +629,7 @@ Parsing rule. Parses a [`@is`](), an IPv6 address. ------------------------------------------------------------------------ -### ++dem +

++dem

Parse decimal with dots @@ -644,7 +644,7 @@ Parsing rule. Parses a decimal number that includes dot separators. ------------------------------------------------------------------------ -### ++dim +

++dim

Parse decimal number @@ -660,7 +660,7 @@ Parsing rule. Parses a decimal number without a leading zero. ------------------------------------------------------------------------ -### ++dum +

++dum

Parse decimal with leading `0` @@ -677,7 +677,7 @@ Parsing rule. Parses a decmial number with leading zeroes. ------------------------------------------------------------------------ -### ++fed +

++fed

Parse phonetic base @@ -707,7 +707,7 @@ Parsing rule. Parses an atom of odor [`@p`](), the phonetic base. ------------------------------------------------------------------------ -### ++hex +

++hex

Parse hex @@ -726,7 +726,7 @@ Parsing rule. Parses a hexadecimal number ------------------------------------------------------------------------ -### ++lip +

++lip

Parse IPv4 address @@ -744,7 +744,7 @@ Parsing rule. Parses an IPv4 address. ------------------------------------------------------------------------ -### ++viz +

++viz

Parse Base-32 with dots @@ -757,7 +757,7 @@ Parsing rule. Parses a Base-32 number with dot separators. ------------------------------------------------------------------------ -### ++vum +

++vum

Parse base-32 string @@ -770,7 +770,7 @@ Parsing rule. Parses a raw base-32 string. ------------------------------------------------------------------------ -### ++wiz +

++wiz

Parse base-64 @@ -785,7 +785,7 @@ Parsing rule. Parses a base-64 number. ------------------------------------------------------------------------ -### ++co +

++co

Literal rendering engine @@ -809,7 +809,7 @@ A [door]() that contains arms that operate on the sample coin `lot`. ------------------------------------------------------------------------ -### ++rear +

++rear

Prepend & render as tape @@ -826,7 +826,7 @@ Renders a coin `lot` as a [tape]() prepended to the sample tape `rom`. ------------------------------------------------------------------------ -### ++rent +

++rent

Render as span @@ -843,7 +843,7 @@ Renders a coin `lot` as a span. ------------------------------------------------------------------------ -### ++rend +

++rend

Render as tape @@ -1073,7 +1073,7 @@ Renders a coin `lot` as a tape. ------------------------------------------------------------------------ -### ++ne +

++ne

Digit rendering engine @@ -1090,7 +1090,7 @@ A [door]() containing arms that render digits at bases 10, 16, 32, and ------------------------------------------------------------------------ -### ++d +

++d

Render decimal @@ -1105,7 +1105,7 @@ Renders a decimal digit as an atom of an ACII byte value. ------------------------------------------------------------------------ -### ++x +

++x

Render hex @@ -1122,7 +1122,7 @@ Renders a hexadecimal digit as an atom of an ASCII byte value. ------------------------------------------------------------------------ -### ++v +

++v

Render base-32 @@ -1139,7 +1139,7 @@ Renders a base-32 digit as an atom of an ASCII byte value. ------------------------------------------------------------------------ -### ++w +

++w

Render base-64 @@ -1168,7 +1168,7 @@ Renders a base-64 digit as an atom of an ASCII byte value. ------------------------------------------------------------------------ -### ++mu +

++mu

Core used to scramble 16-bit atoms @@ -1188,7 +1188,7 @@ relationship between a destroyer and its cruiser. ------------------------------------------------------------------------ -### ++zag +

++zag

Add bottom into top @@ -1207,7 +1207,7 @@ destroyer. ------------------------------------------------------------------------ -### ++zig +

++zig

Subtract bottom from top @@ -1227,7 +1227,7 @@ destroyer. ------------------------------------------------------------------------ -### ++zug +

++zug

Concatenate into atom @@ -1245,7 +1245,7 @@ destroyer name. ------------------------------------------------------------------------ -### ++so +

++so

Coin parser engine @@ -1259,7 +1259,7 @@ Core containing arms that parse [`++coin`]s. ------------------------------------------------------------------------ -### ++bisk +

++bisk

Parse odor-atom pair @@ -1287,7 +1287,7 @@ producing a [`++dime`](). ------------------------------------------------------------------------ -### ++crub +

++crub

Parse `@da`, `@dr`, `@p`, `@t` @@ -1364,7 +1364,7 @@ and [`@t`](), producing a [`++dime`](). ------------------------------------------------------------------------ -### ++nuck +

++nuck

Top-level coin parser @@ -1406,7 +1406,7 @@ corresponding [`++coin`]() parser. ------------------------------------------------------------------------ -### ++nusk +

++nusk

Parse coin literal with escapes @@ -1427,7 +1427,7 @@ formatting). ------------------------------------------------------------------------ -### ++perd +

++perd

Parsing rule. @@ -1451,7 +1451,7 @@ prefixes. ------------------------------------------------------------------------ -### ++royl +

++royl

Parse dime float @@ -1487,7 +1487,7 @@ Parsing rule. Parses a number into a [`++dime`]() float. ------------------------------------------------------------------------ -### ++royl-cell +

++royl-cell

XX still not fully functional @@ -1504,7 +1504,7 @@ Intermediate parsed float convereter ------------------------------------------------------------------------ -### ++tash +

++tash

Parse signed dime @@ -1533,7 +1533,7 @@ Parsing rule. Parses a signed number into a [`++dime`](). ------------------------------------------------------------------------ -### ++twid +

++twid

Parse coins without `~` prefix @@ -1559,7 +1559,7 @@ Parsing rule. Parses coins after a leading sig, `~`. ------------------------------------------------------------------------ -### ++zust +

++zust

Parse prefixed dimes from `@if`, `@f`, `@rd` @@ -1590,7 +1590,7 @@ Parsing rule. Parses an atom of either [`@if`]() (IP address), [`@f`]() ------------------------------------------------------------------------ -### ++scot +

++scot

Render dime as cord @@ -1619,7 +1619,7 @@ Renders a dime `mol` as a cord. ------------------------------------------------------------------------ -### ++scow +

++scow

Render dime as tape @@ -1640,7 +1640,7 @@ Renders `mol` as a tape. ------------------------------------------------------------------------ -### ++slat +

++slat

Curried slaw @@ -1664,7 +1664,7 @@ odor specified by `mod`. ------------------------------------------------------------------------ -### ++slav +

++slav

Demand: parse span with input odor @@ -1696,7 +1696,7 @@ if it failes to parse. ------------------------------------------------------------------------ -### ++slaw +

++slaw

Parse span to input odor @@ -1732,7 +1732,7 @@ Parses a span `txt` to an atom of the odor specified by `mod`. ------------------------------------------------------------------------ -### ++slay +

++slay

Parse span to coin @@ -1777,7 +1777,7 @@ Parses a span `txt` to the unit of a [`++coin`](). ------------------------------------------------------------------------ -### ++smyt +

++smyt

Render path as tank @@ -1809,7 +1809,7 @@ pretty-printing. ------------------------------------------------------------------------ -### ++spat +

++spat

Render path as cord @@ -1828,7 +1828,7 @@ Renders a path `pax` as cord. ------------------------------------------------------------------------ -### ++spud +

++spud

Render path as tape @@ -1847,7 +1847,7 @@ Renders a path `pax` as [tape](). ------------------------------------------------------------------------ -### ++stab +

++stab

Parse span to path diff --git a/docs/pub/doc/hoon/library/2em.md b/docs/pub/doc/hoon/library/2em.md index caec667ac..a50b9aa3f 100644 --- a/docs/pub/doc/hoon/library/2em.md +++ b/docs/pub/doc/hoon/library/2em.md @@ -1,7 +1,7 @@ section 2eM, regular-expressions ================================ -### ++pars +

++pars

++ pars |= [a=tape] :: parse tape to rege @@ -66,44 +66,44 @@ Parse regular expression ~zod/try=> (pars "a\{1,20}") [~ [%betw p=[%lite p=~~a] q=1 r=20]] -### ++rags +

++rags

++ rags :: rege parsers => |% Regex parser arms -### ++nor +

++nor

++ nor ;~(less (mask "^$()|*?+.[\\") (shim 1 127)) :: non-control char XX document -### ++les +

++les

++ les ;~(less bas asp) :: not backslash XX document -### ++lep +

++lep

++ lep ;~(less (mask "^[]\\") asp) :: charset non-control XX document -### ++asp +

++asp

++ asp (shim 32 126) :: printable ascii XX document -### ++alb +

++alb

++ alb ;~(less ser asp) :: charset literal char XX document -### ++mis +

++mis

++ mis ;~(less aln asp) :: non alphanumeric -- @@ -111,7 +111,7 @@ XX document XX document -### ++apex +

++apex

++ apex :: top level %+ knee *rege |. ~+ @@ -124,7 +124,7 @@ XX document XX document -### ++mall +

++mall

++ mall %+ knee *rege |. ~+ @@ -133,7 +133,7 @@ XX document XX document -### ++bets +

++bets

++ bets %+ knee *rege |. ~+ @@ -162,7 +162,7 @@ XX document XX document -### ++ranc +

++ranc

++ ranc |= [a=@ b=@] @@ -172,14 +172,14 @@ XX document XX document -### ++flap +

++flap

++ flap |=(a=@ (mix a (dec (bex 256)))) :: XX document -### ++rang +

++rang

++ rang %+ sear |=([a=@ b=@] ?:((lte a b) (some [a b]) ~)) @@ -188,7 +188,7 @@ XX document XX document -### ++chun +

++chun

++ chun %+ knee *rege |. ~+ @@ -212,7 +212,7 @@ XX document XX document -### ++seac +

++seac

++ seac |= tub=nail @@ -225,7 +225,7 @@ XX document XX document -### ++sead +

++sead

++ sead %+ knee *@ |. ~+ @@ -264,7 +264,7 @@ XX document XX document -### ++sade +

++sade

++ sade %+ knee *@ |. ~+ @@ -277,7 +277,7 @@ XX document XX document -### ++seap +

++seap

++ seap %+ knee *@ |. ~+ @@ -305,7 +305,7 @@ XX document XX document -### ++cape +

++cape

++ cape %+ knee *tape |. ~+ @@ -318,7 +318,7 @@ XX document XX document -### ++chas +

++chas

++ chas :: ascii character set =- (sear ~(get by -) sym) @@ -350,37 +350,37 @@ XX document XX document -### ++cntrl +

++cntrl

++ cntrl :(con (ranc 0 31) (bex 127)) XX document -### ++digit +

++digit

++ digit (ranc '0' '9') XX document -### ++graph +

++graph

++ graph (ranc 33 126) XX document -### ++lower +

++lower

++ lower (ranc 'a' 'z') XX document -### ++print +

++print

++ print (ranc 32 126) XX document -### ++punct +

++punct

++ punct ;: con (ranc '!' '/') @@ -391,38 +391,38 @@ XX document XX document -### ++space +

++space

++ space :(con (ranc 9 13) (bex ' ')) XX document -### ++upper +

++upper

++ upper (ranc 'A' 'Z') XX document -### ++white +

++white

++ white :(con (bex ' ') (ranc 9 10) (ranc 12 13)) XX document -### ++wordc +

++wordc

++ wordc :(con digit lower upper (bex '_')) XX document -### ++xdigit +

++xdigit

++ xdigit :(con (ranc 'a' 'f') (ranc 'A' 'F') digit) :: XX document -### ++chad +

++chad

++ chad %+ knee *rege |. ~+ @@ -431,7 +431,7 @@ XX document XX document -### ++escd +

++escd

++ escd %+ knee *@ |. ~+ @@ -452,7 +452,7 @@ XX document XX document -### ++escp +

++escp

++ escp %+ knee *rege |. ~+ @@ -481,7 +481,7 @@ XX document XX document -### ++unid +

++unid

++ unid %+ knee *@ |. ~+ @@ -498,14 +498,14 @@ XX document XX document -### ++ra +

++ra

++ ra :: regex engine |_ a=rege XX document -### ++proc +

++proc

++ proc :: capture numbering |= b=@ @@ -544,7 +544,7 @@ XX document XX document -### ++cont +

++cont

++ cont |= [a=(map ,@u tape) b=(map ,@u tape)] @@ -553,7 +553,7 @@ XX document XX document -### ++abor +

++abor

++ abor |= [a=char b=(unit ,[tape (map ,@u tape)])] @@ -565,7 +565,7 @@ XX document XX document -### ++matc +

++matc

++ matc |= [b=tape c=tape] @@ -576,7 +576,7 @@ XX document XX document -### ++chet +

++chet

++ chet |= [b=(unit ,[tape (map ,@u tape)]) c=tape d=tape] @@ -592,19 +592,19 @@ XX document XX document -### ++blak +

++blak

++ blak (some ["" _(map ,@u tape)]) XX document -### ++word +

++word

++ word |=(a=char =((dis wordc:rags (bex a)) 0)) XX document -### ++deep +

++deep

++ deep |= [b=tape c=rege d=tape] @@ -704,7 +704,7 @@ XX document XX document -### ++rexp +

++rexp

++ rexp :: Regex match ~/ %rexp @@ -733,7 +733,7 @@ XX document XX document -### ++repg +

++repg

++ repg :: Global regex replace ~/ %repg diff --git a/docs/pub/doc/hoon/library/2en.md b/docs/pub/doc/hoon/library/2en.md index c9c9445ac..0ce268089 100644 --- a/docs/pub/doc/hoon/library/2en.md +++ b/docs/pub/doc/hoon/library/2en.md @@ -1,7 +1,7 @@ section 2eN, pseudo-cryptography ================================ -### ++un +

++un

Reversible scrambling core @@ -13,7 +13,7 @@ Used in the `@p` phonetic base. ------------------------------------------------------------------------ -### ++wren +

++wren

Conceal structure @@ -50,7 +50,7 @@ on the result, pushing it forward. Produces an atom. ------------------------------------------------------------------------ -### ++wred +

++wred

Restore structure @@ -87,7 +87,7 @@ on the result, pushing it forward. Produces an atom. ------------------------------------------------------------------------ -### ++xafo +

++xafo

Add modulo 255 @@ -102,7 +102,7 @@ Produces the sum of two atoms modulo 255, encoded as a nonzero byte. ------------------------------------------------------------------------ -### ++xaro +

++xaro

Subtract modulo 255 @@ -118,7 +118,7 @@ nonzero byte. ------------------------------------------------------------------------ -### ++zaft +

++zaft

Look up in 255 sub box @@ -154,7 +154,7 @@ box with 255 values, producing a unique nonzero byte. ------------------------------------------------------------------------ -### ++zart +

++zart

Reverse look up in 255 sub box @@ -187,7 +187,7 @@ the substitution box with 255 values, producing a unique nonzero byte. ------------------------------------------------------------------------ -### ++zyft +

++zyft

Lookup byte in 256 sub box @@ -223,7 +223,7 @@ with 256 values, producing a byte. ------------------------------------------------------------------------ -### ++zyrt +

++zyrt

Reverse lookup byte in 256 sub box diff --git a/docs/pub/doc/hoon/library/2eo.md b/docs/pub/doc/hoon/library/2eo.md index ca9a54f45..126ed5751 100644 --- a/docs/pub/doc/hoon/library/2eo.md +++ b/docs/pub/doc/hoon/library/2eo.md @@ -1,7 +1,7 @@ section 2eO, virtualization =========================== -### ++mack +

++mack

Nock subject to unit @@ -33,7 +33,7 @@ producing a `~`. ------------------------------------------------------------------------ -### ++mink +

++mink

Mock interpreter @@ -143,7 +143,7 @@ result becomes a `%1` `++tone`, indicating a block. ------------------------------------------------------------------------ -### ++mock +

++mock

Compute formula on subject with hint @@ -180,7 +180,7 @@ indicating a block. ------------------------------------------------------------------------ -### ++mook +

++mook

Intelligently render crash annotation @@ -250,7 +250,7 @@ Each may be a tank, cord, [`++spot`](), or trapped tank. Produces a ------------------------------------------------------------------------ -### ++mang +

++mang

Unit: Slam gate with sample @@ -292,7 +292,7 @@ Similar to [`++mong`](). ------------------------------------------------------------------------ -### ++mong +

++mong

Slam gate with sample @@ -334,7 +334,7 @@ Produces a [`++toon`]() computation result from slamming `gat` with ------------------------------------------------------------------------ -### ++mung +

++mung

Virtualize slamming gate @@ -376,7 +376,7 @@ Produces a [`++tone`]() computation result from slamming `gat` with ------------------------------------------------------------------------ -### ++mule +

++mule

Typed virtual @@ -415,7 +415,7 @@ the way. Used to lazily compute stack traces. ------------------------------------------------------------------------ -### ++mute +

++mute

Untyped virtual diff --git a/docs/pub/doc/hoon/library/2ep.md b/docs/pub/doc/hoon/library/2ep.md index c1c2e491b..ea275992b 100644 --- a/docs/pub/doc/hoon/library/2ep.md +++ b/docs/pub/doc/hoon/library/2ep.md @@ -8,7 +8,7 @@ anyway. ------------------------------------------------------------------------ -### ++berk +

++berk

Invert diff patches @@ -39,7 +39,7 @@ swapped. Produces a `bur`. ------------------------------------------------------------------------ -### ++diff +

++diff

Generate patch @@ -84,7 +84,7 @@ Produces a patch between two nouns, by change type ------------------------------------------------------------------------ -### ++loss +

++loss

Longest subsequence @@ -173,7 +173,7 @@ several internal helper arms. Produces a [`++tape`](). ------------------------------------------------------------------------ -### ++locz +

++locz

Find common @@ -204,7 +204,7 @@ producing a [\`++tape](). ------------------------------------------------------------------------ -### ++lore +

++lore

Split on `\n` @@ -240,7 +240,7 @@ Split on newlines, ascii `10` ------------------------------------------------------------------------ -### ++role +

++role

Join with `\n` @@ -262,7 +262,7 @@ Join line list with newlines. ------------------------------------------------------------------------ -### ++lump +

++lump

Change with `++udon` @@ -309,7 +309,7 @@ Use udon to change noun ------------------------------------------------------------------------ -### ++lure +

++lure

Patch `a` @@ -332,7 +332,7 @@ Patch a by references to axis and literal. ------------------------------------------------------------------------ -### ++limp +

++limp

Reverse patch @@ -357,7 +357,7 @@ Reverse a patch (preprocessor unchanged) ------------------------------------------------------------------------ -### ++hump +

++hump

Prep for diff @@ -387,7 +387,7 @@ Prep atom for diff: leave alone, cue, or split by newlines. ------------------------------------------------------------------------ -### ++husk +

++husk

Atomize post diff @@ -434,7 +434,7 @@ Re-atomize after diff: leave alone, jam, or join with newlines. ------------------------------------------------------------------------ -### ++lurk +

++lurk

Apply list patch @@ -474,7 +474,7 @@ Amend list using an urge: list of `[%& {number skipped}]` and ------------------------------------------------------------------------ -### ++lusk +

++lusk

`lcs` to list patch @@ -535,7 +535,7 @@ Using a common sequence, generate urge from two lists ------------------------------------------------------------------------ -### ++nude +

++nude

Tree change diff --git a/docs/pub/doc/hoon/library/2ew.md b/docs/pub/doc/hoon/library/2ew.md index 7440b7636..188241114 100644 --- a/docs/pub/doc/hoon/library/2ew.md +++ b/docs/pub/doc/hoon/library/2ew.md @@ -1,7 +1,7 @@ section 2eW, lite number theory =============================== -### ++egcd +

++egcd

GCD @@ -41,7 +41,7 @@ Greatest common denominator ------------------------------------------------------------------------ -### ++pram +

++pram

Probable prime @@ -97,7 +97,7 @@ Probable prime test ------------------------------------------------------------------------ -### ++ramp +

++ramp

`r-m` prime @@ -132,7 +132,7 @@ using salt `c`. ------------------------------------------------------------------------ -### ++fo +

++fo

Prime engine @@ -148,7 +148,7 @@ Core for performing arithmetic modulo a prime number ------------------------------------------------------------------------ -### ++dif +

++dif

Difference @@ -166,7 +166,7 @@ Subtract ------------------------------------------------------------------------ -### ++exp +

++exp

Exponent @@ -186,7 +186,7 @@ Exponent ------------------------------------------------------------------------ -### ++fra +

++fra

Divide @@ -204,7 +204,7 @@ Divide ------------------------------------------------------------------------ -### ++inv +

++inv

Inverse @@ -225,7 +225,7 @@ Multiplicative inverse ------------------------------------------------------------------------ -### ++pro +

++pro

Product @@ -243,7 +243,7 @@ Product ------------------------------------------------------------------------ -### ++sit +

++sit

Bounds @@ -261,7 +261,7 @@ Bounds check ------------------------------------------------------------------------ -### ++sum +

++sum

Sum @@ -279,7 +279,7 @@ Add ------------------------------------------------------------------------ -### ++ga +

++ga

++ ga :: GF (bex p.a) |= a=[p=@ q=@ r=@] :: dim poly gen @@ -293,7 +293,7 @@ XX document ------------------------------------------------------------------------ -### ++dif +

++dif

++ dif :: add and sub |= [b=@ c=@] @@ -306,7 +306,7 @@ XX document ------------------------------------------------------------------------ -### ++dub +

++dub

++ dub :: mul by x |= b=@ @@ -321,7 +321,7 @@ XX document ------------------------------------------------------------------------ -### ++pro +

++pro

++ pro :: slow multiply |= [b=@ c=@] @@ -336,7 +336,7 @@ XX document ------------------------------------------------------------------------ -### ++toe +

++toe

++ toe :: exp/log tables =+ ^= nu @@ -367,7 +367,7 @@ XX document ------------------------------------------------------------------------ -### ++sit +

++sit

++ sit :: reduce |= b=@ @@ -378,7 +378,7 @@ XX document ------------------------------------------------------------------------ -### ++fra +

++fra

++ fra :: divide |= [b=@ c=@] @@ -389,7 +389,7 @@ XX document ------------------------------------------------------------------------ -### ++inv +

++inv

++ inv :: invert |= b=@ @@ -404,7 +404,7 @@ XX document ------------------------------------------------------------------------ -### ++pow +

++pow

++ pow :: exponent |= [b=@ c=@] @@ -421,7 +421,7 @@ XX document ------------------------------------------------------------------------ -### ++pro +

++pro

++ pro :: multiply |= [b=@ c=@] diff --git a/docs/pub/doc/hoon/library/2ex.md b/docs/pub/doc/hoon/library/2ex.md index bb30f121d..adf4cc33e 100644 --- a/docs/pub/doc/hoon/library/2ex.md +++ b/docs/pub/doc/hoon/library/2ex.md @@ -3,7 +3,7 @@ section 2eX, jetted crypto ------------------------------------------------------------------------ -### ++aesc +

++aesc

++ aesc :: AES-256 ~% %aesc + ~ @@ -11,7 +11,7 @@ section 2eX, jetted crypto XX document -### ++en +

++en

++ en :: ECB enc ~/ %en @@ -21,7 +21,7 @@ XX document XX document -### ++de +

++de

++ de :: ECB dec ~/ %de @@ -32,7 +32,7 @@ XX document XX document -### ++ahem +

++ahem

++ ahem :: AES helpers :: XX should be in aesc, isn't for performance reasons @@ -44,20 +44,20 @@ XX document XX document -### ++cipa +

++cipa

++ cipa :: AES params $_ ^? |% XX document -### ++co +

++co

++ co [0xe 0xb 0xd 0x9] XX document -### ++ix +

++ix

++ ix :: key expand, inv |= a=@ ^- @ @@ -82,13 +82,13 @@ XX document XX document -### ++ro +

++ro

++ ro [0 3 2 1] XX document -### ++su +

++su

++ su 0x7d0c.2155.6314.69e1.26d6.77ba.7e04.2b17. 6199.5383.3cbb.ebc8.b0f5.2aae.4d3b.e0a0. @@ -111,7 +111,7 @@ XX document XX document -### ++pen +

++pen

++ pen :: encrypt ^- cipa @@ -119,13 +119,13 @@ XX document XX document -### ++co +

++co

++ co [0xe 0xb 0xd 0x9] XX document -### ++ix +

++ix

++ ix :: key expand, inv |= a=@ ^- @ @@ -150,13 +150,13 @@ XX document XX document -### ++ro +

++ro

++ ro [0 3 2 1] XX document -### ++su +

++su

++ su 0x7d0c.2155.6314.69e1.26d6.77ba.7e04.2b17. 6199.5383.3cbb.ebc8.b0f5.2aae.4d3b.e0a0. @@ -179,7 +179,7 @@ XX document XX document -### ++pin +

++pin

++ pin :: decrypt ^- cipa @@ -187,13 +187,13 @@ XX document XX document -### ++co +

++co

++ co [0xe 0xb 0xd 0x9] XX document -### ++ix +

++ix

++ ix :: key expand, inv |= a=@ ^- @ @@ -218,13 +218,13 @@ XX document XX document -### ++ro +

++ro

++ ro [0 3 2 1] XX document -### ++su +

++su

++ su 0x7d0c.2155.6314.69e1.26d6.77ba.7e04.2b17. 6199.5383.3cbb.ebc8.b0f5.2aae.4d3b.e0a0. @@ -247,7 +247,7 @@ XX document XX document -### ++mcol +

++mcol

++ mcol |= [a=(list ,@) b=[p=@ q=@ r=@ s=@]] ^- (list ,@) @@ -273,7 +273,7 @@ XX document XX document -### ++pode +

++pode

++ pode :: explode to block |= [a=bloq b=@ c=@] ^- (list ,@) @@ -286,7 +286,7 @@ XX document XX document -### ++sube +

++sube

++ sube :: s-box word |= [a=@ b=@] ^- @ @@ -296,7 +296,7 @@ XX document XX document -### ++be +

++be

++ be :: block cipher |= [a=? b=@ c=@H] ^- @uxH @@ -308,7 +308,7 @@ XX document XX document -### ++ankh +

++ankh

++ ankh |= [a=cipa b=@ c=@] @@ -316,7 +316,7 @@ XX document XX document -### ++sark +

++sark

++ sark |= [c=(list ,@) d=(list ,@)] ^- (list ,@) @@ -326,7 +326,7 @@ XX document XX document -### ++srow +

++srow

++ srow |= [a=cipa b=(list ,@)] ^- (list ,@) @@ -343,7 +343,7 @@ XX document XX document -### ++subs +

++subs

++ subs |= [a=cipa b=(list ,@)] ^- (list ,@) @@ -367,7 +367,7 @@ XX document XX document -### ++ex +

++ex

++ ex :: key expand |= a=@I ^- @ @@ -389,7 +389,7 @@ XX document XX document -### ++ix +

++ix

++ ix :: key expand, inv |= a=@ ^- @ @@ -414,7 +414,7 @@ XX document XX document -### ++curt +

++curt

++ curt :: curve25519 |= [a=@ b=@] @@ -428,7 +428,7 @@ XX document XX document -### ++cla +

++cla

++ cla |= raw=@ @@ -439,19 +439,19 @@ XX document XX document -### ++sqr +

++sqr

++ sqr |=(a=@ (mul a a)) XX document -### ++inv +

++inv

++ inv |=(a=@ (~(exp fo q) (sub q 2) a)) XX document -### ++cad +

++cad

++ cad |= [n=[x=@ z=@] m=[x=@ z=@] d=[x=@ z=@]] @@ -473,7 +473,7 @@ XX document XX document -### ++cub +

++cub

++ cub |= [x=@ z=@] @@ -505,7 +505,7 @@ XX document XX document -### ++ed +

++ed

++ ed :: ed25519 => @@ -521,14 +521,14 @@ XX document ~% %coed +> ~ |% -### ++norm +

++norm

++ norm |=(x=@ ?:(=(0 (mod x 2)) x (sub q x))) :: XX document -### ++xrec +

++xrec

++ xrec :: recover x-coord |= y=@ ^- @ @@ -543,7 +543,7 @@ XX document XX document -### ++ward +

++ward

++ ward :: edwards multiply |= [pp=[@ @] qq=[@ @]] ^- [@ @] @@ -565,7 +565,7 @@ XX document XX document -### ++scam +

++scam

++ scam :: scalar multiply |= [pp=[@ @] e=@] ^- [@ @] @@ -580,7 +580,7 @@ XX document XX document -### ++etch +

++etch

++ etch :: encode point |= pp=[@ @] ^- @ @@ -589,7 +589,7 @@ XX document XX document -### ++curv +

++curv

++ curv :: point on curve? |= [x=@ y=@] ^- ? @@ -603,7 +603,7 @@ XX document XX document -### ++deco +

++deco

++ deco :: decode point |= s=@ ^- (unit ,[@ @]) @@ -619,7 +619,7 @@ XX document XX document -### ++bb +

++bb

++ bb =+ bby=(pro.fq 4 (inv.fq 5)) @@ -631,7 +631,7 @@ XX document XX document -### ++puck +

++puck

++ puck :: public key ~/ %puck @@ -647,7 +647,7 @@ XX document XX document -### ++suck +

++suck

++ suck :: keypair from seed |= se=@I ^- @uJ @@ -657,7 +657,7 @@ XX document XX document -### ++sign +

++sign

++ sign :: certify ~/ %sign @@ -692,7 +692,7 @@ XX document XX document -### ++veri +

++veri

++ veri :: validate ~/ %veri diff --git a/docs/pub/doc/hoon/library/2ey.md b/docs/pub/doc/hoon/library/2ey.md index 3a9485d56..750b1298a 100644 --- a/docs/pub/doc/hoon/library/2ey.md +++ b/docs/pub/doc/hoon/library/2ey.md @@ -1,13 +1,13 @@ section 2eY, SHA-256 ==================== -### ++shad +

++shad

++ shad |=(ruz=@ (shax (shax ruz))) :: double sha-256 XX document -### ++shaf +

++shaf

++ shaf :: half sha-256 |= [sal=@ ruz=@] @@ -17,7 +17,7 @@ XX document XX document -### ++shak +

++shak

++ shak :: XX shd be PBKDF |= [who=@p wud=@] @@ -26,7 +26,7 @@ XX document XX document -### ++sham +

++sham

++ sham :: noun hash |= yux=* ^- @uvH ^- @ @@ -37,7 +37,7 @@ XX document XX document -### ++shas +

++shas

++ shas :: salted hash |= [sal=@ ruz=@] @@ -46,7 +46,7 @@ XX document XX document -### ++shax +

++shax

++ shax :: sha-256 ~/ %shax @@ -137,7 +137,7 @@ XX document XX document -### ++shaw +

++shaw

++ shaw :: hash to nbits |= [sal=@ len=@ ruz=@] @@ -146,7 +146,7 @@ XX document XX document -### ++og +

++og

++ og :: shax-powered rng ~/ %og @@ -154,7 +154,7 @@ XX document XX document -### ++rad +

++rad

++ rad :: random in range |= b=@ ^- @ @@ -164,7 +164,7 @@ XX document XX document -### ++rads +

++rads

++ rads :: random continuation |= b=@ @@ -173,7 +173,7 @@ XX document XX document -### ++raw +

++raw

++ raw :: random bits ~/ %raw @@ -191,7 +191,7 @@ XX document XX document -### ++raws +

++raws

++ raws :: random bits continuation |= b=@ @@ -201,7 +201,7 @@ XX document XX document -### ++shaz +

++shaz

++ shaz :: sha-512 |= ruz=@ ^- @ @@ -209,7 +209,7 @@ XX document XX document -### ++shal +

++shal

++ shal :: sha-512 with length ~/ %shal @@ -326,7 +326,7 @@ XX document XX document -### ++shan +

++shan

++ shan :: sha-1 (deprecated) |= ruz=@ diff --git a/docs/pub/doc/hoon/library/2ez.md b/docs/pub/doc/hoon/library/2ez.md index 9e8142dec..b37aa52bc 100644 --- a/docs/pub/doc/hoon/library/2ez.md +++ b/docs/pub/doc/hoon/library/2ez.md @@ -1,7 +1,7 @@ section 2eZ, OLD rendering ========================== -### ++show +

++show

++ show :: XX deprecated, use type |= vem=* @@ -63,7 +63,7 @@ section 2eZ, OLD rendering XX document -### ++shep +

++shep

++ shep |= [fom=@ gar=*] @@ -85,7 +85,7 @@ XX document XX document -### ++shop +

++shop

++ shop |= [aug=* vel=$+(a=@ tape)] @@ -103,14 +103,14 @@ XX document XX document -### ++at +

++at

++ at |_ a=@ XX document -### ++r +

++r

++ r ?: ?& (gte (met 3 a) 2) @@ -130,49 +130,49 @@ XX document XX document -### ++rf +

++rf

++ rf `tape`[?-(a & '&', | '|', * !!) ~] XX document -### ++rn +

++rn

++ rn `tape`[?>(=(0 a) '~') ~] XX document -### ++rt +

++rt

++ rt `tape`['\'' (weld (mesc (trip a)) `tape`['\'' ~])] XX document -### ++rta +

++rta

++ rta rt XX document -### ++rtam +

++rtam

++ rtam `tape`['%' (trip a)] XX document -### ++rub +

++rub

++ rub `tape`['0' 'b' (rum 2 ~ |=(b=@ (add '0' b)))] XX document -### ++rud +

++rud

++ rud (rum 10 ~ |=(b=@ (add '0' b))) XX document -### ++rum +

++rum

++ rum |= [b=@ c=tape d=$+(@ @)] @@ -193,7 +193,7 @@ XX document XX document -### ++rup +

++rup

++ rup =+ b=(met 3 a) @@ -220,7 +220,7 @@ XX document XX document -### ++ruv +

++ruv

++ ruv ^- tape @@ -239,7 +239,7 @@ XX document XX document -### ++rux +

++rux

++ rux `tape`['0' 'x' (rum 16 ~ |=(b=@ (add b ?:((lth b 10) 48 87))))] -- diff --git a/docs/pub/doc/hoon/library/3ba.md b/docs/pub/doc/hoon/library/3ba.md index 8917c642c..238255ea2 100644 --- a/docs/pub/doc/hoon/library/3ba.md +++ b/docs/pub/doc/hoon/library/3ba.md @@ -1,7 +1,7 @@ section 3bA, lite number theory =============================== -### ++fu +

++fu

++ fu :: modulo (mul p q) |= a=[p=@ q=@] @@ -10,7 +10,7 @@ section 3bA, lite number theory XX document -### ++dif +

++dif

++ dif |= [c=[@ @] d=[@ @]] @@ -19,7 +19,7 @@ XX document XX document -### ++exp +

++exp

++ exp |= [c=@ d=[@ @]] @@ -29,7 +29,7 @@ XX document XX document -### ++out +

++out

++ out :: garner's formula |= c=[@ @] @@ -40,7 +40,7 @@ XX document XX document -### ++pro +

++pro

++ pro |= [c=[@ @] d=[@ @]] @@ -49,7 +49,7 @@ XX document XX document -### ++sum +

++sum

++ sum |= [c=[@ @] d=[@ @]] @@ -58,7 +58,7 @@ XX document XX document -### ++sit +

++sit

++ sit |= c=@ diff --git a/docs/pub/doc/hoon/library/3bb.md b/docs/pub/doc/hoon/library/3bb.md index d73b5fb29..628859579 100644 --- a/docs/pub/doc/hoon/library/3bb.md +++ b/docs/pub/doc/hoon/library/3bb.md @@ -1,7 +1,7 @@ section 3bB, cryptosuites ========================= -### ++crua +

++crua

++ crua !: :: cryptosuite A (RSA) ^- acru @@ -10,13 +10,13 @@ section 3bB, cryptosuites XX document -### ++mx +

++mx

++ mx (dec (met 0 mos)) :: bit length XX document -### ++dap +

++dap

++ dap :: OEAP decode |= [wid=@ xar=@ dog=@] ^- [p=@ q=@] @@ -28,7 +28,7 @@ XX document XX document -### ++pad +

++pad

++ pad :: OEAP encode |= [wid=@ rax=[p=@ q=@] meg=@] ^- @ @@ -42,19 +42,19 @@ XX document XX document -### ++pull +

++pull

++ pull |=(a=@ (~(exp fo mos) 3 a)) XX document -### ++push +

++push

++ push |=(a=@ (~(exp fo mos) 5 a)) XX document -### ++pump +

++pump

++ pump |= a=@ ^- @ @@ -64,7 +64,7 @@ XX document XX document -### ++punt +

++punt

++ punt |= a=@ ^- @ @@ -74,14 +74,14 @@ XX document XX document -### ++as +

++as

++ as => |% XX document -### ++haul +

++haul

++ haul :: revealing haul |= a=pass @@ -94,7 +94,7 @@ XX document XX document -### ++seal +

++seal

XX document @@ -177,26 +177,26 @@ XX document XX document -### ++pac +

++pac

++ pac ^- @uvG (end 6 1 (shaf %acod sec)) XX document -### ++pub +

++pub

++ pub ^- pass (cat 3 'b' puc) XX document -### ++sec +

++sec

++ sec ^- ring sed :: XX document -### ++nu +

++nu

++ nu ^? @@ -208,7 +208,7 @@ XX document XX document -### ++elcm +

++elcm

++ elcm |= [a=@ b=@] @@ -217,7 +217,7 @@ XX document XX document -### ++eldm +

++eldm

++ eldm |= [a=@ b=@ c=@] @@ -226,7 +226,7 @@ XX document XX document -### ++ersa +

++ersa

++ ersa |= [a=@ b=@] @@ -240,7 +240,7 @@ XX document XX document -### ++com +

++com

XX document @@ -401,7 +401,7 @@ XX document XX document -### ++sign +

++sign

++ sign |= [a=@ b=@] ^- @ @@ -409,7 +409,7 @@ XX document XX document -### ++sure +

++sure

++ sure |= [a=@ b=@] @@ -418,7 +418,7 @@ XX document XX document -### ++tear +

++tear

++ tear |= [a=pass b=@] @@ -428,7 +428,7 @@ XX document XX document -### ++de +

++de

++ de |+ [key=@ cep=@] ^- (unit ,@) @@ -437,7 +437,7 @@ XX document XX document -### ++dy +

++dy

++ dy |+ [a=@ b=@] ^- @ @@ -445,7 +445,7 @@ XX document XX document -### ++en +

++en

++ en |+ [key=@ msg=@] ^- @ux @@ -454,14 +454,14 @@ XX document XX document -### ++ex +

++ex

++ ex ^? |% ++ fig ^- @uvH (shaf %bfig puc) XX document -### ++fig +

++fig

XX document @@ -509,7 +509,7 @@ XX document XX document -### ++pit +

++pit

++ pit |= [a=@ b=@] @@ -519,7 +519,7 @@ XX document XX document -### ++nol +

++nol

++ nol |= a=@ @@ -528,7 +528,7 @@ XX document XX document -### ++brew +

++brew

++ brew :: create keypair |= [a=@ b=@] :: width seed @@ -538,7 +538,7 @@ XX document XX document -### ++hail +

++hail

++ hail :: activate public key |= a=pass @@ -550,7 +550,7 @@ XX document XX document -### ++wear +

++wear

++ wear :: activate secret key |= a=ring @@ -562,7 +562,7 @@ XX document XX document -### ++trub +

++trub

++ trub :: test ed |= msg=@tas @@ -583,7 +583,7 @@ XX document XX document -### ++hmac +

++hmac

++ hmac :: HMAC-SHA1 |= [key=@ mes=@] diff --git a/docs/pub/doc/hoon/library/3bc.md b/docs/pub/doc/hoon/library/3bc.md index d2f89b8c1..5a6731173 100644 --- a/docs/pub/doc/hoon/library/3bc.md +++ b/docs/pub/doc/hoon/library/3bc.md @@ -1,7 +1,7 @@ section 3bC, Gregorian UTC ========================== -### ++dawn +

++dawn

Weekday of Jan 1 @@ -27,7 +27,7 @@ producing an atom. Weeks are zero-indexed beginning on Sunday. ------------------------------------------------------------------------ -### ++daws +

++daws

Weekday of date @@ -51,7 +51,7 @@ zero-indexed beginning on Sunday. ------------------------------------------------------------------------ -### ++deal +

++deal

Add leap seconds @@ -82,7 +82,7 @@ Produces a [`date`]() with the 25 leap seconds added. ------------------------------------------------------------------------ -### ++lead +

++lead

Subtract leap seconds @@ -117,7 +117,7 @@ subtracted. ------------------------------------------------------------------------ -### ++dust +

++dust

Print UTC format @@ -146,7 +146,7 @@ Produces a [tape]() of the date in UTC format. ------------------------------------------------------------------------ -### ++stud +

++stud

Parse UTC format @@ -189,7 +189,7 @@ Accepts a [tape]() containing a date in UTC format and produces the ------------------------------------------------------------------------ -### ++unt +

++unt

UGT to UTC time @@ -211,7 +211,7 @@ Transforms Urbit Galactic Time to UTC time, producing an atom. ------------------------------------------------------------------------ -### ++yu +

++yu

UTC format constants @@ -223,7 +223,7 @@ UTC format constants ------------------------------------------------------------------------ -### ++mon +

++mon

Months @@ -255,7 +255,7 @@ Produces a list of [tapes]() containing the 12 months of the year. ------------------------------------------------------------------------ -### ++wik +

++wik

Weeks @@ -277,7 +277,7 @@ beginning with Sunday. ------------------------------------------------------------------------ -### ++les +

++les

Leap second dates @@ -324,7 +324,7 @@ Produces a list of the (absolute) dates ([`@da`]) of the 25 leap seconds ------------------------------------------------------------------------ -### ++lef +

++lef

Back-shifted leap second dates diff --git a/docs/pub/doc/hoon/library/3bd.md b/docs/pub/doc/hoon/library/3bd.md index eba82eec0..32330589d 100644 --- a/docs/pub/doc/hoon/library/3bd.md +++ b/docs/pub/doc/hoon/library/3bd.md @@ -1,7 +1,7 @@ section 3bD, JSON and XML ========================= -### ++moon +

++moon

Mime type to `++cord` @@ -27,7 +27,7 @@ Renders a [mime](http://en.wikipedia.org/wiki/MIME) type path with infix ~zod/try=> `@t`(moon /application/x-pnacl) 'application/x-pnacl' -### ++perk +

++perk

Parse cube with fork @@ -61,7 +61,7 @@ needlessly unwieldy. ! {1 1} ! exit -### ++poja +

++poja

JSON parser core @@ -81,7 +81,7 @@ a [`++json`](). ~zod/try=> (poja 'invalid{json') ~ -### ++apex +

++apex

Parse object @@ -103,7 +103,7 @@ with current test:urbit.git ! {1 1} ! exit -### ++valu +

++valu

Parse value @@ -135,7 +135,7 @@ Parsing rule. Parses JSON values to [`++json`](). ~zod/try=> (rash 'true' valu:poja) [%b p=%.y] -### ++abox +

++abox

Parse array @@ -150,7 +150,7 @@ delimited by a `,`. JSON Objects ------------ -### ++pair +

++pair

Parse key value pair @@ -162,7 +162,7 @@ string and value delimited by `:`. ~zod/try=> (rash '"ham": 2' pair:poja) ['ham' [%n p=~.2]] -### ++obje +

++obje

Parse array of objects @@ -174,7 +174,7 @@ key-value pairs that are enclosed within `{}` and separated by `,`. ~zod/try=> (rash '{"ham": 2, "lam":true}' obje:poja) [['ham' [%n p=~.2]] ~[['lam' [%b p=%.y]]]] -### ++obox +

++obox

Parse boxed object @@ -189,7 +189,7 @@ a tag of `%o`. See also: [`++json`](). JSON Booleans ------------- -### ++bool +

++bool

Parse boolean @@ -209,7 +209,7 @@ Parsing rule. Parses a string of either `true` or `false` to a JSON strings ------------ -### ++stri +

++stri

Parse string @@ -228,7 +228,7 @@ of characters enclosed in double quotes along with escaping `\`s, to a ~zod/try=> (rash '"This be \\"quoted\\""' stri:poja) 'This be "quoted"' -### ++jcha +

++jcha

Parse char from string @@ -249,7 +249,7 @@ string to a [`++cord`](). ' ' -### ++esca +

++esca

Parse escaped char @@ -286,7 +286,7 @@ A- JSON numbers are stored as cords internally in lieu of full float support, so ++numb and subarms are really more *validators* than parsers per se. -### ++numb +

++numb

Parse number @@ -318,7 +318,7 @@ part, or exponent part, to a [`++cord`](). ! {1 2} ! exit -### ++digs +

++digs

Parse 1-9 @@ -335,7 +335,7 @@ Parsing rule. Parses digits `0` through `9` to a [`++tape`](). ~zod/try=> (rash '7' digs:poja) "7" -### ++expo +

++expo

Parse exponent part @@ -356,7 +356,7 @@ Parsing rule. Parses an exponent to a [`++cord`](). An exponent is an ~zod/try=> `tape`(rash 'E-4' expo:poja) "E-4" -### ++frac +

++frac

Fractional part @@ -374,7 +374,7 @@ Parsing rule. Parses a dot followed by digits to a [`++cord`](). whitespace ---------- -### ++spac +

++spac

Parse whitespace @@ -392,7 +392,7 @@ Parsing rule. Parses a whitespace to a [`++tape`](). ! {1 4} ! exit -### ++ws +

++ws

Allow prefix whitespace @@ -417,7 +417,7 @@ applying `sef`. Plumbing -------- -### ++mayb +

++mayb

Maybe parse @@ -430,7 +430,7 @@ Parser modifier. Need to document, an example showing failure. ~zod/try=> ((mayb abox):poja 1^1 "not-an-array") [p=[p=1 q=1] q=[~ [p="" q=[p=[p=1 q=1] q="not-an-array"]]]] -### ++twel +

++twel

Weld two tapes @@ -447,7 +447,7 @@ Concatenates two tapes, `a` and `b`, producing a `++tape`. ~zod/try=> (twel "kre" ""):poja ~[~~k ~~r ~~e] -### ++piec +

++piec

Parse char to list @@ -464,7 +464,7 @@ Parser modifer. Parses an atom with `bus` and then wraps it in a ~zod/try=> (scan "4" (piec:poja dem:ag)) [4 ~] -### ++pojo +

++pojo

Print JSON @@ -527,7 +527,7 @@ Renders a `++json` `val` as a [++tape](). ~zod/try=> (crip (pojo %o (mo sale/(jone 12) same/b/| ~))) '{"same":false,"sale":12}' -### ++poxo +

++poxo

Print XML @@ -546,7 +546,7 @@ Renders a `++manx` `a` as a [`++tape`](). ~zod/try=> (poxo ;div:(p:"tree > text" a)) "

tree > text

" -### ++apex +

++apex

Inner XML printer @@ -581,7 +581,7 @@ Renders a `++manx` as a [`++tape](), appending a suffix`rez\`. ~zod/try=> (~(apex poxo &) ;div:(p:"tree > text" a) "") "

tree > text

" -### ++attr +

++attr

Print attributes @@ -609,7 +609,7 @@ Render XML attributes as a [`++tape`](). ~zod/try=> (crip (attr:poxo ~[sam/"hem" [%tok %ns]^"reptor"] "|appen")) 'sam="hem" tok:ns="reptor"|appen' -### ++escp +

++escp

Escape XML @@ -648,7 +648,7 @@ Escapes the XML special characters `"`, `&`, `'`, `<`, `>`. ~zod/try=> `tape`(~(escp poxo &) "x > y" ~) "x > y" -### ++name +

++name

Print name @@ -669,7 +669,7 @@ Renders a `++mane` as a `++tape`. ~zod/try=> (name:poxo %ham^%tor) "ham:tor" -### ++many +

++many

Print node list @@ -697,7 +697,7 @@ Renders multiple XML nodes as a [`++tape`]() ------------------------------------------------------------------------ -### ++poxa +

++poxa

Parse XML @@ -718,7 +718,7 @@ Parses an XML node from a [`++cord`](), producing a unit [`++manx`](). ~zod/try=> (poxa '<<<<') ~ -### ++apex +

++apex

Top level parser @@ -745,7 +745,7 @@ Parses a node of XML, type [`++manx`](). ! {1 2} ! exit -### ++attr +

++attr

Parse XML attributes @@ -781,7 +781,7 @@ or more space-prefixed name to string values. Result type [`++mart`]() ! {1 23} ! exit -### ++chrd +

++chrd

Parse character data @@ -800,7 +800,7 @@ Parsing rule. Parses XML character data. Result type [`++mars`]() ! {1 6} ! exit -### ++comt +

++comt

Parses comments @@ -823,7 +823,7 @@ Parsing rule. Parses XML comment blocks. ! {1 18} ! exit -### ++escp +

++escp

Parse (possibly) escaped char @@ -857,7 +857,7 @@ Parsing rule. Parses a nonspecial or escaped character. Result type ~zod/try=> (rash '"' escp:xmlp) '"' -### ++empt +

++empt

Parse self-closing tag @@ -876,7 +876,7 @@ Parsing rule. Parses self-closing XML tags that end in `/>`. ! {1 21} ! exit -### ++head +

++head

Parse opening tag @@ -895,7 +895,7 @@ Parsing rule. Parses the opening tag of an XML node. Result type ! {1 16} ! exit -### ++name +

++name

Parse tag name @@ -922,7 +922,7 @@ Parsing rule. Parses the name of an XML tag. Result type [`++mane`]() ! {1 4} ! exit -### ++tail +

++tail

Parse closing tag @@ -938,7 +938,7 @@ Parsing rule. Parses an XML closing tag. ! {1 3} ! exit -### ++whit +

++whit

Parse whitespace, etc. @@ -960,7 +960,7 @@ Parsing rule. Parses newlines, tabs, and spaces. ! {1 1} ! exit -### ++jo +

++jo

JSON reparsing core @@ -975,7 +975,7 @@ A `fist` is a gate that produces a `grub`. A `grub` is a unit of some JSON value. -### ++ar +

++ar

Parse array to list @@ -998,7 +998,7 @@ Reparser modifier. Reparses an array to the [`++unit`]() of a homogenous [~ u=~[1 2]] {[%~ u=it(@)] %~} -### ++at +

++at

Reparse array as tuple @@ -1023,7 +1023,7 @@ Reparser generator. Reparses an array as a fixed-length tuple of ~zod/try=> ((at ni so ni ~):jo a/~[n/'3' s/'to' n/'']) ~ -### ++at-raw +

++at-raw

Reparse array to tuple @@ -1043,7 +1043,7 @@ Reparser generator. Reparses a list of [`++json`]() to a tuple of ~zod/try=> ((at-raw ni ni bo ~):jo ~[s/'hi' n/'1' b/&]) [~ [~ 1] [~ u=%.y] ~] -### ++bo +

++bo

Reparse boolean @@ -1061,7 +1061,7 @@ Reparser modifier. Reparses a boolean to the [`++unit`]() of a ~zod/try=> (bo:jo [%s 'hi']) ~ -### ++bu +

++bu

Reparse boolean not @@ -1079,7 +1079,7 @@ of a loobean. ~zod/try=> (bu:jo [%s 'hi']) ~ -### ++cu +

++cu

Reparse and transform @@ -1101,7 +1101,7 @@ producing a [`++unit`](). ~zod/try=> ((cu dec ni):jo [%b &]) ~ -### ++da +

++da

Reparse UTC date @@ -1120,7 +1120,7 @@ Reparser modifier. Reparses a UTC date string to a [`++unit`](). ~zod/try=> (da:jo [%n '20']) ~ -### ++di +

++di

Reparse millisecond date @@ -1143,7 +1143,7 @@ Reparser modifier. Reparses the javascript millisecond date integer to a ~zod/try=> (di:jo [%n '25000']) [~ ~1970.1.1..00.00.25] -### ++mu +

++mu

Reparse unit @@ -1169,7 +1169,7 @@ value, and are reparsed to results of \~ or (some {value}) respectively ~zod/try=> ((mu ni):jo [%s 'ma']) ~ -### ++ne +

++ne

Reparse number as real @@ -1184,7 +1184,7 @@ XX Currently unimplemented A- yup, this will eventually reparse a floating point atom, but interfaces for the latter are not currently stable. -### ++ni +

++ni

Reparse number as integer @@ -1211,7 +1211,7 @@ Reparser modifier. Reparses an integer representation to a [\`++unit](). ~zod/try=> (ni:jo [%a ~[b/& b/& b/& b/&]]) ~ -### ++no +

++no

Reparse number as text @@ -1238,7 +1238,7 @@ Reparser modifier. Reparses a numeric representation to a [++cord](). ~zod/try=> (no:jo [%a ~[b/& b/& b/& b/&]]) ~ -### ++of +

++of

Reparse object to frond @@ -1278,7 +1278,7 @@ one of the key-value pairs in `wer`. ~zod/try=> ((of sem/sa som/ni ~):jo %o [%sem s/'hey'] ~ [%sam s/'other value'] ~ ~) ~ -### ++ot +

++ot

Reparse object as tuple @@ -1301,7 +1301,7 @@ the [`++edge`](), the results of which are produced in a tuple. ~zod/try=> ((ot sem/sa som/ni sem/sa ~):jo (jobe [%sem s/'ha'] [%som n/'20'] ~)) [~ u=["ha" q=20 "ha"]] -### ++ot-raw +

++ot-raw

++ ot-raw :: object as tuple |* wer=(pole ,[cord fist]) @@ -1321,7 +1321,7 @@ in a tuple. ~zod/try=> ((ot-raw sem/sa som/ni sem/sa ~):jo (mo [%sem s/'ha'] [%som b/|] ~)) [[~ u="ha"] ~ [~ u="ha"] ~] -### ++om +

++om

Parse object to map @@ -1342,7 +1342,7 @@ using `wit`. ~zod/try=> ((om ni):jo (jobe [%sap n/'20'] [%sup n/'0x5'] [%sop n/'177'] ~)) ~ -### ++pe +

++pe

Add prefix @@ -1365,7 +1365,7 @@ Reparser modifier. Adds a static prefix `pre` to the parse result of ~zod/try=> ((pe %hi ni):jo b/|) ~ -### ++sa +

++sa

Reparse string to tape @@ -1383,7 +1383,7 @@ Reparser modifier. Reparses a [`++json`]() string to a [`++tape`](). ~zod/try=> (sa:jo a/~[s/'val 2']) ~ -### ++so +

++so

Reparse string to cord @@ -1401,7 +1401,7 @@ Reparser modifier. Reparses a string to a [`++cord`](). ~zod/try=> (so:jo a/~[s/'val 2']) ~ -### ++su +

++su

Reparse string @@ -1425,7 +1425,7 @@ Reparser generator. Produces a reparser that applies `sab` to a string. ~zod/try=> ((su:jo fed:ag) n/'20') ~ -### ++ul +

++ul

Reparse null @@ -1442,7 +1442,7 @@ Reparser modifier. Reparses a null value. ~zod/try=> (ul:jo b/&) ~ -### ++za +

++za

Pole of nonempty units @@ -1463,7 +1463,7 @@ internally. ~zod/try=> (za:jo ~[`1 ~ `3]) %.n -### ++zl +

++zl

Collapse unit list @@ -1491,7 +1491,7 @@ empty, produces null. ~zod/try=> (zl:jo `(list (unit))`~[`1 ~ `3]) ~ -### ++zp +

++zp

Parses a @@ -1514,7 +1514,7 @@ Collapses a `++pole` of `++unit`s `but`, producing a tuple. ~zod/try=> (zp:jo `(pole (unit))`~[`1 ~ `3]) ! exit -### ++zm +

++zm

Collapse unit map @@ -1545,7 +1545,7 @@ See also: [`++zp`](), [`++zl`](). ~zod/try=> (~(run by `(map ,@t ,@u)`(mo a/1 b/7 c/3 ~)) (flit |=(a=@ (lth a 5)))) {[p='a' q=[~ u=1]] [p='c' q=[~ u=3]] [p='b' q=~]} -### ++joba +

++joba

`++json` from key-value pair @@ -1570,7 +1570,7 @@ Produces a ++json object with one key. ~zod/try=> (crip (pojo (joba %hi (jone 2.130)))) '{"hi":2130}' -### ++jobe +

++jobe

Object from key-value list @@ -1589,7 +1589,7 @@ Produces a `++json` object from a list `a` of key to `++json` values. ~zod/try=> (crip (pojo (jobe a/n/'20' b/~ c/a/~[s/'mol'] ~))) '{"b":null,"c":["mol"],"a":20}' -### ++jape +

++jape

`++json` string from tape @@ -1610,7 +1610,7 @@ Produces a [`++json`]() string from a [`++tape`](). ~zod/try=> (crip (pojo (jape "semtek som? zeplo!"))) '"semtek som? zeplo!"' -### ++jone +

++jone

`++json` number from unigned @@ -1635,7 +1635,7 @@ Produces a `++json` number from an unsigned atom. ~zod/try=> (pojo (jone 1.203.196)) "1203196" -### ++jesc +

++jesc

Escape JSON character @@ -1661,7 +1661,7 @@ Produces a `++tape` of an escaped [`++json`]() character `a`. ~zod/try=> (jesc '"') "\"" -### ++scanf +

++scanf

Formatted scan @@ -1693,7 +1693,7 @@ collapses the result list to a tuple, such that (scanf "foo 1 2 bar" ~zod/try=> `@da`(year `date`dat(- [%& -.dat], |6 ~[(div (mul |6.dat (bex 16)) 1.000)])) ~2014.8.12..23.10.58..ee56 -### ++parsf +

++parsf

++ parsf :: make parser from: |^ |* a=(pole ,_:/(*$&(_rule tape))) :: ;"chars{rule}chars" @@ -1745,7 +1745,7 @@ more convenient list of discriminated tapes and rules. `bill` builds a parser out of rules and tapes, ignoring the literal sections and producing a list of the rules' results. -### ++taco +

++taco

++ taco :: atom to octstream |= tam=@ ^- octs @@ -1759,7 +1759,7 @@ An [octs] contains a length, to encode trailing zeroes. ~zod/try=> `@t`6.513.249 'abc' -### ++tact +

++tact

++ tact :: tape to octstream |= tep=tape ^- octs @@ -1773,7 +1773,7 @@ octs from tape ~zod/try=> `@t`6.513.249 'abc' -### ++tell +

++tell

++ tell :: wall to octstream |= wol=wall ^- octs @@ -1792,7 +1792,7 @@ octs from wall 3 ''' -### ++txml +

++txml

++ txml :: string to xml |= tep=tape ^- manx diff --git a/docs/pub/doc/hoon/library/3be.md b/docs/pub/doc/hoon/library/3be.md index 77b618c5b..c2326362c 100644 --- a/docs/pub/doc/hoon/library/3be.md +++ b/docs/pub/doc/hoon/library/3be.md @@ -1,7 +1,7 @@ section 3bE, tree sync ====================== -### ++invert-miso +

++invert-miso

++ invert-miso :: invert miso |= mis=miso @@ -14,7 +14,7 @@ section 3bE, tree sync XX document -### ++cosh +

++cosh

++ cosh :: locally rehash |= ank=ankh :: NB v/unix.c @@ -23,7 +23,7 @@ XX document XX document -### ++cost +

++cost

++ cost :: new external patch |= [bus=ankh ank=ankh] :: NB v/unix.c @@ -35,7 +35,7 @@ XX document XX document -### ++loth +

++loth

++ loth |= pat=(map path ,*) @@ -47,7 +47,7 @@ XX document XX document -### ++luth +

++luth

++ luth |= [p=(map path ,*) q=(map path ,*)] :: merge keysets @@ -57,7 +57,7 @@ XX document XX document -### ++blob-to-lobe +

++blob-to-lobe

++ blob-to-lobe :: p.blob |= p=blob @@ -71,20 +71,20 @@ XX document XX document -### ++ze +

++ze

++ ze |_ [lim=@da dome rang] XX document -### ++aeon-to-tako +

++aeon-to-tako

++ aeon-to-tako ~(got by hit) XX document -### ++make-yaki +

++make-yaki

++ make-yaki :: make yaki |= [p=(list tako) q=(map path lobe) t=@da] @@ -97,19 +97,19 @@ XX document XX document -### ++tako-to-yaki +

++tako-to-yaki

++ tako-to-yaki ~(got by hut) :: grab yaki XX document -### ++lobe-to-blob +

++lobe-to-blob

++ lobe-to-blob ~(got by lat) :: grab blob XX document -### ++lobe-to-noun +

++lobe-to-noun

++ lobe-to-noun :: grab blob |= p=lobe :: ^- * @@ -119,7 +119,7 @@ XX document XX document -### ++make-direct +

++make-direct

++ make-direct :: make blob |= [p=* q=umph] @@ -129,7 +129,7 @@ XX document XX document -### ++make-delta +

++make-delta

++ make-delta :: make blob delta |= [p=lobe q=udon] @@ -144,7 +144,7 @@ XX document XX document -### ++blob-to-umph +

++blob-to-umph

++ blob-to-umph :: blob umph [prep] |= p=blob :: used in merge @@ -158,7 +158,7 @@ XX document XX document -### ++blob-to-noun +

++blob-to-noun

++ blob-to-noun :: grab blob |= p=blob @@ -173,7 +173,7 @@ XX document XX document -### ++diff-yakis +

++diff-yakis

++ diff-yakis :: fundamental diff |= [p=yaki q=yaki] @@ -198,7 +198,7 @@ XX document XX document -### ++lobes-at-path +

++lobes-at-path

++ lobes-at-path :: lobes-at-path:ze |= [oan=aeon pax=path] :: data at path @@ -222,7 +222,7 @@ XX document XX document -### ++case-to-aeon +

++case-to-aeon

++ case-to-aeon :: case-to-aeon:ze |= lok=case :: act count through @@ -247,7 +247,7 @@ XX document XX document -### ++as-arch +

++as-arch

++ as-arch :: as-arch:ze ^- arch :: arch report @@ -260,7 +260,7 @@ XX document XX document -### ++reachable-takos +

++reachable-takos

++ reachable-takos :: reachable |= p=tako :: XX slow @@ -276,7 +276,7 @@ XX document XX document -### ++new-lobes +

++new-lobes

++ new-lobes :: object hash set |= [b=(set lobe) a=(set tako)] :: that aren't in b @@ -300,7 +300,7 @@ XX document XX document -### ++new-lobes-takos +

++new-lobes-takos

++ new-lobes-takos :: garg & repack |= [b=(set lobe) a=(set tako)] @@ -310,7 +310,7 @@ XX document XX document -### ++reachable-between-takos +

++reachable-between-takos

++ reachable-between-takos |= [a=(unit tako) b=tako] :: pack a through b @@ -337,7 +337,7 @@ XX document XX document -### ++takos-to-yakis +

++takos-to-yakis

++ takos-to-yakis :: trivial |= a=(set tako) @@ -347,7 +347,7 @@ XX document XX document -### ++lobes-to-blobs +

++lobes-to-blobs

++ lobes-to-blobs :: trivial |= a=(set lobe) @@ -357,7 +357,7 @@ XX document XX document -### ++make-nako +

++make-nako

++ make-nako :: gack a through b |= [a=aeon b=aeon] @@ -376,7 +376,7 @@ XX document XX document -### ++query +

++query

++ query :: query:ze |= ren=?(%u %v %x %y %z) :: endpoint query @@ -392,7 +392,7 @@ XX document XX document -### ++rewind +

++rewind

++ rewind :: rewind:ze |= oan=aeon :: rewind to aeon @@ -405,7 +405,7 @@ XX document XX document -### ++update-lat +

++update-lat

++ update-lat :: update-lat:ze |= [lag=(map path blob) sta=(map lobe blob)] :: fix lat @@ -420,7 +420,7 @@ XX document XX document -### ++apply-changes +

++apply-changes

++ apply-changes :: apply-changes:ze |= lar=(list ,[p=path q=miso]) :: store changes @@ -463,7 +463,7 @@ XX document XX document -### ++checkout-ankh +

++checkout-ankh

++ checkout-ankh :: checkout-ankh:ze |= hat=(map path lobe) :: checkout commit @@ -485,7 +485,7 @@ XX document XX document -### ++forge-yaki +

++forge-yaki

++ forge-yaki :: forge-yaki:ze |= [wen=@da par=(unit tako) lem=soba] :: forge yaki @@ -499,7 +499,7 @@ XX document XX document -### ++forge-nori +

++forge-nori

++ forge-nori :: forge-nori:ze |= yak=yaki :: forge nori (ugly op) @@ -513,7 +513,7 @@ XX document XX document -### ++reduce-merge-points +

++reduce-merge-points

++ reduce-merge-points :: reduce merge points |= unk=(set yaki) :: maybe need jet @@ -539,7 +539,7 @@ XX document XX document -### ++future-find-merge-points +

++future-find-merge-points

++ future-find-merge-points :: merge points fast |= [p=yaki q=yaki] :: (future zeal) @@ -566,7 +566,7 @@ XX document XX document -### ++add-parents +

++add-parents

++ add-parents :: expand set |= qez=(set tako) @@ -579,7 +579,7 @@ XX document XX document -### ++find-merge-points +

++find-merge-points

++ find-merge-points :: merge points |= [p=yaki q=yaki] :: maybe need jet @@ -599,7 +599,7 @@ XX document XX document -### ++clean +

++clean

++ clean :: clean |= wig=(urge) @@ -617,7 +617,7 @@ XX document XX document -### ++match-conflict +

++match-conflict

++ match-conflict :: match conflict |= [us=[ship desk] th=[ship desk] p=(urge) q=(urge) r=(list)] @@ -634,7 +634,7 @@ XX document XX document -### ++annotate +

++annotate

++ annotate :: annotate conflict |= [us=[ship desk] th=[ship desk] p=(list ,@t) q=(list ,@t) r=(list ,@t)] @@ -665,7 +665,7 @@ XX document XX document -### ++match-merge +

++match-merge

++ match-merge :: match merge |= [p=(urge ,@t) q=(urge ,@t) r=(list ,@t)] :: resolve conflict @@ -734,7 +734,7 @@ XX document XX document -### ++qeal +

++qeal

++ qeal :: merge p,q |* [us=[ship desk] th=[ship desk] pat=path p=miso q=miso r=(list) con=?] @@ -798,7 +798,7 @@ XX document XX document -### ++quil +

++quil

++ quil :: merge p,q |= $: us=[ship desk] @@ -836,7 +836,7 @@ XX document XX document -### ++meld +

++meld

++ meld :: merge p,q from r |= [p=yaki q=yaki r=yaki con=? us=[ship desk] th=[ship desk]] @@ -887,7 +887,7 @@ XX document XX document -### ++mate +

++mate

++ mate :: merge p,q |= con=? :: %mate, %meld @@ -903,7 +903,7 @@ XX document XX document -### ++keep +

++keep

++ keep :: %this |= [p=yaki q=yaki [ship desk] [ship desk]] @@ -916,7 +916,7 @@ XX document XX document -### ++drop +

++drop

++ drop :: %that |= [p=yaki q=yaki r=[ship desk] s=[ship desk]] @@ -926,7 +926,7 @@ XX document XX document -### ++forge +

++forge

++ forge :: %forge |= [p=yaki q=yaki s=[ship desk] t=[ship desk]] @@ -960,7 +960,7 @@ XX document XX document -### ++merge +

++merge

++ merge |= [us=[ship desk] th=[ship desk]] @@ -978,7 +978,7 @@ XX document XX document -### ++strategy +

++strategy

++ strategy :: merge strategy |= gem=?(%meld %mate %that %this) @@ -992,7 +992,7 @@ XX document XX document -### ++construct-merge +

++construct-merge

++ construct-merge :: construct-merge:ze |= [gem=germ who=ship des=desk sab=saba now=@da] :: construct merge @@ -1040,7 +1040,7 @@ XX document XX document -### ++read +

++read

++ read :: read:ze |= mun=mood :: read at point @@ -1061,7 +1061,7 @@ XX document XX document -### ++read-at-aeon +

++read-at-aeon

++ read-at-aeon :: read-at-aeon:ze |= [oan=aeon mun=mood] :: seek and read @@ -1073,7 +1073,7 @@ XX document XX document -### ++equiv +

++equiv

++ equiv :: test paths |= [p=(map path lobe) q=(map path lobe)] @@ -1096,7 +1096,7 @@ XX document XX document -### ++edit +

++edit

++ edit :: edit:ze |= [wen=@da lem=nori] :: edit @@ -1126,7 +1126,7 @@ XX document XX document -### ++zu +

++zu

++ zu :: filesystem |= ank=ankh :: filesystem state @@ -1136,7 +1136,7 @@ XX document XX document -### ++rehash +

++rehash

++ rehash :: local rehash ^- cash @@ -1153,13 +1153,13 @@ XX document XX document -### ++update-hash +

++update-hash

++ update-hash %_(. p.ank rehash) :: rehash and save XX document -### ++ascend +

++ascend

++ ascend :: ascend |= [lol=@ta kan=ankh] @@ -1177,7 +1177,7 @@ XX document XX document -### ++push-change +

++push-change

++ push-change :: add change |= mis=miso @@ -1187,7 +1187,7 @@ XX document XX document -### ++descend +

++descend

++ descend :: descend |= lol=@ta @@ -1198,7 +1198,7 @@ XX document XX document -### ++descend-path +

++descend-path

++ descend-path :: descend recursively |= way=path @@ -1208,7 +1208,7 @@ XX document XX document -### ++overwrite +

++overwrite

++ overwrite :: write over |= [pum=umph val=(unit ,[p=cash q=*])] @@ -1224,7 +1224,7 @@ XX document XX document -### ++change-tree +

++change-tree

++ change-tree :: modify tree |= [pum=umph bus=ankh] @@ -1243,7 +1243,7 @@ XX document XX document -### ++rm-r +

++rm-r

++ rm-r :: rm -r |- ^+ + @@ -1257,7 +1257,7 @@ XX document XX document -### ++drum +

++drum

++ drum :: apply effect |= [pax=path mis=miso] :: XX unused (++dune) @@ -1285,7 +1285,7 @@ XX document XX document -### ++dune +

++dune

++ dune :: apply |- ^+ + :: XX unused (++durn) @@ -1296,7 +1296,7 @@ XX document XX document -### ++durn +

++durn

++ durn :: apply forward |= nyp=soba :: XX unused diff --git a/docs/pub/doc/hoon/library/3bf.md b/docs/pub/doc/hoon/library/3bf.md index 08dc32e5f..37d004239 100644 --- a/docs/pub/doc/hoon/library/3bf.md +++ b/docs/pub/doc/hoon/library/3bf.md @@ -1,7 +1,7 @@ section 3bF, filesystem interface ================================= -### ++feel +

++feel

Generate file diff @@ -33,7 +33,7 @@ Generates a diff between a file located at `pax` and an input value ~zod/try=> `@t`272.335.332.724 'tesh?' -### ++file +

++file

Simple file load @@ -62,7 +62,7 @@ Reads the value of a file located at `pax` and renders it as a ~zod/try=/zak> (file /==2%/mop) ~ -### ++foal +

++foal

Write high-level change @@ -90,7 +90,7 @@ at `pax`. Handled by `%clay`. ~zod/try=> (feel %/mek 'b') [%mut p=[p=%a q=[%a p=97 q=98]]] -### ++fray +

++fray

High-level delete @@ -113,7 +113,7 @@ Handled by `%clay`. ~zod/try=> `@t`97 'a' -### ++furl +

++furl

Unify changes @@ -148,7 +148,7 @@ and pointed at the same [`++path`](). ] ] -### ++meat +

++meat

Kite to .\^ path @@ -181,7 +181,7 @@ Converts a type request name to a [`++path`](). ''' -### ++tame +

++tame

Parse kite path @@ -220,7 +220,7 @@ Parses a clay [.\^]() ~zod/try=/zop> (tame /~zod/main/0x12/sur/down/gate/hook) ~ -### ++tome +

++tome

Parse path to beam @@ -249,7 +249,7 @@ Parses a [`++path`]() `pax` to a [\`++beam](), a well-typed location. ~zod/try=/zop> (tome /~zod/main/0x12) ~ -### ++tope :: beam to path +

++tope :: beam to path

Parse beam to path diff --git a/docs/pub/doc/hoon/library/3bg.md b/docs/pub/doc/hoon/library/3bg.md index 04f56fc2c..63225fbce 100644 --- a/docs/pub/doc/hoon/library/3bg.md +++ b/docs/pub/doc/hoon/library/3bg.md @@ -1,7 +1,7 @@ section 3bG, URL handling ========================= -### ++deft +

++deft

Import URL path @@ -34,7 +34,7 @@ either by a `.` or a `/`. ~zod/try=> (deft /foo/bar/baz) [p=~ q=<|foo bar baz|>] -### ++fain +

++fain

Restructure path @@ -73,7 +73,7 @@ Splits a concrete q=/._req_1234__ ] -### ++fuel +

++fuel

Parse fcgi @@ -135,7 +135,7 @@ Retrieieves the %eyre FCGI, producing a [`++epic`](). Used primarily in nyp=/gen ] -### ++sifo +

++sifo

64-bit encode @@ -164,7 +164,7 @@ Encodes an atom to MIME base64, producing a [`++tape`](). ~zod/main=> (sifo (shax %hi)) "j0NDRmSPa5bfid2pAcUXaxCm2Dlh3TwayItZstwyeqQ=" -### ++urle +

++urle

Encode URL @@ -198,7 +198,7 @@ escape sequences. ~zod/main=> (urle "hello-my?=me !") "hello-my%3F%3Dme%20%20%21" -### ++urld +

++urld

Decode URL @@ -231,7 +231,7 @@ The inverse of [`++urle`](). Parses a URL escaped tape to the ~zod/main=> (urld "hello-my%3F%3Dme%20%2%21") ~ -### ++earl +

++earl

Localize purl @@ -256,7 +256,7 @@ Prepends a ship name to the spur of a [`++purl`](). ~zod/main=> (earn (earl ~pittyp (need (epur 'http://123.1.1.1/me.ham')))) "http://123.1.1.1/pittyp/me" -### ++earn +

++earn

Purl to tape @@ -287,7 +287,7 @@ Parses a `++purl` `pul` to a [`++tape`](). ~zod/main=> (earn [& ~ `/com/google/www] [~ /search] [%q 'urbit escaping?'] ~) "https://www.google.com/search?q=urbit%20escaping%3F" -### ++body +

++body

Render URL path @@ -311,7 +311,7 @@ Renders URL path `pok` as a [`++tape`](). ~zod/main=> (body:earn `%htm /) "" -### ++head +

++head

Render URL beginning @@ -344,7 +344,7 @@ of a traditional URL. ~zod/main=> (head:earn & [~ 8.080] %& /com/google/www) "https://www.google.com:8080" -### ++tail +

++tail

Render query string @@ -376,7 +376,7 @@ traditional query string. ~zod/main=> (tail:earn [%ask 'bid'] [%make 'well'] ~) "?ask=bid&make=well" -### ++epur +

++epur

Top-level URL parser @@ -428,7 +428,7 @@ Toplevel URL parser. ] ] -### ++apat +

++apat

++ apat :: 2396 abs_path %+ cook deft @@ -441,7 +441,7 @@ URL path as ++pork ~zod/try=> (scan "/foo/mol/lok.htm" apat:epur) [p=[~ ~.htm] q=<|foo mol lok|>] -### ++auri +

++auri

++ auri %+ cook @@ -546,7 +546,7 @@ URL parsing rule ] ] -### ++cock +

++cock

++ cock :: cookie (most ;~(plug sem ace) ;~(plug toke ;~(pfix tis tosk))) @@ -561,7 +561,7 @@ HTTP cookies, results in associative list of cord to cord. ! {1 34} ! exit -### ++dlab +

++dlab

++ dlab :: 2396 domainlabel %+ sear @@ -583,7 +583,7 @@ Domain label: alphanumeric, with `-` allowed in middle. ! {1 8} ! exit -### ++fque +

++fque

++ fque (cook crip (plus pquo)) :: normal query field @@ -601,7 +601,7 @@ One or more query string characters ! {1 1} ! exit -### ++fquu +

++fquu

++ fquu (cook crip (star pquo)) :: optional field @@ -618,7 +618,7 @@ Zero or more query string characters ~zod/try=> (scan "" fquu:epur) '' -### ++pcar +

++pcar

++ pcar ;~(pose pure pesc psub col pat) :: 2396 path char @@ -639,7 +639,7 @@ or `@` ~zod/try=> (scan "!" pcar:epur) ~~~21. -### ++pcok +

++pcok

++ pcok ;~(less bas sem com doq prn) :: cookie char @@ -656,7 +656,7 @@ Cookie character ! {1 2} ! exit -### ++pesc +

++pesc

++ pesc ;~(pfix cen mes) :: 2396 escaped @@ -667,7 +667,7 @@ URL `%` escape, by two hex characters. ~zod/try=> `@t`(scan "%20" pesc:epur) ' ' -### ++pold +

++pold

++ pold (cold ' ' (just '+')) :: old space code @@ -679,7 +679,7 @@ Old URL `' '` escape ! {1 1} ! exit -### ++pque +

++pque

++ pque ;~(pose pcar fas wut) :: 3986 query char @@ -694,7 +694,7 @@ Irregular query string character. ~zod/try=> `@t`(scan "+" pque:epur) '+' -### ++pquo +

++pquo

++ pquo ;~(pose pure pesc pold) :: normal query char @@ -712,7 +712,7 @@ Character in query string key/value ~zod/try=> (scan "+" pquo:epur) ' ' -### ++pure +

++pure

++ pure ;~(pose aln hep dot cab sig) :: 2396 unreserved @@ -728,7 +728,7 @@ URL-safe character ~zod/try=> (scan "-" pure:epur) ~~- -### ++psub +

++psub

++ psub ;~ pose :: 3986 sub-delims zap buc pam soq pel per @@ -747,7 +747,7 @@ URL path subdelimeter ! {1 1} ! exit -### ++ptok +

++ptok

++ ptok ;~ pose :: 2616 token aln zap hax buc cen pam soq tar lus @@ -761,7 +761,7 @@ Character valid in HTTP token ~zod/try=> `tape`(skim =+(a=' ' |-(`tape`?:(=(0x7f a) ~ [a $(a +(a))]))) |=(a=char ?=(~ (rush a ptok:epur)))) " "(),/:;<=>?@[\]{}" -### ++scem +

++scem

++ scem :: 2396 scheme %+ cook cass @@ -778,7 +778,7 @@ alphanumeric, `+` `-` or `.` ~zod/try=> `@t`(scan "chrome-extension" scem:epur) 'chrome-extension' -### ++smeg +

++smeg

++ smeg (cook crip (plus pcar)) :: 2396 segment @@ -789,7 +789,7 @@ URL path segment ~zod/try=> (scan "bar%20baz-bam" smeg:epur) 'bar baz-bam' -### ++tock +

++tock

++ tock (cook crip (plus pcok)) :: 6265 cookie-value @@ -804,7 +804,7 @@ HTTP cookie value ~zod/try=> (rush '"zemug"' tock:epur) ~ -### ++tosk +

++tosk

++ tosk ;~(pose tock (ifix [doq doq] tock)) :: 6265 cookie-value @@ -819,7 +819,7 @@ Possibly quoted HTTP cookie value ~zod/try=> (rush '"zemug"' tosk:epur) [~ 'zemug'] -### ++toke +

++toke

++ toke (cook crip (plus ptok)) :: 2616 token @@ -834,7 +834,7 @@ HTTP cookie name ~zod/try=> (rush '"zemug"' toke:epur) ~ -### ++thor +

++thor

++ thor :: 2396 host/port %+ cook |*(a=[* *] [+.a -.a]) @@ -854,7 +854,7 @@ Parse ++host and unit `@ui` port. ~zod/try=> (scan "www.google.com" thor:epur) [~ [%.y i='com' t=~['google' 'www']]] -### ++thos +

++thos

++ thos :: 2396 host, no local ;~ plug @@ -887,7 +887,7 @@ URI host: dot-separated segments, or IP address. ~zod/try=> (scan "www.google.com" thos:epur) [%.y i='com' t=~['google' 'www']] -### ++yque +

++yque

++ yque :: query ending ;~ pose @@ -904,7 +904,7 @@ Parses query string, or lack thereof. Result type ++quay ~zod/try=> (scan "" yque:epur) ~ -### ++yquy +

++yquy

++ yquy :: query ;~ pose :: proper query @@ -926,7 +926,7 @@ Parse query string after `?` ~zod/try=> (scan "" yquy:epur) ~ -### ++zest +

++zest

++ zest :: 2616 request-uri ;~ pose diff --git a/docs/pub/doc/hoon/library/3bh.md b/docs/pub/doc/hoon/library/3bh.md index e338e6746..c8a10547b 100644 --- a/docs/pub/doc/hoon/library/3bh.md +++ b/docs/pub/doc/hoon/library/3bh.md @@ -1,7 +1,7 @@ section 3bH, names etc ====================== -### ++clan +

++clan

++ clan :: ship to rank |= who=ship ^- rank @@ -24,7 +24,7 @@ Ship class ~zod/main=> (clan ~tasfyn-partyv) %duke -### ++glam +

++glam

++ glam |= zar=@pD ^- tape @@ -94,7 +94,7 @@ Retrieve carrier name. ~zod/main=> (glam ~fyr) "Bolivar" -### ++glon +

++glon

++ glon |= lag=lang @@ -296,7 +296,7 @@ ISO language code ~zod/main=> (glon %mz) ~ -### ++gnom +

++gnom

++ gnom :: ship display name |= [[our=@p now=@da] him=@p] ^- @t @@ -316,7 +316,7 @@ Fetch display name from %ames ~zod/main=> (gnom [->-< -<-] ~tug) '~tug |Go-Daigo|' -### ++gnow +

++gnow

++ gnow |= [who=@p gos=gcos] ^- @t @@ -348,7 +348,7 @@ Fetch display name from %ames XX Document -### ++hunt +

++hunt

++ hunt :: first of unit dates |= [one=(unit ,@da) two=(unit ,@da)] @@ -360,7 +360,7 @@ XX Document XX Document -### ++mojo +

++mojo

++ mojo :: compiling load |= [pax=path src=*] @@ -381,7 +381,7 @@ XX Document XX Document -### ++mole +

++mole

++ mole :: new to old sky |= ska=$+(* (unit (unit))) @@ -395,7 +395,7 @@ XX Document XX Document -### ++much +

++much

++ much :: constructing load |= [pax=path src=*] @@ -407,7 +407,7 @@ XX Document XX Document -### ++musk +

++musk

++ musk :: compiling apply |= [pax=path src=* sam=vase] @@ -419,7 +419,7 @@ XX Document XX Document -### ++saxo +

++saxo

++ saxo :: autocanon |= who=ship @@ -437,7 +437,7 @@ Compute list of ancestors ~zod/main=> (saxo ~ractul-fodsug-sibryg-modsyl--difrun-mirfun-filrec-patmet) ~[~ractul-fodsug-sibryg-modsyl--difrun-mirfun-filrec-patmet ~zod] -### ++sein +

++sein

++ sein :: autoboss |= who=ship ^- ship diff --git a/docs/pub/doc/hoon/library/3bi.md b/docs/pub/doc/hoon/library/3bi.md index 2164d0a4a..fc9f628b3 100644 --- a/docs/pub/doc/hoon/library/3bi.md +++ b/docs/pub/doc/hoon/library/3bi.md @@ -1,7 +1,7 @@ section 3bI, Arvo models ======================== -### ++acru +

++acru

++ acru :: asym cryptosuite $_ ^? |% :: opaque object @@ -15,14 +15,14 @@ Cryptosuite interface, see %ames documentation ~zod/main=> *acru <6?guc 243.nxm 41.spz 374.iqw 100.rip 1.ypj %164> -### ++as +

++as

++ as ^? :: asym ops |% ++ seal |=([a=pass b=@ c=@] _@) :: encrypt to a XX document -### ++seal +

++seal

++ seal :: auth conversation $: whu=(unit ship) :: client identity @@ -34,51 +34,51 @@ XX document XX document -### ++sign +

++sign

++ sign |=([a=@ b=@] _@) :: certify as us XX document -### ++sure +

++sure

++ sure |=([a=@ b=@] *(unit ,@)) :: authenticate from us XX document -### ++tear +

++tear

++ tear |= [a=pass b=@] :: accept from a *(unit ,[p=@ q=@]) :: XX document -### ++de +

++de

++ de |+([a=@ b=@] *(unit ,@)) :: symmetric de, soft XX document -### ++dy +

++dy

++ dy |+([a=@ b=@] _@) :: symmetric de, hard XX document -### ++en +

++en

++ en |+([a=@ b=@] _@) :: symmetric en XX document -### ++ex +

++ex

++ ex ^? :: export |% ++ fig _@uvH :: fingerprint XX document -### ++fig +

++fig

XX document @@ -120,25 +120,25 @@ XX document XX document -### ++nol +

++nol

++ nol |=(a=@ ^?(..nu)) :: from naked ring XX document -### ++com +

++com

++ com |=(a=@ ^?(..nu)) :: from naked pass XX document -### ++aeon +

++aeon

++ aeon ,@ud :: Clay revision number -### ++agon +

++agon

++ agon (map ,[p=ship q=desk] ,[p=@ud q=@ud r=waks]) :: mergepts @@ -147,7 +147,7 @@ See %clay doc ~zod/main=> *agon {} -### ++ankh +

++ankh

++ ankh :: fs node (new) $: p=cash :: recursive hash @@ -159,19 +159,19 @@ State at path See also ++ze, %clay documentation -### ++ankz +

++ankz

++ ankz ,[p=@ (map ,@ta ankz)] :: trimmed ankh XX document -### ++apex +

++apex

++ apex ,[p=@uvI q=(map ,@ta ,@uvI) r=(map ,@ta ,~)] :: node report (old) XX document -### ++ares +

++ares

++ ares (unit ,[p=term q=(list tank)]) :: possible error @@ -183,19 +183,19 @@ Failure cause: unknown, or machine-readable term and stack trace. [~ [p=%syntax-error q=~[[%leaf p="[1 27]"]]]] ~zod/main=> -### ++ball +

++ball

++ ball ,@uw :: statement payload XX document -### ++bait +

++bait

++ bait ,[p=skin q=@ud r=dove] :: fmt nrecvd spec XX document -### ++bath +

++bath

++ bath :: convo per client $: sop=shed :: not stalled @@ -205,7 +205,7 @@ XX document XX document -### ++beam +

++beam

++ beam ,[[p=ship q=desk r=case] s=path] :: global name @@ -214,13 +214,13 @@ See section 2dF, %clay documentation ~zod/try=> (need (tome %/bin)) [[p=~zod q=%try r=[%da p=~2014.11.3..17.30.07..ca8f]] s=/bin] -### ++beak +

++beak

++ beak ,[p=ship q=desk r=case] :: garnish with beak Global root -### ++bird +

++bird

++ bird :: packet in travel $: gom=soap :: message identity @@ -232,7 +232,7 @@ Global root XX document -### ++blob +

++blob

++ blob $% [%delta p=lobe q=lobe r=udon] :: delta on q [%direct p=lobe q=* r=umph] :: @@ -241,13 +241,13 @@ XX document Stored data, see ++ze -### ++boat +

++boat

++ boat ,[(list slip) tart] :: user stage XX deprecated -### ++boon +

++boon

++ boon :: fort output $% [%beer p=ship q=@uvG] :: gained ownership @@ -262,37 +262,37 @@ XX deprecated See %ford documentation -### ++bowl +

++bowl

++ bowl ,[p=(list gift) q=(unit boat)] :: app product XX deprecated -### ++bray +

++bray

++ bray ,[p=life q=(unit life) r=ship s=@da] :: our parent us now Ship identity. See %ames documentation -### ++brow +

++brow

++ brow ,[p=@da q=@tas] :: browser version XX unused? -### ++buck +

++buck

++ buck ,[p=mace q=will] :: all security data XX document -### ++cake +

++cake

++ cake ,[p=sock q=skin r=@] :: top level packet XX document -### ++cape +

++cape

++ cape :: end-to-end result $? %good :: delivered @@ -301,19 +301,19 @@ XX document XX document -### ++cart +

++cart

++ cart ,[p=cash q=cash] :: hash change XX document -### ++care +

++care

++ care ?(%u %v %w %x %y %z) :: clay submode XX document -### ++case +

++case

++ case :: ship desk case spur $% [%da p=@da] :: date @@ -324,19 +324,19 @@ XX document Access by absolute date, term label, or revision number. See %clay documentation -### ++cash +

++cash

++ cash ,@uvH :: ankh hash XX document -### ++chum +

++chum

++ chum ,@uvI :: hashed passcode XX document -### ++clot +

++clot

++ clot :: symmetric record $: yed=(unit ,[p=hand q=code]) :: outbound @@ -346,19 +346,19 @@ XX document XX document -### ++coal +

++coal

++ coal ,* :: untyped vase XX document -### ++code +

++code

++ code ,@uvI :: symmetric key XX document -### ++cone +

++cone

++ cone :: reconfiguration $% [& p=twig] :: transform @@ -367,13 +367,13 @@ XX document XX document -### ++chum +

++chum

++ chum ,@uvI :: hashed passcode XX document -### ++claw +

++claw

++ claw :: startup chain $: joy=(unit coal) :: local context @@ -386,7 +386,7 @@ XX document XX document -### ++clip +

++clip

++ clip (each ,@if ,@is) :: client IP @@ -400,19 +400,19 @@ See %eyre documentation. ! type-fail ! exit -### ++coal +

++coal

++ coal ,* :: untyped vase XX document -### ++code +

++code

++ code ,@uvI :: symmetric key XX document -### ++cone +

++cone

++ cone :: reconfiguration $% [& p=twig] :: transform @@ -421,13 +421,13 @@ XX document XX document -### ++coop +

++coop

++ coop (unit ares) :: e2e ack XX document -### ++corn +

++corn

++ corn :: flow by server $: hen=duct :: admin channel @@ -438,7 +438,7 @@ XX document XX document -### ++cred +

++cred

++ cred :: credential $: hut=hoot :: client host @@ -451,7 +451,7 @@ XX document XX document -### ++cuff +

++cuff

++ cuff :: permissions $: p=(unit (set monk)) :: readers @@ -460,13 +460,13 @@ XX document XX document -### ++deed +

++deed

++ deed ,[p=@ q=step r=?] :: sig, stage, fake? XX document -### ++dome +

++dome

++ dome :: project state $: ang=agon :: pedigree @@ -478,7 +478,7 @@ XX document XX document -### ++dore +

++dore

++ dore :: foreign contact $: wod=road :: connection to @@ -488,13 +488,13 @@ XX document XX document -### ++dove +

++dove

++ dove ,[p=@ud q=(map ,@ud ,@)] :: count hash 13-blocks XX document -### ++epic +

++epic

++ epic :: FCGI parameters $: qix=(map ,@t ,@t) :: query @@ -506,13 +506,13 @@ XX document XX document -### ++flap +

++flap

++ flap ,@uvH :: network packet id XX document -### ++flow +

++flow

++ flow :: packet connection $: rtt=@dr :: decaying avg rtt @@ -521,7 +521,7 @@ XX document XX document -### ++fort +

++fort

++ fort :: formal state $: %0 :: version @@ -533,19 +533,19 @@ XX document XX document -### ++frog +

++frog

++ frog ,[p=@da q=nori] :: time and change XX document -### ++gank +

++gank

++ gank (each vase (list tank)) :: abstract result XX document -### ++gift +

++gift

++ gift :: one-way effect $% [%$ p=vase] :: trivial output @@ -581,7 +581,7 @@ XX document XX document -### ++zang +

++zang

++ zang :: XX evil hack $% [%backlog p=path q=?(%da %dr %ud) r=@] :: @@ -597,25 +597,25 @@ XX document XX document -### ++gilt +

++gilt

++ gilt ,[@tas *] :: presumed gift XX document -### ++gens +

++gens

++ gens ,[p=lang q=gcos] :: general identity XX document -### ++germ +

++germ

++ germ ?(%init %fine %that %this %mate %meld) :: merge style XX document -### ++gcos +

++gcos

++ gcos :: id description $% [%czar ~] :: 8-bit ship @@ -627,7 +627,7 @@ XX document XX document -### ++goad +

++goad

++ goad :: common note $% [%eg p=riot] :: simple result @@ -645,7 +645,7 @@ XX document XX document -### ++goal +

++goal

++ goal :: app request $% [%$ p=type] :: open for input @@ -664,73 +664,73 @@ XX document XX document -### ++govt +

++govt

++ govt path :: country/postcode XX document -### ++hand +

++hand

++ hand ,@uvH :: hash of code XX document -### ++hart +

++hart

++ hart ,[p=? q=(unit ,@ud) r=host] :: http sec/port/host XX document -### ++hate +

++hate

++ hate ,[p=purl q=@p r=moth] :: semi-cooked request XX document -### ++heir +

++heir

++ heir ,[p=@ud q=mess r=(unit love)] :: status/headers/data XX document -### ++hiss +

++hiss

++ hiss ,[p=purl q=moth] :: outbound request XX document -### ++hist +

++hist

++ hist ,[p=@ud q=(list ,@t)] :: depth texts XX document -### ++hole +

++hole

++ hole ,@t :: session identity XX document -### ++hoot +

++hoot

++ hoot ,[p=? q=(unit ,@ud) r=host] :: secure/port/host XX document -### ++hort +

++hort

++ hort ,[p=(unit ,@ud) q=host] :: http port/host XX document -### ++host +

++host

++ host $%([& p=(list ,@t)] [| p=@if]) :: http host XX document -### ++httq +

++httq

++ httq :: raw http request $: p=meth :: method @@ -741,13 +741,13 @@ XX document XX document -### ++httr +

++httr

++ httr ,[p=@ud q=mess r=(unit octs)] :: raw http response XX document -### ++httx +

++httx

++ httx :: encapsulated http $: p=? :: https? @@ -757,13 +757,13 @@ XX document XX document -### ++kite +

++kite

++ kite ,[p=care q=case r=ship s=desk t=spur] :: parsed global name XX document -### ++json +

++json

++ json :: normal json value $| ~ :: null @@ -776,7 +776,7 @@ XX document XX document -### ++jsot +

++jsot

++ jsot :: strict json top $% [%a p=(list json)] :: array @@ -785,7 +785,7 @@ XX document XX document -### ++lamb +

++lamb

++ lamb :: short path $% [& p=@tas] :: auto @@ -794,7 +794,7 @@ XX document XX document -### ++lane +

++lane

++ lane :: packet route $% [%if p=@da q=@ud r=@if] :: IP4/public UDP/addr @@ -804,25 +804,25 @@ XX document XX document -### ++lang +

++lang

++ lang ,@ta :: IETF lang as code XX document -### ++lark +

++lark

++ lark ,[p=(unit ,@tas) q=lawn] :: parsed command XX document -### ++lass +

++lass

++ lass ?(%0 %1 %2) :: power increment XX document -### ++lath +

++lath

++ lath $% :: pipeline stage [%0 p=lass q=lamb r=(list cone) s=twig] :: command @@ -832,37 +832,37 @@ XX document XX document -### ++lawn +

++lawn

++ lawn (list lath) :: XX document -### ++lice +

++lice

++ lice ,[p=ship q=buck] :: full license XX document -### ++life +

++life

++ life ,@ud :: regime number XX document -### ++lint +

++lint

++ lint (list rock) :: fragment array XX document -### ++lobe +

++lobe

++ lobe ,@ :: blob ref XX document -### ++love +

++love

++ love $% :: http response [%ham p=manx] :: html node @@ -874,37 +874,37 @@ XX document XX document -### ++luge +

++luge

++ luge ,[p=mark q=*] :: fully typed content XX document -### ++maki +

++maki

++ maki ,[p=@ta q=@ta r=@ta s=path] :: XX document -### ++mace +

++mace

++ mace (list ,[p=life q=ring]) :: private secrets XX document -### ++marv +

++marv

++ marv ?(%da %tas %ud) :: release form XX document -### ++math +

++math

++ math (map ,@t (list ,@t)) :: semiparsed headers XX document -### ++meal +

++meal

++ meal :: payload $% [%back p=cape q=flap r=@dr] :: acknowledgment @@ -917,13 +917,13 @@ XX document XX document -### ++mess +

++mess

++ mess (list ,[p=@t q=@t]) :: raw http headers XX document -### ++meta +

++meta

++ meta :: path metadata $% [& q=@uvI] :: hash @@ -932,7 +932,7 @@ XX document XX document -### ++meth +

++meth

++ meth :: http methods $? %conn :: CONNECT @@ -947,13 +947,13 @@ XX document XX document -### ++mite +

++mite

++ mite (list ,@ta) :: mime type XX document -### ++miso +

++miso

++ miso :: ankh delta $% [%del p=*] :: delete @@ -963,49 +963,49 @@ XX document XX document -### ++mizu +

++mizu

++ mizu ,[p=@u q=(map ,@ud tako) r=rang] :: new state XX document -### ++moar +

++moar

++ moar ,[p=@ud q=@ud] :: normal change range XX document -### ++moat +

++moat

++ moat ,[p=case q=case r=path] :: change range XX document -### ++mood +

++mood

++ mood ,[p=care q=case r=path] :: request in desk XX document -### ++moth +

++moth

++ moth ,[p=meth q=math r=(unit octs)] :: http operation XX document -### ++name +

++name

++ name ,[p=@t q=(unit ,@t) r=(unit ,@t) s=@t] :: first mid/nick last XX document -### ++newt +

++newt

++ newt ?(%boot %kick %mess %slay %wake) :: lifecycle events XX document -### ++nose +

++nose

++ nose :: response, kernel $? [%$ p=(unit ,[p=tutu q=(list)])] :: standard input @@ -1014,7 +1014,7 @@ XX document XX document -### ++note +

++note

++ note :: response, user $? [%$ p=(unit ,[p=type q=(list)])] :: standard input @@ -1024,7 +1024,7 @@ XX document XX document -### ++nori +

++nori

++ nori :: repository action $% [& q=soba] :: delta @@ -1033,73 +1033,73 @@ XX document XX document -### ++octs +

++octs

++ octs ,[p=@ud q=@] :: octet-stream XX document -### ++oryx +

++oryx

++ oryx ,@t :: CSRF secret XX document -### ++pact +

++pact

++ pact path :: routed path XX document -### ++pail +

++pail

++ pail ?(%none %warm %cold) :: connection status XX document -### ++plan +

++plan

++ plan (trel view (pair ,@da (unit ,@dr)) path) :: subscription XX document -### ++plea +

++plea

++ plea ,[p=@ud q=[p=? q=@t]] :: live prompt XX document -### ++pork +

++pork

++ pork ,[p=(unit ,@ta) q=(list ,@t)] :: fully parsed url XX document -### ++pred +

++pred

++ pred ,[p=@ta q=@tas r=@ta ~] :: proto-path XX document -### ++prod +

++prod

++ prod ,[p=prom q=tape r=tape] :: prompt XX document -### ++prom +

++prom

++ prom ?(%text %pass %none) :: format type XX document -### ++purl +

++purl

++ purl ,[p=hart q=pork r=quay] :: parsed url XX document -### ++putt +

++putt

++ putt :: outgoing message $: ski=snow :: sequence acked/sent @@ -1108,7 +1108,7 @@ XX document XX document -### ++pyre +

++pyre

++ pyre :: cascade stash $: p=(map ,[p=path q=path r=coal] coal) :: by path @@ -1118,13 +1118,13 @@ XX document XX document -### ++quay +

++quay

++ quay (list ,[p=@t q=@t]) :: parsed url query XX document -### ++quri +

++quri

++ quri :: request-uri $% [& p=purl] :: absolute @@ -1133,7 +1133,7 @@ XX document XX document -### ++race +

++race

++ race :: inbound stream $: did=@ud :: filled sequence @@ -1144,13 +1144,13 @@ XX document XX document -### ++rank +

++rank

++ rank ?(%czar %king %duke %earl %pawn) :: ship width class XX document -### ++rang +

++rang

++ rang $: hut=(map tako yaki) :: lat=(map lobe blob) :: @@ -1158,7 +1158,7 @@ XX document XX document -### ++rant +

++rant

++ rant :: namespace binding $: p=[p=care q=case r=@tas] :: clade release book @@ -1168,7 +1168,7 @@ XX document XX document -### ++rave +

++rave

++ rave :: general request $% [& p=mood] :: single request @@ -1177,7 +1177,7 @@ XX document XX document -### ++rill +

++rill

++ rill :: outbound stream $: sed=@ud :: sent @@ -1186,13 +1186,13 @@ XX document XX document -### ++riot +

++riot

++ riot (unit rant) :: response/complete XX document -### ++road +

++road

++ road :: secured oneway route $: exp=@da :: expiration date @@ -1202,37 +1202,37 @@ XX document XX document -### ++rock +

++rock

++ rock ,@uvO :: packet XX document -### ++rout +

++rout

++ rout ,[p=(list host) q=path r=oryx s=path] :: http route (new) XX document -### ++rump +

++rump

++ rump ,[p=care q=case r=@tas s=path] :: relative path XX document -### ++saba +

++saba

++ saba ,[p=ship q=@tas r=moar s=dome] :: patch/merge XX document -### ++sack +

++sack

++ sack ,[p=ship q=ship] :: incoming [our his] XX document -### ++sufi +

++sufi

++ sufi :: domestic host $: hoy=(list ship) :: hierarchy @@ -1244,13 +1244,13 @@ XX document XX document -### ++salt +

++salt

++ salt ,@uv :: entropy XX document -### ++seal +

++seal

++ seal :: auth conversation $: whu=(unit ship) :: client identity @@ -1262,13 +1262,13 @@ XX document XX document -### ++sect +

++sect

++ sect ?(%black %blue %red %orange %white) :: banner XX document -### ++shed +

++shed

++ shed :: packet flow $: $: rtt=@dr :: smoothed rtt @@ -1290,43 +1290,43 @@ XX document XX document -### ++skit +

++skit

++ skit ,[p=(unit ,@ta) q=(list ,@ta) r=(list ,@ta)] :: tracking path XX document -### ++skin +

++skin

++ skin ?(%none %open %fast %full) :: encoding stem XX document -### ++slip +

++slip

++ slip ,[p=path q=goal] :: traceable request XX document -### ++snow +

++snow

++ snow ,[p=@ud q=@ud r=(set ,@ud)] :: window exceptions XX document -### ++soap +

++soap

++ soap ,[p=[p=life q=life] q=path r=@ud] :: statement id XX document -### ++soup +

++soup

++ soup ,[p=path q=@ud] :: new statement id XX document -### ++soul +

++soul

++ soul :: packet in travel $: gom=soup :: message identity @@ -1338,61 +1338,61 @@ XX document XX document -### ++soba +

++soba

++ soba ,[p=cart q=(list ,[p=path q=miso])] :: delta XX document -### ++sock +

++sock

++ sock ,[p=ship q=ship] :: outgoing [from to] XX document -### ++spur +

++spur

++ spur path :: ship desk case spur XX document -### ++step +

++step

++ step ,[p=bray q=gens r=pass] :: identity stage XX document -### ++tako +

++tako

++ tako ,@ :: yaki ref XX document -### ++tart +

++tart

++ tart $+([@da path note] bowl) :: process core XX document -### ++taxi +

++taxi

++ taxi ,[p=lane q=rock] :: routed packet XX document -### ++tick +

++tick

++ tick ,@ud :: process id XX document -### ++toro +

++toro

++ toro ,[p=@ta q=nori] :: general change XX document -### ++town +

++town

++ town :: all security state $: lit=@ud :: imperial modulus @@ -1403,37 +1403,37 @@ XX document XX document -### ++tube +

++tube

++ tube ,[p=@ta q=@ta r=@ta s=path] :: canonical path XX document -### ++tutu +

++tutu

++ tutu ,* :: presumed type XX document -### ++yaki +

++yaki

++ yaki ,[p=(list tako) q=(map path lobe) r=tako t=@da] :: commit XX document -### ++view +

++view

++ view ?(%u %v %w %x %y %z) :: view mode XX document -### ++waks +

++waks

++ waks (map path woof) :: list file states XX document -### ++what +

++what

++ what :: logical identity $% [%anon ~] :: anonymous @@ -1444,38 +1444,38 @@ XX document XX document -### ++whom +

++whom

++ whom ,[p=@ud q=govt r=sect s=name] :: year/govt/id XX document -### ++woof +

++woof

++ woof $| %know :: udon transform [%chan (list $|(@ud [p=@ud q=@ud]))] :: XX document -### ++wund +

++wund

++ wund (list ,[p=life q=ring r=acru]) :: mace in action XX document -### ++will +

++will

++ will (list deed) :: certificate XX document -### ++worm +

++worm

++ worm ,* :: vase of tart XX document -### ++zuse +

++zuse

++ zuse %314 :: hoon/zuse kelvin -- From 8dc26c3eb67c85d1ac2165f816186d7487ce2734 Mon Sep 17 00:00:00 2001 From: Galen Wolfe-Pauly Date: Thu, 23 Apr 2015 13:43:47 -0700 Subject: [PATCH 64/89] working on links --- docs/pub/doc/hoon/library/2en.md | 2 +- docs/pub/doc/hoon/library/3bd.md | 12 ++++++------ docs/pub/doc/hoon/library/3bf.md | 2 +- docs/pub/doc/hoon/library/3bg.md | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/pub/doc/hoon/library/2en.md b/docs/pub/doc/hoon/library/2en.md index 0ce268089..6c8036277 100644 --- a/docs/pub/doc/hoon/library/2en.md +++ b/docs/pub/doc/hoon/library/2en.md @@ -139,7 +139,7 @@ Look up in 255 sub box (cut 3 [(dec a) 1] b) :: -The inverse of [`++zaft](). Looks up a nonzero byte`a\` in a substiution +The inverse of [`++zart`](). Looks up a nonzero byte`a\` in a substiution box with 255 values, producing a unique nonzero byte. `a` is an [atom]() of one byte in length. diff --git a/docs/pub/doc/hoon/library/3bd.md b/docs/pub/doc/hoon/library/3bd.md index 32330589d..1593acc85 100644 --- a/docs/pub/doc/hoon/library/3bd.md +++ b/docs/pub/doc/hoon/library/3bd.md @@ -438,9 +438,9 @@ Weld two tapes Concatenates two tapes, `a` and `b`, producing a `++tape`. -`a` is a [++tape](). +`a` is a [`++tape`](). -`b` is a [++tape](). +`b` is a [`++tape`](). ~zod/try=> (twel "sam" "hok"):poja ~[~~s ~~a ~~m ~~h ~~o ~~k] @@ -510,7 +510,7 @@ Print JSON == :: -Renders a `++json` `val` as a [++tape](). +Renders a `++json` `val` as a [`++tape`](). `val` is a [`json`](). @@ -566,7 +566,7 @@ Inner XML printer ?~(att rez [' ' (attr att rez)]) :: -Renders a `++manx` as a [`++tape](), appending a suffix`rez\`. +Renders a `++manx` as a [`++tape`](), appending a suffix `rez\`. `rez` is a [`++tape`](). @@ -1456,7 +1456,7 @@ Pole of nonempty units Determines if `pod` contains no empty units, producing a loobean. Used internally. -`pod` is a [`++pole`]() of [`++units`](). +`pod` is a [`++pole`]() of [`++unit`](). ~zod/try=> (za:jo ~[`1 `2 `3]) %.y @@ -1650,7 +1650,7 @@ Escape JSON character Produces a `++tape` of an escaped [`++json`]() character `a`. -`a` is an [`++atom`]() +`a` is an atom ~zod/try=> (jesc 'a') "a" diff --git a/docs/pub/doc/hoon/library/3bf.md b/docs/pub/doc/hoon/library/3bf.md index 37d004239..5a6bad7f0 100644 --- a/docs/pub/doc/hoon/library/3bf.md +++ b/docs/pub/doc/hoon/library/3bf.md @@ -209,7 +209,7 @@ Parse kite path :: Parses a clay [.\^]() -[`++path]()to request details. Produces the [`++unit`]() of a [`++kite\`](). +[`++path` ]()to request details. Produces the [`++unit`]() of a [`++kite`](). `hap` is a [`++path`](). diff --git a/docs/pub/doc/hoon/library/3bg.md b/docs/pub/doc/hoon/library/3bg.md index 63225fbce..d2d90f5aa 100644 --- a/docs/pub/doc/hoon/library/3bg.md +++ b/docs/pub/doc/hoon/library/3bg.md @@ -50,7 +50,7 @@ Restructure path :: Splits a concrete -[`++spur]() out of a full`++path`, producing a location [`++beam`]() and a remainder [`++path\`](). +[`++spur`]() out of a full `++path`, producing a location [`++beam`]() and a remainder [`++path`](). `hom` is a [`++path`]() From 6e76dc5ecbf4322231fc6ab25906a2a926ac39c0 Mon Sep 17 00:00:00 2001 From: Galen Wolfe-Pauly Date: Thu, 23 Apr 2015 13:58:43 -0700 Subject: [PATCH 65/89] better links, tree fix --- docs/pub/doc/hoon/library/2c.md | 2 +- docs/pub/doc/hoon/library/2db.md | 2 +- docs/pub/doc/hoon/library/2ec.md | 2 +- docs/pub/doc/hoon/library/2ef.md | 2 +- docs/pub/doc/hoon/library/2ej.md | 2 +- docs/pub/doc/hoon/library/2ek.md | 2 +- docs/pub/doc/hoon/library/2el.md | 2 +- docs/pub/doc/hoon/library/2en.md | 2 +- docs/pub/doc/hoon/library/2eo.md | 2 +- docs/pub/doc/hoon/library/2ep.md | 2 +- docs/pub/doc/hoon/library/3bc.md | 2 +- docs/pub/doc/hoon/library/3bd.md | 2 +- docs/pub/doc/hoon/library/3bf.md | 2 +- docs/pub/doc/hoon/library/3bg.md | 2 +- docs/pub/tree/src/js/components/AnchorComponent.coffee | 7 ++++--- docs/pub/tree/src/js/main.js | 8 +++++--- docs/tree/hymn.hook | 8 ++++---- 17 files changed, 27 insertions(+), 24 deletions(-) diff --git a/docs/pub/doc/hoon/library/2c.md b/docs/pub/doc/hoon/library/2c.md index 4e0688e3f..73857d8cf 100644 --- a/docs/pub/doc/hoon/library/2c.md +++ b/docs/pub/doc/hoon/library/2c.md @@ -1734,7 +1734,7 @@ Produce a parsed daily time format from an atomic date. Accept a [`++tarp`](), a parsed daily time, and produces a time atom, `@d`. -`rip` is a [`++tarp`](). +`rip` is a [`++tarp`](/doc/hoon/library/1#++tarp). ~zod/try=> =murica (yell ~1776.7.4) ~zod/try=> murica diff --git a/docs/pub/doc/hoon/library/2db.md b/docs/pub/doc/hoon/library/2db.md index bd8ecacd5..696d130b8 100644 --- a/docs/pub/doc/hoon/library/2db.md +++ b/docs/pub/doc/hoon/library/2db.md @@ -57,7 +57,7 @@ Grab value by key Produces a list retrieved from jar `a` using the key `b`. -`a` is a [`++jar`](). +`a` is a [`++jar`](/doc/hoon/library/1#++jar). `b` is a key of the same type as the keys in `a`. diff --git a/docs/pub/doc/hoon/library/2ec.md b/docs/pub/doc/hoon/library/2ec.md index 4f86769bd..9e5cfdedb 100644 --- a/docs/pub/doc/hoon/library/2ec.md +++ b/docs/pub/doc/hoon/library/2ec.md @@ -417,7 +417,7 @@ Conditional `++cook` Conditional [`++cook`](). Slams the result through a gate that produces a unit; if that unit is empty, fail. -`tub` is a [`++nail`]() +`tub` is a [`++nail`](/doc/hoon/library/1#++nail) ~zod/try=> ((sear |=(a=* ?@(a (some a) ~)) (just `a`)) [[1 1] "abc"]) [p=[p=1 q=2] q=[~ u=[p=97 q=[p=[p=1 q=2] q="bc"]]]] diff --git a/docs/pub/doc/hoon/library/2ef.md b/docs/pub/doc/hoon/library/2ef.md index f8d57579b..59185d3e4 100644 --- a/docs/pub/doc/hoon/library/2ef.md +++ b/docs/pub/doc/hoon/library/2ef.md @@ -46,7 +46,7 @@ Parse backslash ++ bas (just '\\') Parses ASCII character 92, the backslash. Note the extra `\` in the slam -of `bas` with [`++just`]() is to escape the escape character, `\`. +of `bas` with [`++just`](/doc/hoon/library/2ec#++just) is to escape the escape character, `\`. ~zod/try=> (scan "\\" bas) ~~~5c. diff --git a/docs/pub/doc/hoon/library/2ej.md b/docs/pub/doc/hoon/library/2ej.md index 3a0d29763..d07dd4a5e 100644 --- a/docs/pub/doc/hoon/library/2ej.md +++ b/docs/pub/doc/hoon/library/2ej.md @@ -88,7 +88,7 @@ Escape special chars [i.vib $(vib t.vib)] :: -Escape special characters, used in [`++show`]() +Escape special characters, used in [`++show`](/doc/hoon/library/2ez#++show) `vib` is a [tape](). diff --git a/docs/pub/doc/hoon/library/2ek.md b/docs/pub/doc/hoon/library/2ek.md index 231dbf1a2..57c9a3168 100644 --- a/docs/pub/doc/hoon/library/2ek.md +++ b/docs/pub/doc/hoon/library/2ek.md @@ -10,7 +10,7 @@ Pretty-printing engine Pretty-printing engine. -`tac` is a [`++tank`](). +`tac` is a [`++tank`](/doc/hoon/library/1#++tank). /~zod/try=> ~(. re leaf/"ham") <2.ghl [[%leaf ""] <414.gly 100.xkc 1.ypj %164>]> diff --git a/docs/pub/doc/hoon/library/2el.md b/docs/pub/doc/hoon/library/2el.md index 0e27e2954..77f165867 100644 --- a/docs/pub/doc/hoon/library/2el.md +++ b/docs/pub/doc/hoon/library/2el.md @@ -1855,7 +1855,7 @@ Parse span to path |= zep=@ta ^- path (rash zep ;~(pfix fas ;~(sfix (more fas urs:ab) fas))) -Parsing rule. Parses a span `zep` to a static [`++path`](). +Parsing rule. Parses a span `zep` to a static [`++path`](/doc/hoon/library/1#++path). ~zod/try=> (stab '/as/lek/tor') /as/lek/tor diff --git a/docs/pub/doc/hoon/library/2en.md b/docs/pub/doc/hoon/library/2en.md index 6c8036277..14ce8bf2f 100644 --- a/docs/pub/doc/hoon/library/2en.md +++ b/docs/pub/doc/hoon/library/2en.md @@ -244,7 +244,7 @@ Reverse lookup byte in 256 sub box df4d.225e.2d56.7fd6.1395.a3f8.c582 (cut 3 [a 1] b) -The inverse of [`++zyft`](). Looks up a byte `a` in a substituion box +The inverse of [`++zyft`](/doc/hoon/library/2en#++zyft). Looks up a byte `a` in a substituion box with 256 values, producing a byte. `a` is an [atom]() of one byte in length. diff --git a/docs/pub/doc/hoon/library/2eo.md b/docs/pub/doc/hoon/library/2eo.md index 126ed5751..9148be762 100644 --- a/docs/pub/doc/hoon/library/2eo.md +++ b/docs/pub/doc/hoon/library/2eo.md @@ -433,7 +433,7 @@ Kicks a `++trap`, producing its result as a noun or the tanks of any error that occurs. Similar to [`++mule`](), but preserves no type information. -`taq` is a [`++trap`](). +`taq` is a [`++trap`](/doc/hoon/library/1#++trap). ~zod/try=> (mute |.(leaf/"hello")) [%.y p=[1.717.658.988 104 101 108 108 111 0]] diff --git a/docs/pub/doc/hoon/library/2ep.md b/docs/pub/doc/hoon/library/2ep.md index ea275992b..44ca0e2dc 100644 --- a/docs/pub/doc/hoon/library/2ep.md +++ b/docs/pub/doc/hoon/library/2ep.md @@ -194,7 +194,7 @@ Find common ?:((gth p.lef p.rig) lef rig) :: -Finds a subsequence of repeated elements within two [`++list`]()s, +Finds a subsequence of repeated elements within two [`++list`](/doc/hoon/library/1#++list)s, producing a [\`++tape](). ~zod/try=> (locz "samukot" "semelkot") diff --git a/docs/pub/doc/hoon/library/3bc.md b/docs/pub/doc/hoon/library/3bc.md index 5a6731173..2923576f4 100644 --- a/docs/pub/doc/hoon/library/3bc.md +++ b/docs/pub/doc/hoon/library/3bc.md @@ -346,7 +346,7 @@ Back-shifted leap second dates :: Produces a list of absolute dates ([`@da`]()) that represent the Urbit -Galactc Time equivalents of the UTC leap second dates in [`++les`](). +Galactc Time equivalents of the UTC leap second dates in [`++les`](/doc/hoon/library/3bc#++les). ~zod/try=/hom> lef:yu ~[ diff --git a/docs/pub/doc/hoon/library/3bd.md b/docs/pub/doc/hoon/library/3bd.md index 1593acc85..c67390af1 100644 --- a/docs/pub/doc/hoon/library/3bd.md +++ b/docs/pub/doc/hoon/library/3bd.md @@ -1648,7 +1648,7 @@ Escape JSON character == :: -Produces a `++tape` of an escaped [`++json`]() character `a`. +Produces a `++tape` of an escaped [`++json`](/doc/hoon/library/3bi#++json) character `a`. `a` is an atom diff --git a/docs/pub/doc/hoon/library/3bf.md b/docs/pub/doc/hoon/library/3bf.md index 5a6bad7f0..472aa26ac 100644 --- a/docs/pub/doc/hoon/library/3bf.md +++ b/docs/pub/doc/hoon/library/3bf.md @@ -257,7 +257,7 @@ Parse beam to path ^- path [(scot %p p.bem) q.bem (scot r.bem) (flop s.bem)] -Parses a [`++beam`]() to a [`++path`](). +Parses a [`++beam`]() to a [`++path`](/doc/hoon/library/1#++path). ~zod/try=/zop> (tope [~zod %main ud/1] /hook/down/sur) /~zod/main/1/sur/down/hook diff --git a/docs/pub/doc/hoon/library/3bg.md b/docs/pub/doc/hoon/library/3bg.md index d2d90f5aa..b2f808a88 100644 --- a/docs/pub/doc/hoon/library/3bg.md +++ b/docs/pub/doc/hoon/library/3bg.md @@ -386,7 +386,7 @@ Top-level URL parser Toplevel URL parser. -`a` is a [`++cord`](). +`a` is a [`++cord`](/doc/hoon/library/1#++cord). ~zod/main=> (epur 'http://127.0.0.1/') [~ [p=[p=%.n q=~ r=[%.n p=.127.0.0.1]] q=[p=~ q=<||>] r=~]] diff --git a/docs/pub/tree/src/js/components/AnchorComponent.coffee b/docs/pub/tree/src/js/components/AnchorComponent.coffee index c385450d2..5d598dfa6 100644 --- a/docs/pub/tree/src/js/components/AnchorComponent.coffee +++ b/docs/pub/tree/src/js/components/AnchorComponent.coffee @@ -36,14 +36,15 @@ module.exports = recl setPath: (href,hist) -> if hist isnt false then history.pushState {}, "", window.tree.basepath href - TreeActions.setCurr href + TreeActions.setCurr href.split("#")[0] goTo: (path) -> @toggleFocus false $("html,body").animate {scrollTop:0} + frag = path.split("#")[0] @setPath path - if not @checkPath path - TreeActions.getPath path + if not @checkPath frag + TreeActions.getPath frag checkURL: -> if @state.url isnt window.location.pathname diff --git a/docs/pub/tree/src/js/main.js b/docs/pub/tree/src/js/main.js index 51afd8737..dc54a3b3c 100644 --- a/docs/pub/tree/src/js/main.js +++ b/docs/pub/tree/src/js/main.js @@ -124,16 +124,18 @@ module.exports = recl({ if (hist !== false) { history.pushState({}, "", window.tree.basepath(href)); } - return TreeActions.setCurr(href); + return TreeActions.setCurr(href.split("#")[0]); }, goTo: function(path) { + var frag; this.toggleFocus(false); $("html,body").animate({ scrollTop: 0 }); + frag = path.split("#")[0]; this.setPath(path); - if (!this.checkPath(path)) { - return TreeActions.getPath(path); + if (!this.checkPath(frag)) { + return TreeActions.getPath(frag); } }, checkURL: function() { diff --git a/docs/tree/hymn.hook b/docs/tree/hymn.hook index 3cec27ac0..b64fa15b8 100644 --- a/docs/tree/hymn.hook +++ b/docs/tree/hymn.hook @@ -17,13 +17,13 @@ ;head ;title: urbit Tree ;meta(name "viewport", content "width=device-width, initial-scale=1"); - ::;link(type "text/css", rel "stylesheet", href "/docs/pub/tree/src/css/main.css"); - ;link(type "text/css", rel "stylesheet", href "http://localhost:8000/docs/pub/tree/src/css/main.css"); + ;link(type "text/css", rel "stylesheet", href "/docs/pub/tree/src/css/main.css"); + ::;link(type "text/css", rel "stylesheet", href "http://localhost:8000/docs/pub/tree/src/css/main.css"); ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"); ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"); ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/react/0.12.2/react.js"); - ::;script(type "text/javascript", src "/docs/pub/tree/src/js/main.js"); - ;script(type "text/javascript", src "http://localhost:8000/docs/pub/tree/src/js/main.js"); + ;script(type "text/javascript", src "/docs/pub/tree/src/js/main.js"); + ::;script(type "text/javascript", src "http://localhost:8000/docs/pub/tree/src/js/main.js"); == ;body ;script(type "text/javascript"):""" From 75e4b36d36a5f994d9e0c8929e504f6b9fdc82cb Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Thu, 23 Apr 2015 20:34:36 -0400 Subject: [PATCH 66/89] port merge tools to dojo model --- main/app/helm/core.hook | 276 ++++++++++++++++++++++++++++++++++++++- main/app/merge/core.hook | 10 +- main/arvo/clay.hoon | 2 +- 3 files changed, 274 insertions(+), 14 deletions(-) diff --git a/main/app/helm/core.hook b/main/app/helm/core.hook index c3bae08e1..b2535606d 100644 --- a/main/app/helm/core.hook +++ b/main/app/helm/core.hook @@ -12,11 +12,19 @@ $: %0 :: state version bur=(unit (pair ship mace)) :: requesting ticket hoc=(map bone helm-session) :: consoles + rem=(map desk merge-state) :: active merges == :: ++ helm-session :: $: say=sole-share :: mud=(unit (sole-dialog ,@ud)) :: == :: + ++ merge-state :: merge data + $: auto=? :: escalate on failure + gem=germ :: strategy + her=@p :: from ship + sud=@tas :: from desk + cas=case :: at case + == :: ++ funk (pair ,@ ,@) :: ++ begs ,[his=@p tic=@p eny=@t ges=gens] :: begin data ++ helm-wish :: @@ -38,24 +46,56 @@ [%nice ~] :: acknowledge [%rush %sole-effect sole-effect] :: effect == :: - ++ hapt ,[p=ship q=path] :: + ++ hapt ,[p=ship q=path] :: + ++ milk (trel ship desk silk) :: + ++ silk :: + $& [p=silk q=silk] :: cons + $% [%diff p=silk q=silk] :: diff + [%done p=(set beam) q=gage] :: literal + [%file p=beam] :: from clay + [%mash p=mark q=milk r=milk] :: merge + [%tabl p=(list (pair silk silk))] :: list + == :: + ++ tage :: %tabl gage + ,[[%tabl p=(list (pair marc marc))] q=vase] :: ++ move ,[p=bone q=(mold note gift)] :: + ++ note-clay :: filesystem command + $% [%font p=@p q=@tas r=@p s=@tas] :: + [%info p=@p q=@tas r=nori] :: + [%merg p=@p q=@tas r=@p s=@tas t=germ] :: + == :: + ++ note-dill :: system command + $% [%flog p=dill-flog] :: + == :: + ++ note-ford :: + $% [%exec p=@p q=beak r=(unit silk)] :: + == :: ++ note-gall :: note to %gall $% [%mess p=[p=ship q=path] q=ship r=cage] :: [%show p=[p=ship q=path] q=ship r=path] :: [%took p=[p=ship q=path] q=ship] :: == :: - ++ note-dill :: system command - $% [%flog p=dill-flog] :: - == :: - ++ note-clay :: filesystem command - $% [%font p=@p q=@tas r=@p s=@tas] :: - == :: ++ note :: out request $-> $% [%c note-clay] :: [%d note-dill] :: + [%f note-ford] :: [%g note-gall] :: == :: + ++ sign-clay :: + $% [%mere are=(each (set path) (pair term tang))]:: + == :: + ++ sign-ford :: + $% [%made p=@uvH q=(each gage tang)] :: + == :: + ++ sign-gall :: + $% [%mean p=ares] :: + [%nice ~] :: + == :: + ++ sign :: + $% [%c sign-clay] :: + [%f sign-ford] :: + [%g sign-gall] :: + == :: -- :: :: :: :::: :: @@ -136,6 +176,7 @@ :_ moz [ost %pass /verb %d %flog %verb ~] == + :: ++ he-wish-init |= him=ship %_ +>.$ @@ -143,6 +184,210 @@ :_ moz [ost %pass /init %d %flog %crud %hax-init leaf/(scow %p him) ~] == + :: + ++ he-wish-merge + |= syd=desk + =+ ^- merge-state + %+ fall (~(get by rem) syd) + =+ *merge-state + %_(- cas [%da lat.hid]) + |% + ++ merge-abet + ..he-wish-merge(rem (~(put by rem) syd auto gem her sud cas)) + :: + ++ blab + |= new=(list move) + ^+ +> + +>.$(moz (welp new moz)) + :: + ++ win (blab [ost %give %nice ~] ~) + ++ lose (blab [ost %give %mean ~] ~) + :: + ++ gage-to-tage + |= res=gage + ^- tage + ?@ p.res + ~|(%bad-marc !!) + res + :: + ++ tage-to-cages + |= tab=tage + ^- (list (pair cage cage)) + ?~ p.tab + ~ + :_ $(p.tab t.p.tab, q.tab (slot 3 q.tab)) + ~| %strange-gage + :- [?^(p.i.p.tab !! p.i.p.tab) (slot 4 q.tab)] + [?^(q.i.p.tab !! q.i.p.tab) (slot 5 q.tab)] + :: + ++ merge + ^+ . + (blab [ost %pass /merge/[syd]/merge %c %merg our.hid syd her sud gem] ~) + :: + ++ fancy-merge :: recurse + |= [syd=desk her=@p sud=desk gem=?(%auto germ)] + ^+ +> + %- blab :_ ~ + :* ost %pass /merge/[^syd]/fancy %g %mess [our.hid imp.hid] + our.hid %helm-merge !>([syd her sud gem]) + == + :: + ++ spam + |= mes=(list tank) + =+ (turn mes |=(tank ~&(~(ram re +<) .))) + +>.$ + ++ start + |= [her=@p sud=@tas gim=?(%auto germ)] + ^+ +> + =. cas [%da lat.hid] + ?. ?=(%auto gim) + merge(auto |, gem gim, her her, sud sud) + ?: =(0 .^(%cw /(scot %p our.hid)/[syd]/(scot %da lat.hid))) + => $(gim %init) + .(auto &) + => $(gim %fine) + .(auto &) + :: + ++ work + |= sih=sign + ^+ +> + ~| [%working auto=auto gem=gem syd=syd her=her sud=sud] + ?: ?=(%meld gem) + ?- -.sih + %g + ?: ?=(%nice +<.sih) + => (spam leaf/"%melding %{(trip sud)} into scratch space" ~) + %- blab :_ ~ + :* ost %pass /merge/[syd]/scratch %c %merg our.hid + (cat 3 syd '-scratch') her sud gem + == + =+ :- "failed to set up conflict resolution scratch space" + "I'm out of ideas" + lose:(spam leaf/-< leaf/-> ~) + :: + %c + ?: ?=(%& -.are.sih) + ?. auto + =+ "successfully merged with strategy {}" + win:(spam leaf/- ?~(p.are.sih ~ [>`(set path)`p.are.sih< ~])) + =+ "mashing conflicts" + => .(+>.$ (spam leaf/- ~)) + =+ tic=(cat 3 syd '-scratch') + %- blab :_ ~ + :* ost %pass /merge/[syd]/mash + %f %exec our.hid [our.hid tic %da lat.hid] ~ %tabl + ^- (list (pair silk silk)) + %+ turn (~(tap in p.are.sih)) + |= pax=path + ^- (pair silk silk) + :- [%done ~ %path -:!>(*path) pax] + =+ base=[%file [our.hid tic %da lat.hid] (flop pax)] + =+ alis=[%file [her sud cas] (flop pax)] + =+ bobs=[%file [our.hid syd %da lat.hid] (flop pax)] + =+ dali=[%diff base alis] + =+ dbob=[%diff base bobs] + =+ ^- for=mark + =+ (slag (dec (lent pax)) pax) + ?~(- %$ i.-) + [%mash for [her sud dali] [our.hid syd dbob]] + == + =+ "failed to merge with strategy {}" + lose:(spam leaf/- q.p.are.sih) + :: + %f + ?: ?=(%| -.q.sih) + =+ "failed to mash" + lose:(spam leaf/- p.q.sih) + =+ ^- can=(list (pair path (unit miso))) + %+ turn (tage-to-cages (gage-to-tage p.q.sih)) + |= [pax=cage dif=cage] + ^- (pair path (unit miso)) + ?. ?=(%path p.pax) + ~| "strange path mark: {}" + !! + [((hard path) q.q.pax) ?:(?=(%null p.dif) ~ `[%dif dif])] + =+ notated=(skid can |=([path a=(unit miso)] ?=(^ a))) + =+ annotated=(turn `(list (pair path ,*))`-.notated head) + =+ unnotated=(turn `(list (pair path ,*))`+.notated head) + =+ (trip (cat 3 syd '-scratch')) + =+ ^- tan=(list tank) + %- zing + ^- (list (list tank)) + :~ :~ leaf/"" + leaf/"done setting up scratch space in %{-}" + leaf/"please resolve the following conflicts nd run" + leaf/":helm+merge %{(trip syd)} %{} %{-}" + == + ?~ annotated + ~ + :~ leaf/"" + leaf/"annotated conflicts in:" + >`(list path)`annotated< + == + ?~ unnotated + ~ + :~ leaf/"" + leaf/"some conflicts could not be annotated." + leaf/"for these, the scratch space contains" + leaf/"the most recent common ancestor of the" + leaf/"conflicting content." + leaf/"" + leaf/"unannotated conflicts in:" + >`(list path)`unnotated< + == + == + =< win + %- blab:(spam tan) + :_ ~ + :* ost %pass /merge/[syd]/dash %c %info + our.hid (cat 3 syd '-scratch') + %& *cart + %+ murn can + |= [p=path q=(unit miso)] + `(unit (pair path miso))`?~(q ~ `[p u.q]) + == + == + ?> ?=(%c -.sih) + ?: ?=(%& -.are.sih) + =+ "successfully merged with strategy {}" + win:(spam leaf/- ?~(p.are.sih ~ [>`(set path)`p.are.sih< ~])) + ?. auto + =+ "failed to merge with strategy {}" + lose:(spam leaf/- q.p.are.sih) + ?+ gem + (spam leaf/"strange auto" >gem< ~) + :: + %init + =+ :- "auto merge failed on strategy %init" + "I'm out of ideas" + lose:(spam leaf/-< leaf/-> [>p.p.are.sih< q.p.are.sih]) + :: + %fine + ?. ?=(%bad-fine-merge p.p.are.sih) + =+ "auto merge failed on strategy %fine" + lose:(spam leaf/- >p.p.are.sih< q.p.are.sih) + => (spam leaf/"%fine merge failed, trying %meet" ~) + merge(gem %meet) + :: + %meet + ?. ?=(%meet-conflict p.p.are.sih) + =+ "auto merge failed on strategy %meet" + lose:(spam leaf/- >p.p.are.sih< q.p.are.sih) + => (spam leaf/"%meet merge failed, trying %mate" ~) + merge(gem %mate) + :: + %mate + ?. ?=(%mate-conflict p.p.are.sih) + =+ "auto merge failed on strategy %mate" + lose:(spam leaf/- >p.p.are.sih< q.p.are.sih) + => .(gem %meld) + =+ tic=(cat 3 syd '-scratch') + => =+ :- "%mate merge failed with conflicts," + "setting up scratch space at %{(trip tic)}" + [tic=tic (spam leaf/-< leaf/-> ~)] + (fancy-merge tic our.hid syd %auto) + == + -- -- :: ++ hake :: poke core @@ -150,6 +395,11 @@ ?> =(her our.hid) ~(. he [ost [ost %give %nice ~]~] (fall (~(get by hoc) ost) *helm-session)) :: +++ hoke :: poke sans ack + |= [ost=bone her=ship] + ?> =(her our.hid) + ~(. he [ost ~] (fall (~(get by hoc) ost) *helm-session)) +:: ++ poke-helm-reset |= [ost=bone her=ship ~] ~& %poke-helm-reset @@ -170,6 +420,11 @@ ~& %poke-helm-reload he-abet:(he-wish-reload:(hake ost her) all) :: +++ poke-helm-merge + |= [ost=bone her=ship syd=@tas ali=@p sud=@tas gem=?(%auto germ)] + ~& %poke-helm-merge + he-abet:merge-abet:(start:(he-wish-merge:(hoke ost her) syd) ali sud gem) +:: ++ poke-helm-sync |= [ost=bone her=ship all=[@tas @p @tas ~]] ~& %poke-helm-sync @@ -198,4 +453,11 @@ [ost %pass / %c %plug our.hid %main (sein our.hid) %main] [ost %give %nice ~] == +:: +++ pour + |= [ost=bone pax=path sih=sign] + ?+ pax ~| %helm-strange-path !! + [%merge @tas @ ~] + he-abet:merge-abet:(work:(he-wish-merge:(hoke ost our.hid) i.t.pax) sih) + == -- diff --git a/main/app/merge/core.hook b/main/app/merge/core.hook index 1a9176695..8d80e2f0e 100644 --- a/main/app/merge/core.hook +++ b/main/app/merge/core.hook @@ -27,8 +27,7 @@ $% [%exec p=@p q=beak r=(unit silk)] == == $: %g - $% [%cide span] - [%mess p=[ship path] q=ship r=cage] + $% [%mess p=[ship path] q=ship r=cage] == == == ++ sign $% $: %c @@ -85,9 +84,8 @@ ^+ +> +>.$(mow (welp new mow)) :: - ++ end ?.(?=([* ~ ~] merges) . (blab [0 %pass / %g %cide %$] ~)) - ++ win end:(blab [ost %give %nice ~] ~) - ++ lose end:(blab [ost %give %mean ~] ~) + ++ win (blab [ost %give %nice ~] ~) + ++ lose (blab [ost %give %mean ~] ~) :: ++ bead-to-tage |= res=bead @@ -282,7 +280,7 @@ -- ++ peer ,_`. ++ poke--args - |= [ost=bone you=ship syd=@tas her=@p sud=@tas gim=?([$|(%auto germ) ~] ~)] + |= [ost=bone you=ship syd=@tas her=@p sud=@tas gim=$?(%auto germ)] ^- [(list move) _+>.$] ?~ gim $(gim [%auto ~]) diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index f901aa9ed..1eaeb7cb7 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -2506,7 +2506,7 @@ [[- ~] ..^$] ~& :^ "merge failed" "please manually merge the desks with" - ":merge %{(trip syd)} {(scow %p her)} %{(trip sud)}" + ":helm+merge %{(trip syd)} {(scow %p her)} %{(trip sud)}" :- p.p.p.+.q.hin (turn q.p.p.+.q.hin |=(tank ~(ram re +<))) [[- ~] ..^$] From df357653e9af2c2d2e095e02fd3f87f075a41d26 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Fri, 24 Apr 2015 16:03:23 -0400 Subject: [PATCH 67/89] send merge messages to talk --- main/app/helm/core.hook | 28 +++- main/app/merge/core.hook | 305 --------------------------------------- main/app/talk/core.hook | 5 +- main/arvo/clay.hoon | 8 +- main/sur/talk/core.hook | 1 + 5 files changed, 32 insertions(+), 315 deletions(-) delete mode 100644 main/app/merge/core.hook diff --git a/main/app/helm/core.hook b/main/app/helm/core.hook index 5e1848927..5a1eb3a81 100644 --- a/main/app/helm/core.hook +++ b/main/app/helm/core.hook @@ -2,7 +2,7 @@ :::: /hook/core/helm/app :: :: :: :: :: /? 314 :: zuse version -/- *sole :: structures +/- *sole, *talk :: structures /+ sole :: libraries :: :: :: :::: :: :: @@ -228,8 +228,24 @@ :: ++ spam |= mes=(list tank) - =+ (turn mes |=(tank ~&(~(ram re +<) .))) - +>.$ + %- blab :_ ~ + :* ost %pass /merge/[syd]/spam %g %mess + [our.hid /talk] our.hid %talk-command -:!>(*command) + %publish + %- flop + =< acc + %+ roll mes + =< .(eny eny.hid) + |= [tan=tank acc=(list thought) eny=@uvI] + ^- [acc=(list thought) eny=@uvI] + =+ (sham eny mes) + :_ - + :_ acc + ^- thought + :+ - + `(map partner (pair envelope delivery))`[[`partner`[%& our.hid %porch] [*envelope %pending]] ~ ~] + `statement`[lat.hid *bouquet [%app (crip ~(ram re tan))]] + == ++ start |= [her=@p sud=@tas gim=?(%auto germ)] ^+ +> @@ -309,8 +325,8 @@ ^- (list (list tank)) :~ :~ leaf/"" leaf/"done setting up scratch space in %{-}" - leaf/"please resolve the following conflicts nd run" - leaf/":helm+merge %{(trip syd)} %{} %{-}" + leaf/"please resolve the following conflicts and run" + leaf/":helm+merge %{(trip syd)} {} %{-}" == ?~ annotated ~ @@ -452,6 +468,8 @@ |= [ost=bone pax=path sih=sign] ?+ pax ~| %helm-strange-path !! [%merge @tas @ ~] + ?: ?=(%spam i.t.t.pax) + [~ +>.$] he-abet:merge-abet:(work:(he-wish-merge:(hoke ost our.hid) i.t.pax) sih) == -- diff --git a/main/app/merge/core.hook b/main/app/merge/core.hook deleted file mode 100644 index 8d80e2f0e..000000000 --- a/main/app/merge/core.hook +++ /dev/null @@ -1,305 +0,0 @@ -:: Desk sync -:: -:::: /hook/core/sync/app - :: -|% -++ bead ,[p=(set beam) q=gage] -++ merge-state - $: auto=? - gem=germ - her=@p - sud=@tas - cas=case - == -++ gift - $% [%mean p=ares] - [%nice ~] - [%rush %tang (list tank)] - == -++ milk (trel ship desk silk) -++ move ,[p=bone q=(mold note gift)] -++ note - $% $: %c - $% [%info p=@p q=@tas r=nori] - [%merg p=@p q=@tas r=@p s=@tas t=germ] - == == - $: %f - $% [%exec p=@p q=beak r=(unit silk)] - == == - $: %g - $% [%mess p=[ship path] q=ship r=cage] - == == == -++ sign - $% $: %c - $% [%mere are=(each (set path) (pair term (list tank)))] - == == - $: %f - $% [%made p=(each bead (list tank))] - == == - $: %g - $% [%mean p=ares] - [%nice ~] - == == == -++ silk - $& [p=silk q=silk] :: cons - $% [%bake p=mark q=beam r=path] :: local synthesis - [%boil p=mark q=beam r=path] :: general synthesis - [%bunt p=mark] :: example of mark - [%call p=silk q=silk] :: slam - [%cast p=mark q=silk] :: translate - [%diff p=silk q=silk] :: diff - [%done p=(set beam) q=gage] :: literal - [%dude p=tank q=silk] :: error wrap - [%dune p=(set beam) q=(unit gage)] :: unit literal - [%file p=beam] :: from clay - [%join p=mark q=silk r=silk] :: merge - [%mash p=mark q=milk r=milk] :: merge - [%mute p=silk q=(list (pair wing silk))] :: mutant - [%pact p=silk q=silk] :: patch - [%reef ~] :: kernel reef - [%ride p=twig q=silk] :: silk thru twig - [%tabl p=(list (pair silk silk))] :: list - [%vale p=mark q=ship r=*] :: validate [our his] - [%volt p=(set beam) q=(cask ,*)] :: unsafe add type - == -++ tage ,[[%tabl p=(list (pair marc marc))] q=vase] :: %tabl gage --- -!: -:::: - :: -|_ [hid=hide merges=(map desk merge-state)] -++ me - |= [ost=bone syd=desk] - =+ ^- merge-state - %+ fall (~(get by merges) syd) - =+ *merge-state - %_(- cas [%da lat.hid]) - =| mow=(list move) - |% - ++ abet - [(flop mow) ..me(merges (~(put by merges) syd auto gem her sud cas))] - :: - ++ blab - |= new=(list move) - ^+ +> - +>.$(mow (welp new mow)) - :: - ++ win (blab [ost %give %nice ~] ~) - ++ lose (blab [ost %give %mean ~] ~) - :: - ++ bead-to-tage - |= res=bead - ^- tage - ?@ p.q.res - ~|(%bad-marc !!) - q.res - :: - ++ tage-to-cages - |= tab=tage - ^- (list (pair cage cage)) - ?~ p.tab - ~ - :_ $(p.tab t.p.tab, q.tab (slot 3 q.tab)) - ~| %strange-gage - :- [?^(p.i.p.tab !! p.i.p.tab) (slot 4 q.tab)] - [?^(q.i.p.tab !! q.i.p.tab) (slot 5 q.tab)] - :: - ++ merge - ^+ . - (blab [ost %pass /[syd]/merge %c %merg our.hid syd her sud gem] ~) - :: - ++ fancy-merge :: recurse - |= [syd=desk her=@p sud=desk gem=$|(%auto germ)] - ^+ +> - %- blab :_ ~ - :* ost %pass /[^syd]/fancy %g %mess [our.hid imp.hid] our.hid - %merge-args !>([syd her sud gem ~]) - == - :: - ++ spam (corl blab ^spam) - ++ start - |= [her=@p sud=@tas gim=$|(%auto germ)] - ^+ +> - ?. ?=(%auto gim) - merge(auto |, gem gim, her her, sud sud) - ?: =(0 .^(%cw /(scot %p our.hid)/[syd]/(scot %da lat.hid))) - => $(gim %init) - .(auto &) - => $(gim %fine) - .(auto &) - :: -:: =+ (trip (cat 3 syd '-scratch')) -:: =+ ^- (list tape) -:: :~ "done setting up scratch space in %{-}" -:: "please resolve conflicts in the following files and run" -:: ":merge %{(trip syd)} our %{-}" -:: "" -:: "conflicts in:" -:: == -:: win:(spam (welp (turn - (cury same %leaf)) [>p.are.sih< ~])) - ++ work - |= sih=sign - ^+ +> - ~| [%working auto=auto gem=gem syd=syd her=her sud=sud] - ?: ?=(%meld gem) - ?- -.sih - %g - ?: ?=(%nice +<.sih) - => (spam leaf/"%melding %{(trip sud)} into scratch space" ~) - %- blab :_ ~ - :* ost %pass /[syd]/scratch %c %merg our.hid - (cat 3 syd '-scratch') her sud gem - == - =+ :- "failed to set up conflict resolution scratch space" - "I'm out of ideas" - lose:(spam leaf/-< leaf/-> ~) - :: - %c - ?: ?=(%& -.are.sih) - ?. auto - =+ "successfully merged with strategy {}" - win:(spam leaf/- ?~(p.are.sih ~ [>`(set path)`p.are.sih< ~])) - =+ "mashing conflicts" - => .(+>.$ (spam leaf/- ~)) - =+ tic=(cat 3 syd '-scratch') - %- blab :_ ~ - :* ost %pass /[syd]/mash - %f %exec our.hid [our.hid tic %da lat.hid] ~ %tabl - ^- (list (pair silk silk)) - %+ turn (~(tap in p.are.sih)) - |= pax=path - ^- (pair silk silk) - :- [%done ~ %path -:!>(*path) pax] - =+ base=[%file [our.hid tic %da lat.hid] (flop pax)] - =+ alis=[%file [her sud cas] (flop pax)] - =+ bobs=[%file [our.hid syd %da lat.hid] (flop pax)] - =+ dali=[%diff base alis] - =+ dbob=[%diff base bobs] - =+ ^- for=mark - =+ (slag (dec (lent pax)) pax) - ?~(- %$ i.-) - [%mash for [her sud dali] [our.hid syd dbob]] - == - =+ "failed to merge with strategy {}" - lose:(spam leaf/- q.p.are.sih) - :: - %f - ?: ?=(%| -.p.sih) - =+ "failed to mash" - lose:(spam leaf/- p.p.sih) - =+ ^- can=(list (pair path (unit miso))) - %+ turn (tage-to-cages (bead-to-tage p.p.sih)) - |= [pax=cage dif=cage] - ^- (pair path (unit miso)) - ?. ?=(%path p.pax) - ~| "strange path mark: {}" - !! - [((hard path) q.q.pax) ?:(?=(%null p.dif) ~ `[%dif dif])] - =+ notated=(skid can |=([path a=(unit miso)] ?=(^ a))) - =+ annotated=`(list path)`(turn `(list (pair path ,*))`-.notated head) - =+ unnotated=`(list path)`(turn `(list (pair path ,*))`+.notated head) - =+ (trip (cat 3 syd '-scratch')) - =+ ^- tan=(list tank) - %- zing - ^- (list (list tank)) - :~ :~ leaf/"" - leaf/"done setting up scratch space in %{-}" - leaf/"please resolve conflicts in the following files and run" - leaf/":merge %{(trip syd)} our %{-}" - == - ?~ annotated - ~ - :~ leaf/"" - leaf/"annotated conflicts in:" - >`(list path)`annotated< - == - ?~ unnotated - ~ - :~ leaf/"" - leaf/"some conflicts could not be annotated." - leaf/"for these, the scratch space contains" - leaf/"the most recent common ancestor of the" - leaf/"conflicting content." - leaf/"" - - leaf/"unannotated conflicts in:" - >`(list path)`unnotated< - == - == - =< win - %- blab:(spam tan) - :_ ~ - :* ost %pass /[syd]/dash %c %info - our.hid (cat 3 syd '-scratch') - %& *cart - %+ murn can - |= [p=path q=(unit miso)] - `(unit (pair path miso))`?~(q ~ `[p u.q]) - == - == - ?> ?=(%c -.sih) - ?: ?=(%& -.are.sih) - =+ "successfully merged with strategy {}" - win:(spam leaf/- ?~(p.are.sih ~ [>`(set path)`p.are.sih< ~])) - ?. auto - =+ "failed to merge with strategy {}" - lose:(spam leaf/- q.p.are.sih) - ?+ gem - (spam leaf/"strange auto" >gem< ~) - :: - %init - =+ :- "auto merge failed on strategy %init" - "I'm out of ideas" - lose:(spam leaf/-< leaf/-> [>p.p.are.sih< q.p.are.sih]) - :: - %fine - ?. ?=(%bad-fine-merge p.p.are.sih) - =+ "auto merge failed on strategy %fine" - lose:(spam leaf/- >p.p.are.sih< q.p.are.sih) - => (spam leaf/"%fine merge failed, trying %meet" ~) - merge(gem %meet) - :: - %meet - ?. ?=(%meet-conflict p.p.are.sih) - =+ "auto merge failed on strategy %meet" - lose:(spam leaf/- >p.p.are.sih< q.p.are.sih) - => (spam leaf/"%meet merge failed, trying %mate" ~) - merge(gem %mate) - :: - %mate - ?. ?=(%mate-conflict p.p.are.sih) - =+ "auto merge failed on strategy %mate" - lose:(spam leaf/- >p.p.are.sih< q.p.are.sih) - => .(gem %meld) - =+ tic=(cat 3 syd '-scratch') - => =+ :- "%mate merge failed with conflicts," - "setting up scratch space at %{(trip tic)}" - [tic=tic (spam leaf/-< leaf/-> ~)] - (fancy-merge tic our.hid syd %auto) - == - -- -++ peer ,_`. -++ poke--args - |= [ost=bone you=ship syd=@tas her=@p sud=@tas gim=$?(%auto germ)] - ^- [(list move) _+>.$] - ?~ gim - $(gim [%auto ~]) - abet:(start:(me ost syd) her sud -.gim) -:: -++ pour - |= [ost=bone pax=path sih=*] - ^- [(list move) _+>.$] - ~| [%pour-pax pax] - =+ ((soft sign) sih) - ?~ - - [(spam leaf/"not working so well" >sih< ~) +>.$] - ~| [%pour-sih -.sih +<.sih] - abet:(work:(me ost -.pax) u) -:: -++ spam - |= mes=(list tank) - ^- (list move) - %+ turn (~(tap in (~(get ju pus.hid) /out))) - |= ost=bone - [ost %give %rush %tang mes] --- diff --git a/main/app/talk/core.hook b/main/app/talk/core.hook index 5c5503ad4..cc3af359e 100644 --- a/main/app/talk/core.hook +++ b/main/app/talk/core.hook @@ -105,7 +105,7 @@ :: :: ++ work :: interface action $% [%number p=? q=@ud] :: activate by number - [%join p=(set partner)] :: + [%join p=(set partner)] :: [%say p=speech] :: [%invite p=span q=(list partner)] :: [%banish p=span q=(list partner)] :: @@ -1751,6 +1751,9 @@ ?: oug (weld "@ " txt) (weld " " txt) + :: + %app + [' ' (trip p.sep)] == -- :: diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index 1eaeb7cb7..a21734cbe 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -1593,15 +1593,15 @@ :: %fine ?: =(r.ali.dat r.bob.dat) - ~& [%fine-trivial ali= bob= r.ali.dat r.bob.dat] + :: ~& [%fine-trivial ali= bob= r.ali.dat r.bob.dat] (done:he ~) ?: (~(has in (reachable-takos r.bob.dat)) r.ali.dat) - ~& [%fine-mostly-trivial ali= bob=] + :: ~& [%fine-mostly-trivial ali= bob=] (done:he ~) ?. (~(has in (reachable-takos r.ali.dat)) r.bob.dat) - ~& [%fine-not-so-trivial ali= bob=] + :: ~& [%fine-not-so-trivial ali= bob=] (error:he %bad-fine-merge ~) - ~& [%fine-lets-go ali= bob=] + :: ~& [%fine-lets-go ali= bob=] =. new.dat ali.dat =. erg.dat %- mo ^- (list ,[path ?]) diff --git a/main/sur/talk/core.hook b/main/sur/talk/core.hook index 987125efb..98ce2596c 100644 --- a/main/sur/talk/core.hook +++ b/main/sur/talk/core.hook @@ -63,6 +63,7 @@ [%ire p=serial q=speech] :: in-reply-to [%lin p=? q=@t] :: no=@, text line [%mor p=(list speech)] :: multiplex + [%app p=@t] :: app message == :: ++ serial ,@uvH :: unique identity ++ partner (each station passport) :: interlocutor From 0fc29d1a3895c57b6cc54ee59af79f3b16f11b1f Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Fri, 24 Apr 2015 17:07:34 -0400 Subject: [PATCH 68/89] fixed hash bug --- main/app/helm/core.hook | 6 +++--- main/arvo/clay.hoon | 38 ++------------------------------------ 2 files changed, 5 insertions(+), 39 deletions(-) diff --git a/main/app/helm/core.hook b/main/app/helm/core.hook index 5a1eb3a81..259383dfd 100644 --- a/main/app/helm/core.hook +++ b/main/app/helm/core.hook @@ -3,7 +3,7 @@ :: :: :: /? 314 :: zuse version /- *sole, *talk :: structures -/+ sole :: libraries +/+ sole, talk :: libraries :: :: :: :::: :: :: !: :: :: @@ -243,8 +243,8 @@ :_ acc ^- thought :+ - - `(map partner (pair envelope delivery))`[[`partner`[%& our.hid %porch] [*envelope %pending]] ~ ~] - `statement`[lat.hid *bouquet [%app (crip ~(ram re tan))]] + [[[%& our.hid (main our.hid)] [*envelope %pending]] ~ ~] + [lat.hid *bouquet [%app (crip ~(ram re tan))]] == ++ start |= [her=@p sud=@tas gim=?(%auto germ)] diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index a21734cbe..68d25e601 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -426,7 +426,7 @@ %+ turn mut |= [pax=path mis=miso] ?> ?=(%mut -.mis) - [pax (page-to-lobe:ze p.mis q.q.mis)] + [pax (page-to-lobe:ze [p q.q]:q.mis)] :: ~ :: @@ -495,40 +495,6 @@ [%diff [%done ~ p.mis] [%cast p.p.mis [%done ~ q.mis]]] == == - :: =+ ^= sop - :: |= [a=path b=miso] - :: ^- ? - :: ?| ?=(%del -.b) - :: ?=(%dif -.b) - :: ?& ?=(%ins -.b) - :: ?=(%mime p.p.b) - :: =+ (slag (dec (lent a)) a) - :: ?| =([%hook ~] -) - :: =([%hoon ~] -) - :: == == == - :: =+ ^- lon=(list path) - :: (murn q.p.lem |=([a=path b=miso] ?:((sop a b) ~ (some a)))) - :: =+ ^- sot=(list ,[p=path q=misu]) - :: %+ murn q.p.lem - :: |=([a=path b=miso] ?.((sop a b) ~ (some [a ?<(?=(%mut -.b) b)]))) - :: =+ ^- mim=(map path mime) - :: %- mo - :: ^- (list ,[path mime]) - :: %+ murn q.p.lem - :: |= [a=path b=miso] - :: ?- -.b - :: %del ~ - :: %ins ?.(?=(%mime p.p.b) ~ (some a ((hard mime) q.q.p.b))) - :: %dif ~ - :: %mut ?.(?=(%mime p.q.b) ~ (some a ((hard mime) q.q.q.b))) - :: == - :: =. dok `[sot lon mim] - :: ?~ lon - :: (apply-edit wen) - :: =+ ^- los=(list ,[duct path note]) - :: %+ murn q.p.lem - :: |=([a=path b=miso] ?:((sop a b) ~ (some (silkify wen a b)))) - :: %_(+>.$ tag (welp los tag)) :: ++ silkify |= [wen=@da pax=path mis=miso] @@ -1118,7 +1084,7 @@ %delta [%pact $(lob q.q.bol) [%volt ~ r.bol]] == :: - ++ page-to-lobe |=(* (shax (jam +<))) + ++ page-to-lobe |=(page (shax (jam +<))) ++ make-direct :: make blob |= p=page ^- blob From de8ff5c5950e092c3e9eb936e81f6fac26f572a4 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Fri, 24 Apr 2015 19:35:24 -0400 Subject: [PATCH 69/89] fixd deeper hash bug --- main/arvo/clay.hoon | 58 ++++++++++++++++++++++++++++++++--- main/cat/helm/merge/gate.hook | 12 ++++++++ main/mar/coffee/door.hook | 20 ++++++++++++ 3 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 main/cat/helm/merge/gate.hook create mode 100644 main/mar/coffee/door.hook diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index 68d25e601..80ea73392 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -159,6 +159,7 @@ ins=(unit (list (pair path cage))) :: inserts dig=(map path cage) :: store diffs dif=(unit (list (trel path lobe cage))) :: changes + muc=(map path (pair cage cage)) :: store miso muh=(map path lobe) :: store hashes mut=(unit (list (trel path lobe cage))) :: mutations mim=(map path mime) :: mime cache @@ -426,7 +427,9 @@ %+ turn mut |= [pax=path mis=miso] ?> ?=(%mut -.mis) - [pax (page-to-lobe:ze [p q.q]:q.mis)] + [pax p.mis q.mis] + :: + ~ :: ~ :: @@ -485,14 +488,14 @@ [%pact [%done ~ p.-] [%done ~ p.mis]] == :* hen %pass - [%mutating (scot %p who) syd (scot %da wen) ~] + [%castifying (scot %p who) syd (scot %da wen) ~] %f %exec who [who syd %da wen] ~ %tabl ^- (list (pair silk silk)) %+ turn mut |= [pax=path mis=miso] ?> ?=(%mut -.mis) :- [%done ~ %path -:!>(*path) pax] - [%diff [%done ~ p.mis] [%cast p.p.mis [%done ~ q.mis]]] + [%cast p.p.mis [%done ~ q.mis]] == == :: @@ -593,6 +596,36 @@ =+ paf=((hard path) q.q.pax) [paf (page-to-lobe:ze [p q.q]:cay) (~(got by dig.u.dok) paf)] :: + ++ take-castify + |= [wen=@da res=(each gage tang)] + ^+ +> + ?~ dok + ~& %clay-take-castifying-unexpected-made +>.$ + ?. =(~ muh.u.dok) + ~& %clay-take-castifying-redundant-made +>.$ + =+ ^- cat=(list (pair path cage)) + %+ turn (tage-to-cages (made-to-tage res)) + |= [pax=cage cay=cage] + ?. ?=(%path p.pax) + ~|(%castify-bad-path-mark !!) + [((hard path) q.q.pax) cay] + =. muh.u.dok + %- mo + %+ turn cat + |= [pax=path cay=cage] + [pax (page-to-lobe:ze [p q.q]:cay)] + =- %_(+>.$ tag [- tag]) + ^- move + :* hen %pass + [%mutating (scot %p who) syd (scot %da wen) ~] + %f %exec who [who syd %da wen] ~ %tabl + ^- (list (pair silk silk)) + %+ turn cat + |= [pax=path cay=cage] + :- [%done ~ %path -:!>(*path) pax] + [%diff [%done ~ p:(~(got by muc.u.dok) pax)] [%done ~ cay]] + == + :: ++ take-mutating |= [wen=@da res=(each gage tang)] ^+ +> @@ -1696,8 +1729,10 @@ =. new.dat (make-yaki [r.ali.dat r.bob.dat ~] hat now) =. hut.ran (~(put by hut.ran) r.new.dat new.dat) - =. erg.dat %- ~(uni by del) :: XX totes wrong - `(map path ,?)`(~(run by hat) |=(lobe %&)) + =. erg.dat %- ~(uni by del) + ^- (map path ,?) + %. |=(lobe %&) + ~(run by (~(uni by new.dal.dat) cal.dal.dat)) checkout == :: @@ -2526,6 +2561,19 @@ =+ zot=abet.zat [-.zot abet:(pish:une syd +.zot ran.zat)] [mos ..^$] + :: + %castifying + ?> ?=([@ @ @ ~] t.tea) + =+ who=(slav %p i.t.tea) + =+ syd=(slav %tas i.t.t.tea) + =+ wen=(slav %da i.t.t.t.tea) + =^ mos ruf + =+ une=(un who now hen ruf) + =+ ^= zat + (take-castify:(di:wake:une syd) wen q.q.hin) + =+ zot=abet.zat + [-.zot abet:(pish:une syd +.zot ran.zat)] + [mos ..^$] :: %mutating ?> ?=([@ @ @ ~] t.tea) diff --git a/main/cat/helm/merge/gate.hook b/main/cat/helm/merge/gate.hook new file mode 100644 index 000000000..0049f2e80 --- /dev/null +++ b/main/cat/helm/merge/gate.hook @@ -0,0 +1,12 @@ +:: +:::: /hook/gate/merge/helm/cat + :: +/? 314 +:: +:::: + !: +|= $: [now=@da eny=@uvI bec=beak] + [[syd=@tas her=@p sud=@tas gem=?([?(%auto germ) ~] ~)] ~] + == +:- %helm-merge +[syd her sud ?~(gem %auto -.gem)] diff --git a/main/mar/coffee/door.hook b/main/mar/coffee/door.hook new file mode 100644 index 000000000..967912c78 --- /dev/null +++ b/main/mar/coffee/door.hook @@ -0,0 +1,20 @@ +:: +:::: /hoon/core/md/pro + :: +/? 314 +|_ mud=@t +++ garb [%down ~] +++ grow + |% + ++ mime [/text/coffeescript (taco mud)] + -- +++ grab + |% + ++ mime |=([p=mite q=octs] (,@t q.q)) + ++ noun ,@t + -- +++ grad + |% + ++ sted %mime + -- +-- From ea2c2e2a8d8d993648156fe7eccca602ec7d5be8 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Mon, 27 Apr 2015 17:29:56 -0400 Subject: [PATCH 70/89] local merge checkout optimization --- main/arvo/clay.hoon | 49 ++++++++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index 80ea73392..8a2449049 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -1510,7 +1510,7 @@ -- :: ++ me :: merge ali into bob - |= ali=(pair ship desk) :: from + |= [ali=(pair ship desk) alh=(unit ankh)] :: from =+ bob=`(pair ship desk)`[who syd] :: to =+ dat=(fall (~(get by mer) ali) *mery) :: merge data =| don=? :: keep going @@ -2090,7 +2090,7 @@ ^- (unit (pair silk silk)) ?: (~(has by bop.dat) pax) ~ - `[[%done ~ %path !>(pax)] (lobe-to-silk pax lob)] + `[[%done ~ %path !>(pax)] (merge-lobe-to-silk:he pax lob)] == :: ++ checked-out @@ -2214,6 +2214,31 @@ (~(put in s) (tako-to-yaki t)) :: found (~(uni in s) ^$(q (tako-to-yaki t))) :: traverse :: + ++ merge-lobe-to-silk + |= [pax=path lob=lobe] + ^- silk + =+ hat=q.ali.dat + =+ hot=q.bob.dat + =+ ^= lal + %+ biff alh + |= hal=ankh + (~(get by hat) pax) + =+ lol=(~(get by hot) pax) + |- ^- silk + ?: =([~ lob] lol) + =+ (need (need (read-x let.dom pax))) + ?> ?=(%& -<) + [%done ~ p.-] + ?: =([~ lob] lal) + :+ %done ~ + (need (bind q.ank:(descend-path:(zu (need alh)) pax) tail)) + =+ bol=(~(got by lat.ran) lob) + ?- -.bol + %direct [%volt ~ q.bol] + %indirect [%volt ~ q.bol] + %delta [%pact $(lob q.q.bol) [%volt ~ r.bol]] + == + :: ++ reduce-merge-points |= unk=(set yaki) :: maybe need jet =| gud=(set yaki) @@ -2229,16 +2254,6 @@ ?: %+ levy (~(tap by (~(uni in gud) bun)) ~) |= yak=yaki !(~(has in (~(got by zar) r.yak)) r.n.unk) - :: I'm pretty sure this is just wrong, but given - :: the relative intelligence levels of me and Jared, - :: I'm going to keep it here for a little bit - :: ?: %+ roll (~(tap by (~(uni in gud) bun)) ~) - :: |= [tak=yaki god=?] :: only good + unknown - :: ^- ? - :: ?. god god - :: (~(has in (~(got by zar) r.tak)) n.unk) - :: Also, I'd be curious how often this actually - :: elminates merge points $(gud (~(put in gud) n.unk), unk bun) $(unk bun) -- @@ -2396,7 +2411,7 @@ =^ mos ruf =+ une=(un p.q.hic now hen ruf) =+ ^= zat - abet:(start:(me:ze:(di:wake:une q.q.hic) r.q.hic s.q.hic) t.q.hic) + abet:(start:(me:ze:(di:wake:une q.q.hic) [r.q.hic s.q.hic] ~) t.q.hic) =+ zot=abet.zat :- -.zot =. une (pish:une q.q.hic +.zot ran.zat) @@ -2489,7 +2504,13 @@ =+ wak=wake:une =+ wex=(di:wak syd) =+ dat=?-(+<.q.hin %writ [%& p.q.hin], %made [%| q.q.hin]) - =+ wao=abet:(route:(me:ze:wex her sud) sat dat) + =+ ^- kan=(unit ankh) + %+ biff (~(get by fat.ruf) her) + |= room + %+ bind (~(get by dos) sud) + |= dojo + ank.dom + =+ wao=abet:(route:(me:ze:wex [her sud] kan) sat dat) =+ woo=abet:wao [(weld -.wak -.woo) ..^$(ruf abet:(pish:une syd +.woo ran.wao))] ?: ?=([%auto @ @ @ @ ~] tea) From 4c59877cdf06635d64b0e30f0cb1e04f0d390ae1 Mon Sep 17 00:00:00 2001 From: Anton Dyudin Date: Mon, 27 Apr 2015 17:46:55 -0700 Subject: [PATCH 71/89] slightly fixed stack traces --- main/arvo/clay.hoon | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index 8a2449049..883099e31 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -220,8 +220,10 @@ ^- tage ?: ?=(%| -.res) ~| %ford-fail - ~> %mean.|.(p.res) :: interpolate ford fail into stack trace - !! + |- + ?~ p.res !! + ~> %mean.|.(i.p.res) :: interpolate ford fail into stack trace + $(p.res t.p.res) ?@ p.p.res ~|(%bad-marc !!) p.res @@ -236,7 +238,7 @@ :- [?^(p.i.p.tab !! p.i.p.tab) (slot 4 q.tab)] [?^(q.i.p.tab !! q.i.p.tab) (slot 5 q.tab)] :: - ++ balk :: read and send + ++ balk :: read and send |= [hen=duct cay=(unit (each cage silk)) mun=mood] ^+ +> ?~ cay (blub hen) @@ -250,7 +252,7 @@ |= [hen=duct tym=@da] %_(+> tag :_(tag [hen %pass /tyme %t %rest tym])) :: - ++ blab :: ship result + ++ blab :: ship result |= [hen=duct mun=mood dat=(each cage silk)] ^+ +> ?: ?=(%& -.dat) @@ -260,7 +262,7 @@ %f %exec who [who syd q.mun] ~ p.dat == :: - ++ bleb :: ship sequence + ++ bleb :: ship sequence |= [hen=duct ins=@ud hip=(unit (pair aeon aeon))] ^+ +> %^ blab hen [%w [%ud ins] ~] @@ -269,17 +271,17 @@ [%null [%atom %n] ~] [%nako !>((make-nako:ze u.hip))] :: - ++ blub :: ship stop + ++ blub :: ship stop |= hen=duct %_(+> byn [[hen ~] byn]) :: - ++ duce :: produce request + ++ duce :: produce request |= rov=rove ^+ +> =. qyx (~(put by qyx) hen rov) ?~ ref (mabe rov (cury bait hen)) - |- ^+ +>+.$ :: XX why? + |- ^+ +>+.$ :: XX why? =+ rav=(reve rov) =+ ^= vaw ^- rave ?. ?=([%sing %v *] rav) rav @@ -294,7 +296,7 @@ fod.u.ref (~(put by fod.u.ref) hen inx) == :: - ++ ease :: release request + ++ ease :: release request ^+ . ?~ ref =+ rov=(~(got by qyx) hen) @@ -310,7 +312,7 @@ bom.u.ref (~(del by bom.u.ref) u.nux) == :: - ++ eave :: subscribe + ++ eave :: subscribe |= rav=rave ^+ +> ?- -.rav @@ -346,7 +348,7 @@ (duce `rove`[%many p.rav ptr q.q.rav r.q.rav ear]) == :: - ++ echa :: announce raw + ++ echa :: announce raw |= [wen=@da mer=mizu] ^+ +> %= +> From 280728d1f3d5d667dc8851bfdcec5390d72292d1 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Tue, 28 Apr 2015 14:20:22 -0400 Subject: [PATCH 72/89] sync to main-away --- main/app/helm/core.hook | 2 +- main/arvo/clay.hoon | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/main/app/helm/core.hook b/main/app/helm/core.hook index 259383dfd..0c3fec95d 100644 --- a/main/app/helm/core.hook +++ b/main/app/helm/core.hook @@ -460,7 +460,7 @@ ?~ wil [ost %give %mean ~ %rejected ~]~ :~ [ost %pass / %a %cash p.u.bur q.u.bur u.wil] - [ost %pass / %c %plug our.hid %main (sein our.hid) %main] + [ost %pass / %c %plug our.hid %main (sein our.hid) %main-away] [ost %give %nice ~] == :: diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index 8a2449049..aeb6edd32 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -1539,12 +1539,12 @@ ^+ +> ?: (~(has by mer) ali) (error:he %already-merging ~) - ?: &(=(0 let.dom) !?=(%init gem)) + ?: &(=(0 let.dom) !?=(?(%init %auto) gem)) (error:he %no-bob-desk ~) =. gem.dat gem =. cas.dat [%da now] - ?: ?=(%init gem.dat) - fetch-ali + ?: =(0 let.dom) + fetch-ali(gem.dat %init) =+ (~(get by hit.dom) let.dom) ?~ - (error:he %no-bob--version ~) @@ -2362,7 +2362,7 @@ ^- (list move) %+ turn (limo ~[%main]) |= syd=@tas - [hen %pass / %c %font p.q.hic syd bos syd] + [hen %pass / %c %font p.q.hic syd bos (cat 3 syd '-away')] :: %info ?: =(%$ q.q.hic) From 584fdf569afa8131960c2bbcc242aacea818d4fb Mon Sep 17 00:00:00 2001 From: Galen Wolfe-Pauly Date: Tue, 28 Apr 2015 12:00:46 -0700 Subject: [PATCH 73/89] talk polish --- main/pub/talk/fab/hymn.hook | 2 +- main/pub/talk/src/css/main.css | 3 + main/pub/talk/src/css/main.styl | 3 + .../talk/src/js/actions/MessageActions.coffee | 6 +- .../talk/src/js/actions/StationActions.coffee | 12 +- .../js/components/MessagesComponent.coffee | 43 +- .../src/js/components/TalkComponent.coffee | 15 + main/pub/talk/src/js/main.coffee | 160 +- main/pub/talk/src/js/main.js | 490 +- main/pub/talk/src/js/module.coffee | 9 + main/pub/talk/src/js/module.js | 6360 +++++++++++++++++ main/pub/talk/src/js/move.coffee | 66 + main/pub/talk/src/js/util.coffee | 85 + 13 files changed, 6870 insertions(+), 384 deletions(-) create mode 100644 main/pub/talk/src/js/components/TalkComponent.coffee create mode 100644 main/pub/talk/src/js/module.coffee create mode 100644 main/pub/talk/src/js/module.js create mode 100644 main/pub/talk/src/js/move.coffee create mode 100644 main/pub/talk/src/js/util.coffee diff --git a/main/pub/talk/fab/hymn.hook b/main/pub/talk/fab/hymn.hook index 1dc12a217..d7e36d5f1 100644 --- a/main/pub/talk/fab/hymn.hook +++ b/main/pub/talk/fab/hymn.hook @@ -26,7 +26,7 @@ ;meta(name "viewport", content "width=device-width, height=device-height, ". "initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0"); ;link(type "text/css", rel "stylesheet", href "/main/pub/talk/src/css/main.css"); - ;title: Radio + ;title: urbit talk == ;body ;div#c; diff --git a/main/pub/talk/src/css/main.css b/main/pub/talk/src/css/main.css index 981bbaf75..61b020ada 100644 --- a/main/pub/talk/src/css/main.css +++ b/main/pub/talk/src/css/main.css @@ -296,6 +296,9 @@ body { #messages .message .audi > div { cursor: pointer; } +#messages .message.new { + border-top: 1px solid #e5e5e5; +} .member { width: 12rem; margin: 0.3rem 0.6rem 0.3rem 0; diff --git a/main/pub/talk/src/css/main.styl b/main/pub/talk/src/css/main.styl index e4d543c91..658e0de36 100644 --- a/main/pub/talk/src/css/main.styl +++ b/main/pub/talk/src/css/main.styl @@ -235,6 +235,9 @@ body #messages .message .audi > div cursor pointer +#messages .message.new + border-top 1px solid #e5e5e5 + .member width 12rem margin .3rem .6rem .3rem 0 diff --git a/main/pub/talk/src/js/actions/MessageActions.coffee b/main/pub/talk/src/js/actions/MessageActions.coffee index 315a6244d..78c66564a 100644 --- a/main/pub/talk/src/js/actions/MessageActions.coffee +++ b/main/pub/talk/src/js/actions/MessageActions.coffee @@ -10,7 +10,7 @@ module.exports = listenStation: (station,date) -> if not date then date = window.urb.util.toDate(new Date()) - window.chat.MessagePersistence.listenStation station,date + window.talk.MessagePersistence.listenStation station,date listeningStation: (station) -> MessageDispatcher.handleViewAction @@ -25,7 +25,7 @@ module.exports = getMore: (station,start,end) -> MessageDispatcher.handleViewAction type:"messages-fetch" - window.chat.MessagePersistence.get station,start,end + window.talk.MessagePersistence.get station,start,end sendMessage: (message,audience) -> serial = window.util.uuid32() @@ -64,4 +64,4 @@ module.exports = MessageDispatcher.handleViewAction type:"message-send" message:_message - window.chat.MessagePersistence.sendMessage _message.thought + window.talk.MessagePersistence.sendMessage _message.thought diff --git a/main/pub/talk/src/js/actions/StationActions.coffee b/main/pub/talk/src/js/actions/StationActions.coffee index f7bac708d..8d16d7276 100644 --- a/main/pub/talk/src/js/actions/StationActions.coffee +++ b/main/pub/talk/src/js/actions/StationActions.coffee @@ -28,16 +28,16 @@ module.exports = station:station removeStation: (station) -> - window.chat.StationPersistence.removeStation station + window.talk.StationPersistence.removeStation station setSources: (station,sources) -> - window.chat.StationPersistence.setSources station,window.urb.ship,sources + window.talk.StationPersistence.setSources station,window.urb.ship,sources createStation: (name) -> - window.chat.StationPersistence.createStation name + window.talk.StationPersistence.createStation name listenStation: (station) -> - window.chat.StationPersistence.listenStation station + window.talk.StationPersistence.listenStation station listeningStation: (station) -> StationDispatcher.handleViewAction @@ -51,7 +51,7 @@ module.exports = state:state ping: (_ping) -> - window.chat.StationPersistence.ping _ping + window.talk.StationPersistence.ping _ping loadStations: (stations) -> StationDispatcher.handleServerAction @@ -67,4 +67,4 @@ module.exports = StationDispatcher.handleViewAction type: "station-create" station: station - window.chat.StationPersistence.createStation station \ No newline at end of file + window.talk.StationPersistence.createStation station \ No newline at end of file diff --git a/main/pub/talk/src/js/components/MessagesComponent.coffee b/main/pub/talk/src/js/components/MessagesComponent.coffee index 23c622a18..a52898a68 100644 --- a/main/pub/talk/src/js/components/MessagesComponent.coffee +++ b/main/pub/talk/src/js/components/MessagesComponent.coffee @@ -34,6 +34,7 @@ Message = recl klass = if delivery.indexOf("received") isnt -1 then " received" else " pending" if @props.thought.statement.speech?.lin?.say is false then klass += " say" if @props.thought.statement.speech?.url then klass += " url" + if @props.unseen is true then klass += " new" name = if @props.name then @props.name else "" audi = _.keys @props.thought.audience @@ -46,7 +47,7 @@ Message = recl url = @props.thought.statement.speech.url.url txt = (a {href:url,target:"_blank"}, url) - div {className:"message #{klass}"}, [ + div {className:"message#{klass}"}, [ (div {className:"attr"}, [ div {onClick:@_handleAudi,className:"audi"}, audi (div {onClick:@_handlePm}, (React.createElement Member,{ship:@props.ship})) @@ -72,6 +73,16 @@ module.exports = recl getInitialState: -> @stateFromStore() + _blur: -> + @focussed = false + @lastSeen = @last + + _focus: -> + @focussed = true + @lastSeen = null + $('.message.new').removeClass 'new' + document.title = document.title.replace /\ \([0-9]*\)/, "" + checkMore: -> if $(window).scrollTop() < @paddingTop && @state.fetching is false && @@ -88,6 +99,11 @@ module.exports = recl _.difference(_.keys(@last.thought.audience),@state.audi).length is 0 StationActions.setAudience _.keys(@last.thought.audience) + sortedMessages: (messages) -> + _.sortBy messages, (_message) -> + _message.pending = _message.thought.audience[station] + _message.thought.statement.date + componentDidMount: -> MessageStore.addChangeListener @_onChangeStore StationStore.addChangeListener @_onChangeStore @@ -96,6 +112,9 @@ module.exports = recl MessageActions.listenStation @state.station checkMore = @checkMore $(window).on 'scroll', checkMore + @focussed = true + $(window).on 'blur', @_blur + $(window).on 'focus', @_focus window.util.setScroll() componentDidUpdate: -> @@ -105,8 +124,17 @@ module.exports = recl $window.scrollTop st @lastLength = null else - if $('#writing-container').length > 0 + if not window.util.isScrolling() window.util.setScroll() + + if @focussed is false and @last isnt @lastSeen + _messages = @sortedMessages @state.messages + d = _messages.length-_messages.indexOf(@lastSeen)-1 + t = document.title + if document.title.match(/\([0-9]*\)/) + document.title = document.title.replace /\([0-9]*\)/, "(#{d})" + else + document.title = document.title + " (#{d})" componentWillUnmount: -> MessageStore.removeChangeListener @_onChangeStore @@ -129,10 +157,7 @@ module.exports = recl _station = "~"+window.urb.ship+"/"+station sources = _.clone @state.configs[@state.station]?.sources ? [] sources.push _station - _messages = @state.messages - _messages = _.sortBy _messages, (_message) -> - _message.pending = _message.thought.audience[station] - _message.thought.statement.date + _messages = @sortedMessages @state.messages @last = _messages[_messages.length-1] @length = _messages.length @@ -141,7 +166,11 @@ module.exports = recl @checkMore() if length < @pageSize , 1 - messages = _messages.map (_message) => + lastIndex = if @lastSeen then _messages.indexOf(@lastSeen) else null + + messages = _messages.map (_message,k) => + if lastIndex and lastIndex is k + _message.unseen = true _message.station = @state.station _message._handlePm = @_handlePm _message._handleAudi = @_handleAudi diff --git a/main/pub/talk/src/js/components/TalkComponent.coffee b/main/pub/talk/src/js/components/TalkComponent.coffee new file mode 100644 index 000000000..d9191c9b5 --- /dev/null +++ b/main/pub/talk/src/js/components/TalkComponent.coffee @@ -0,0 +1,15 @@ +recl = React.createClass +recf = React.createFactory +[div] = [React.DOM.div] + +StationComponent = recf require './StationComponent.coffee' +MessagesComponent = recf require './MessagesComponent.coffee' +WritingComponent = recf require './WritingComponent.coffee' + +module.exports = recl + render: -> + (div {}, [ + (div {id:"station-container"}, (StationComponent {})) + (div {id:"messages-container"}, (MessagesComponent {})) + (div {id:"writing-container"}, (WritingComponent {})) + ]) \ No newline at end of file diff --git a/main/pub/talk/src/js/main.coffee b/main/pub/talk/src/js/main.coffee index 5e9fe89c2..39316573d 100644 --- a/main/pub/talk/src/js/main.coffee +++ b/main/pub/talk/src/js/main.coffee @@ -3,91 +3,12 @@ $(() -> rend = React.render - window.chat = {} - window.chat.MessagePersistence = require './persistence/MessagePersistence.coffee' - window.chat.StationPersistence = require './persistence/StationPersistence.coffee' + window.talk = {} + window.talk.MessagePersistence = require './persistence/MessagePersistence.coffee' + window.talk.StationPersistence = require './persistence/StationPersistence.coffee' - window.util = - mainStations: ["court","floor","porch"] - - mainStationPath: (user) -> "~#{user}/#{window.util.mainStation(user)}" - - mainStation: (user) -> - if not user then user = window.urb.user - switch user.length - when 3 - return "court" - when 6 - return "floor" - when 13 - return "porch" - - clipAudi: (audi) -> - audi = audi.join " " - ms = window.util.mainStationPath window.urb.user - regx = new RegExp "/#{ms}","g" - audi = audi.replace regx,"" - audi.split " " - - expandAudi: (audi) -> - audi = audi.join " " - ms = window.util.mainStationPath window.urb.user - if audi.indexOf(ms) is -1 - if audi.length > 0 - audi += " " - audi += "#{ms}" - audi.split " " - - create: (name) -> - window.chat.StationPersistence.createStation name, (err,res) -> - - subscribe: (name) -> - window.chat.StationPersistence.addSource "main",window.urb.ship,["~zod/#{name}"] - - uuid32: -> - str = "0v" - str += Math.ceil(Math.random()*8)+"." - for i in [0..5] - _str = Math.ceil(Math.random()*10000000).toString(32) - _str = ("00000"+_str).substr(-5,5) - str += _str+"." - str.slice(0,-1) - - populate: (station,number) -> - c = 0 - send = -> - if c < number - c++ - else - console.log 'done' - return true - _audi = {} - _audi[station] = "pending" - _message = - serial:window.util.uuid32() - audience:_audi - statement: - speech: - say:"Message "+c - time: Date.now() - now: Date.now() - window.chat.MessagePersistence.sendMessage _message,send - send() - - getScroll: -> - @writingPosition = $('#c').outerHeight(true)+$('#c').offset().top-$(window).height() - - setScroll: -> - window.util.getScroll() - $(window).scrollTop($("#c").height()) - - checkScroll: -> - if not window.util.writingPosition - window.util.getScroll() - if $(window).scrollTop() < window.util.writingPosition - $('body').addClass 'scrolling' - else - $('body').removeClass 'scrolling' + require './util.coffee' + require './move.coffee' # checkScroll = -> # if $(window).scrollTop() > 20 @@ -96,74 +17,7 @@ $(() -> # $('#nav').removeClass 'scrolling' # setInterval checkScroll, 500 - so = {} - so.ls = $(window).scrollTop() - so.cs = $(window).scrollTop() - so.w = null - so.$d = $('#nav > div') - setSo = -> - so.$n = $('#station-container') - so.w = $(window).width() - so.h = $(window).height() - so.dh = $("#c").height() - so.nh = so.$n.outerHeight(true) - setSo() - setInterval setSo,200 - - $(window).on 'resize', (e) -> - if so.w > 1170 - so.$n.removeClass 'm-up m-down m-fixed' - - ldy = 0 - - $(window).on 'scroll', (e) -> - so.cs = $(window).scrollTop() - - if so.w > 1170 - so.$n.removeClass 'm-up m-down m-fixed' - if so.w < 1170 - dy = so.ls-so.cs - - if so.cs <= 0 - so.$n.removeClass 'm-up' - so.$n.addClass 'm-down m-fixed' - return - - if so.cs+so.h > so.dh then return - - if so.$n.hasClass 'm-fixed' and - so.w < 1024 - so.$n.css left:-1*$(window).scrollLeft() - - if dy > 0 and ldy > 0 - if not so.$n.hasClass 'm-down' - so.$n.removeClass('m-up').addClass 'm-down' - top = so.cs-so.nh - if top < 0 then top = 0 - so.$n.offset top:top - if so.$n.hasClass('m-down') and - not so.$n.hasClass('m-fixed') and - so.$n.offset().top >= so.cs - so.$n.addClass 'm-fixed' - so.$n.attr {style:''} - - if dy < 0 and ldy < 0 - if not so.$n.hasClass 'm-up' - so.$n.removeClass 'open' - so.$n.removeClass('m-down m-fixed').addClass 'm-up' - so.$n.attr {style:''} - top = so.cs - sto = so.$n.offset().top - if top < 0 then top = 0 - if top > sto and top < sto+so.nh then top = sto - so.$n.offset top:top - - ldy = dy - so.ls = so.cs - - $(window).on 'scroll', window.util.checkScroll - - window.chat.StationPersistence.listen() + window.talk.StationPersistence.listen() StationComponent = require './components/StationComponent.coffee' MessagesComponent = require './components/MessagesComponent.coffee' @@ -183,4 +37,4 @@ $(() -> rend (React.createElement(StationComponent, {})),$('#station-container')[0] rend (React.createElement(MessagesComponent, {})),$('#messages-container')[0] rend (React.createElement(WritingComponent, {})),$('#writing-container')[0] -) +) \ No newline at end of file diff --git a/main/pub/talk/src/js/main.js b/main/pub/talk/src/js/main.js index 161c22649..5c617d886 100644 --- a/main/pub/talk/src/js/main.js +++ b/main/pub/talk/src/js/main.js @@ -16,7 +16,7 @@ module.exports = { if (!date) { date = window.urb.util.toDate(new Date()); } - return window.chat.MessagePersistence.listenStation(station, date); + return window.talk.MessagePersistence.listenStation(station, date); }, listeningStation: function(station) { return MessageDispatcher.handleViewAction({ @@ -34,7 +34,7 @@ module.exports = { MessageDispatcher.handleViewAction({ type: "messages-fetch" }); - return window.chat.MessagePersistence.get(station, start, end); + return window.talk.MessagePersistence.get(station, start, end); }, sendMessage: function(message, audience) { var _audi, _message, k, serial, v; @@ -82,7 +82,7 @@ module.exports = { type: "message-send", message: _message }); - return window.chat.MessagePersistence.sendMessage(_message.thought); + return window.talk.MessagePersistence.sendMessage(_message.thought); } }; @@ -126,16 +126,16 @@ module.exports = { }); }, removeStation: function(station) { - return window.chat.StationPersistence.removeStation(station); + return window.talk.StationPersistence.removeStation(station); }, setSources: function(station, sources) { - return window.chat.StationPersistence.setSources(station, window.urb.ship, sources); + return window.talk.StationPersistence.setSources(station, window.urb.ship, sources); }, createStation: function(name) { - return window.chat.StationPersistence.createStation(name); + return window.talk.StationPersistence.createStation(name); }, listenStation: function(station) { - return window.chat.StationPersistence.listenStation(station); + return window.talk.StationPersistence.listenStation(station); }, listeningStation: function(station) { return StationDispatcher.handleViewAction({ @@ -151,7 +151,7 @@ module.exports = { }); }, ping: function(_ping) { - return window.chat.StationPersistence.ping(_ping); + return window.talk.StationPersistence.ping(_ping); }, loadStations: function(stations) { return StationDispatcher.handleServerAction({ @@ -170,7 +170,7 @@ module.exports = { type: "station-create", station: station }); - return window.chat.StationPersistence.createStation(station); + return window.talk.StationPersistence.createStation(station); } }; @@ -265,6 +265,9 @@ Message = recl({ if ((ref3 = this.props.thought.statement.speech) != null ? ref3.url : void 0) { klass += " url"; } + if (this.props.unseen === true) { + klass += " new"; + } name = this.props.name ? this.props.name : ""; audi = _.keys(this.props.thought.audience); audi = _.without(audi, window.util.mainStationPath(window.urb.user)); @@ -283,7 +286,7 @@ Message = recl({ }, url); } return div({ - className: "message " + klass + className: "message" + klass }, [ div({ className: "attr" @@ -323,6 +326,16 @@ module.exports = recl({ getInitialState: function() { return this.stateFromStore(); }, + _blur: function() { + this.focussed = false; + return this.lastSeen = this.last; + }, + _focus: function() { + this.focussed = true; + this.lastSeen = null; + $('.message.new').removeClass('new'); + return document.title = document.title.replace(/\ \([0-9]*\)/, ""); + }, checkMore: function() { var end; if ($(window).scrollTop() < this.paddingTop && this.state.fetching === false && this.state.last && this.state.last > 0) { @@ -342,6 +355,12 @@ module.exports = recl({ return StationActions.setAudience(_.keys(this.last.thought.audience)); } }, + sortedMessages: function(messages) { + return _.sortBy(messages, function(_message) { + _message.pending = _message.thought.audience[station]; + return _message.thought.statement.date; + }); + }, componentDidMount: function() { var checkMore; MessageStore.addChangeListener(this._onChangeStore); @@ -351,18 +370,31 @@ module.exports = recl({ } checkMore = this.checkMore; $(window).on('scroll', checkMore); + this.focussed = true; + $(window).on('blur', this._blur); + $(window).on('focus', this._focus); return window.util.setScroll(); }, componentDidUpdate: function() { - var $window, st; + var $window, _messages, d, st, t; $window = $(window); if (this.lastLength) { st = $window.height(); $window.scrollTop(st); - return this.lastLength = null; + this.lastLength = null; } else { - if ($('#writing-container').length > 0) { - return window.util.setScroll(); + if (!window.util.isScrolling()) { + window.util.setScroll(); + } + } + if (this.focussed === false && this.last !== this.lastSeen) { + _messages = this.sortedMessages(this.state.messages); + d = _messages.length - _messages.indexOf(this.lastSeen) - 1; + t = document.title; + if (document.title.match(/\([0-9]*\)/)) { + return document.title = document.title.replace(/\([0-9]*\)/, "(" + d + ")"); + } else { + return document.title = document.title + (" (" + d + ")"); } } }, @@ -385,16 +417,12 @@ module.exports = recl({ return StationActions.setAudience(audi); }, render: function() { - var _messages, _station, messages, ref1, ref2, sources, station; + var _messages, _station, lastIndex, messages, ref1, ref2, sources, station; station = this.state.station; _station = "~" + window.urb.ship + "/" + station; sources = _.clone((ref1 = (ref2 = this.state.configs[this.state.station]) != null ? ref2.sources : void 0) != null ? ref1 : []); sources.push(_station); - _messages = this.state.messages; - _messages = _.sortBy(_messages, function(_message) { - _message.pending = _message.thought.audience[station]; - return _message.thought.statement.date; - }); + _messages = this.sortedMessages(this.state.messages); this.last = _messages[_messages.length - 1]; this.length = _messages.length; setTimeout((function(_this) { @@ -404,8 +432,12 @@ module.exports = recl({ } }; })(this), 1); + lastIndex = this.lastSeen ? _messages.indexOf(this.lastSeen) : null; messages = _messages.map((function(_this) { - return function(_message) { + return function(_message, k) { + if (lastIndex && lastIndex === k) { + _message.unseen = true; + } _message.station = _this.state.station; _message._handlePm = _this._handlePm; _message._handleAudi = _this._handleAudi; @@ -847,198 +879,15 @@ module.exports = _.merge(new Dispatcher(), { },{"flux":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/node_modules/flux/index.js"}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/main.coffee":[function(require,module,exports){ $(function() { - var $c, MessagesComponent, StationActions, StationComponent, WritingComponent, clean, ldy, rend, setSo, so; + var $c, MessagesComponent, StationActions, StationComponent, WritingComponent, clean, rend; StationActions = require('./actions/StationActions.coffee'); rend = React.render; - window.chat = {}; - window.chat.MessagePersistence = require('./persistence/MessagePersistence.coffee'); - window.chat.StationPersistence = require('./persistence/StationPersistence.coffee'); - window.util = { - mainStations: ["court", "floor", "porch"], - mainStationPath: function(user) { - return "~" + user + "/" + (window.util.mainStation(user)); - }, - mainStation: function(user) { - if (!user) { - user = window.urb.user; - } - switch (user.length) { - case 3: - return "court"; - case 6: - return "floor"; - case 13: - return "porch"; - } - }, - clipAudi: function(audi) { - var ms, regx; - audi = audi.join(" "); - ms = window.util.mainStationPath(window.urb.user); - regx = new RegExp("/" + ms, "g"); - audi = audi.replace(regx, ""); - return audi.split(" "); - }, - expandAudi: function(audi) { - var ms; - audi = audi.join(" "); - ms = window.util.mainStationPath(window.urb.user); - if (audi.indexOf(ms) === -1) { - if (audi.length > 0) { - audi += " "; - } - audi += "" + ms; - } - return audi.split(" "); - }, - create: function(name) { - return window.chat.StationPersistence.createStation(name, function(err, res) {}); - }, - subscribe: function(name) { - return window.chat.StationPersistence.addSource("main", window.urb.ship, ["~zod/" + name]); - }, - uuid32: function() { - var _str, i, j, str; - str = "0v"; - str += Math.ceil(Math.random() * 8) + "."; - for (i = j = 0; j <= 5; i = ++j) { - _str = Math.ceil(Math.random() * 10000000).toString(32); - _str = ("00000" + _str).substr(-5, 5); - str += _str + "."; - } - return str.slice(0, -1); - }, - populate: function(station, number) { - var c, send; - c = 0; - send = function() { - var _audi, _message; - if (c < number) { - c++; - } else { - console.log('done'); - return true; - } - _audi = {}; - _audi[station] = "pending"; - _message = { - serial: window.util.uuid32(), - audience: _audi, - statement: { - speech: { - say: "Message " + c - }, - time: Date.now(), - now: Date.now() - } - }; - return window.chat.MessagePersistence.sendMessage(_message, send); - }; - return send(); - }, - getScroll: function() { - return this.writingPosition = $('#c').outerHeight(true) + $('#c').offset().top - $(window).height(); - }, - setScroll: function() { - window.util.getScroll(); - return $(window).scrollTop($("#c").height()); - }, - checkScroll: function() { - if (!window.util.writingPosition) { - window.util.getScroll(); - } - if ($(window).scrollTop() < window.util.writingPosition) { - return $('body').addClass('scrolling'); - } else { - return $('body').removeClass('scrolling'); - } - } - }; - so = {}; - so.ls = $(window).scrollTop(); - so.cs = $(window).scrollTop(); - so.w = null; - so.$d = $('#nav > div'); - setSo = function() { - so.$n = $('#station-container'); - so.w = $(window).width(); - so.h = $(window).height(); - so.dh = $("#c").height(); - return so.nh = so.$n.outerHeight(true); - }; - setSo(); - setInterval(setSo, 200); - $(window).on('resize', function(e) { - if (so.w > 1170) { - return so.$n.removeClass('m-up m-down m-fixed'); - } - }); - ldy = 0; - $(window).on('scroll', function(e) { - var dy, sto, top; - so.cs = $(window).scrollTop(); - if (so.w > 1170) { - so.$n.removeClass('m-up m-down m-fixed'); - } - if (so.w < 1170) { - dy = so.ls - so.cs; - if (so.cs <= 0) { - so.$n.removeClass('m-up'); - so.$n.addClass('m-down m-fixed'); - return; - } - if (so.cs + so.h > so.dh) { - return; - } - if (so.$n.hasClass('m-fixed' && so.w < 1024)) { - so.$n.css({ - left: -1 * $(window).scrollLeft() - }); - } - if (dy > 0 && ldy > 0) { - if (!so.$n.hasClass('m-down')) { - so.$n.removeClass('m-up').addClass('m-down'); - top = so.cs - so.nh; - if (top < 0) { - top = 0; - } - so.$n.offset({ - top: top - }); - } - if (so.$n.hasClass('m-down') && !so.$n.hasClass('m-fixed') && so.$n.offset().top >= so.cs) { - so.$n.addClass('m-fixed'); - so.$n.attr({ - style: '' - }); - } - } - if (dy < 0 && ldy < 0) { - if (!so.$n.hasClass('m-up')) { - so.$n.removeClass('open'); - so.$n.removeClass('m-down m-fixed').addClass('m-up'); - so.$n.attr({ - style: '' - }); - top = so.cs; - sto = so.$n.offset().top; - if (top < 0) { - top = 0; - } - if (top > sto && top < sto + so.nh) { - top = sto; - } - so.$n.offset({ - top: top - }); - } - } - } - ldy = dy; - return so.ls = so.cs; - }); - $(window).on('scroll', window.util.checkScroll); - window.chat.StationPersistence.listen(); + window.talk = {}; + window.talk.MessagePersistence = require('./persistence/MessagePersistence.coffee'); + window.talk.StationPersistence = require('./persistence/StationPersistence.coffee'); + require('./util.coffee'); + require('./move.coffee'); + window.talk.StationPersistence.listen(); StationComponent = require('./components/StationComponent.coffee'); MessagesComponent = require('./components/MessagesComponent.coffee'); WritingComponent = require('./components/WritingComponent.coffee'); @@ -1059,9 +908,110 @@ $(function() { -},{"./actions/StationActions.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/actions/StationActions.coffee","./components/MessagesComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/components/MessagesComponent.coffee","./components/StationComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/components/StationComponent.coffee","./components/WritingComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/components/WritingComponent.coffee","./persistence/MessagePersistence.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/persistence/MessagePersistence.coffee","./persistence/StationPersistence.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/persistence/StationPersistence.coffee"}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/node_modules/flux/index.js":[function(require,module,exports){ +},{"./actions/StationActions.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/actions/StationActions.coffee","./components/MessagesComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/components/MessagesComponent.coffee","./components/StationComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/components/StationComponent.coffee","./components/WritingComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/components/WritingComponent.coffee","./move.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/move.coffee","./persistence/MessagePersistence.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/persistence/MessagePersistence.coffee","./persistence/StationPersistence.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/persistence/StationPersistence.coffee","./util.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/util.coffee"}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/move.coffee":[function(require,module,exports){ +var ldy, setSo, so; + +so = {}; + +so.ls = $(window).scrollTop(); + +so.cs = $(window).scrollTop(); + +so.w = null; + +so.$d = $('#nav > div'); + +setSo = function() { + so.$n = $('#station-container'); + so.w = $(window).width(); + so.h = $(window).height(); + so.dh = $("#c").height(); + return so.nh = so.$n.outerHeight(true); +}; + +setSo(); + +setInterval(setSo, 200); + +$(window).on('resize', function(e) { + if (so.w > 1170) { + return so.$n.removeClass('m-up m-down m-fixed'); + } +}); + +ldy = 0; + +$(window).on('scroll', function(e) { + var dy, sto, top; + so.cs = $(window).scrollTop(); + if (so.w > 1170) { + so.$n.removeClass('m-up m-down m-fixed'); + } + if (so.w < 1170) { + dy = so.ls - so.cs; + if (so.cs <= 0) { + so.$n.removeClass('m-up'); + so.$n.addClass('m-down m-fixed'); + return; + } + if (so.cs + so.h > so.dh) { + return; + } + if (so.$n.hasClass('m-fixed' && so.w < 1024)) { + so.$n.css({ + left: -1 * $(window).scrollLeft() + }); + } + if (dy > 0 && ldy > 0) { + if (!so.$n.hasClass('m-down')) { + so.$n.removeClass('m-up').addClass('m-down'); + top = so.cs - so.nh; + if (top < 0) { + top = 0; + } + so.$n.offset({ + top: top + }); + } + if (so.$n.hasClass('m-down') && !so.$n.hasClass('m-fixed') && so.$n.offset().top >= so.cs) { + so.$n.addClass('m-fixed'); + so.$n.attr({ + style: '' + }); + } + } + if (dy < 0 && ldy < 0) { + if (!so.$n.hasClass('m-up')) { + so.$n.removeClass('open'); + so.$n.removeClass('m-down m-fixed').addClass('m-up'); + so.$n.attr({ + style: '' + }); + top = so.cs; + sto = so.$n.offset().top; + if (top < 0) { + top = 0; + } + if (top > sto && top < sto + so.nh) { + top = sto; + } + so.$n.offset({ + top: top + }); + } + } + } + ldy = dy; + return so.ls = so.cs; +}); + +$(window).on('scroll', window.util.checkScroll); + + + +},{}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/node_modules/flux/index.js":[function(require,module,exports){ /** - * Copyright (c) 2014, Facebook, Inc. + * Copyright (c) 2014-2015, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the @@ -6009,7 +5959,119 @@ module.exports = StationStore; -},{"../dispatcher/Dispatcher.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/dispatcher/Dispatcher.coffee","events":"/usr/local/lib/node_modules/watchify/node_modules/browserify/node_modules/events/events.js"}],"/usr/local/lib/node_modules/watchify/node_modules/browserify/node_modules/events/events.js":[function(require,module,exports){ +},{"../dispatcher/Dispatcher.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/dispatcher/Dispatcher.coffee","events":"/usr/local/lib/node_modules/watchify/node_modules/browserify/node_modules/events/events.js"}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/util.coffee":[function(require,module,exports){ +if (!window.util) { + window.util = {}; +} + +_.merge(window.util, { + mainStations: ["court", "floor", "porch"], + mainStationPath: function(user) { + return "~" + user + "/" + (window.util.mainStation(user)); + }, + mainStation: function(user) { + if (!user) { + user = window.urb.user; + } + switch (user.length) { + case 3: + return "court"; + case 6: + return "floor"; + case 13: + return "porch"; + } + }, + clipAudi: function(audi) { + var ms, regx; + audi = audi.join(" "); + ms = window.util.mainStationPath(window.urb.user); + regx = new RegExp("/" + ms, "g"); + audi = audi.replace(regx, ""); + return audi.split(" "); + }, + expandAudi: function(audi) { + var ms; + audi = audi.join(" "); + ms = window.util.mainStationPath(window.urb.user); + if (audi.indexOf(ms) === -1) { + if (audi.length > 0) { + audi += " "; + } + audi += "" + ms; + } + return audi.split(" "); + }, + create: function(name) { + return window.talk.StationPersistence.createStation(name, function(err, res) {}); + }, + subscribe: function(name) { + return window.talk.StationPersistence.addSource("main", window.urb.ship, ["~zod/" + name]); + }, + uuid32: function() { + var _str, i, j, str; + str = "0v"; + str += Math.ceil(Math.random() * 8) + "."; + for (i = j = 0; j <= 5; i = ++j) { + _str = Math.ceil(Math.random() * 10000000).toString(32); + _str = ("00000" + _str).substr(-5, 5); + str += _str + "."; + } + return str.slice(0, -1); + }, + populate: function(station, number) { + var c, send; + c = 0; + send = function() { + var _audi, _message; + if (c < number) { + c++; + } else { + console.log('done'); + return true; + } + _audi = {}; + _audi[station] = "pending"; + _message = { + serial: window.util.uuid32(), + audience: _audi, + statement: { + speech: { + say: "Message " + c + }, + time: Date.now(), + now: Date.now() + } + }; + return window.talk.MessagePersistence.sendMessage(_message, send); + }; + return send(); + }, + getScroll: function() { + return this.writingPosition = $('#c').outerHeight(true) + $('#c').offset().top - $(window).height(); + }, + setScroll: function() { + window.util.getScroll(); + return $(window).scrollTop($("#c").height()); + }, + isScrolling: function() { + if (!window.util.writingPosition) { + window.util.getScroll(); + } + return $(window).scrollTop() < window.util.writingPosition; + }, + checkScroll: function() { + if (this.isScrolling()) { + return $('body').addClass('scrolling'); + } else { + return $('body').removeClass('scrolling'); + } + } +}); + + + +},{}],"/usr/local/lib/node_modules/watchify/node_modules/browserify/node_modules/events/events.js":[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a diff --git a/main/pub/talk/src/js/module.coffee b/main/pub/talk/src/js/module.coffee new file mode 100644 index 000000000..15f3f72d8 --- /dev/null +++ b/main/pub/talk/src/js/module.coffee @@ -0,0 +1,9 @@ +require './util.coffee' +require './move.coffee' + +window.talk = + Component: require './components/TalkComponent.coffee' + MessagePersistence: require './persistence/MessagePersistence.coffee' + StationPersistence: require './persistence/StationPersistence.coffee' + init: (el) -> + @StationPersistence.listen() \ No newline at end of file diff --git a/main/pub/talk/src/js/module.js b/main/pub/talk/src/js/module.js new file mode 100644 index 000000000..5bc8efd07 --- /dev/null +++ b/main/pub/talk/src/js/module.js @@ -0,0 +1,6360 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0) { + end = this.state.last - this.pageSize; + if (end < 0) { + end = 0; + } + this.lastLength = this.length; + return MessageActions.getMore(this.state.station, this.state.last + 1, end); + } + }, + setAudience: function() { + if (!this.last) { + return; + } + if (_.keys(this.last.thought.audience).length > 0 && this.state.typing === false && _.difference(_.keys(this.last.thought.audience), this.state.audi).length === 0) { + return StationActions.setAudience(_.keys(this.last.thought.audience)); + } + }, + componentDidMount: function() { + var checkMore; + MessageStore.addChangeListener(this._onChangeStore); + StationStore.addChangeListener(this._onChangeStore); + if (this.state.station && this.state.listening.indexOf(this.state.station) === -1) { + MessageActions.listenStation(this.state.station); + } + checkMore = this.checkMore; + $(window).on('scroll', checkMore); + return window.util.setScroll(); + }, + componentDidUpdate: function() { + var $window, st; + $window = $(window); + if (this.lastLength) { + st = $window.height(); + $window.scrollTop(st); + return this.lastLength = null; + } else { + if ($('#writing-container').length > 0) { + return window.util.setScroll(); + } + } + }, + componentWillUnmount: function() { + MessageStore.removeChangeListener(this._onChangeStore); + return StationStore.removeChangeListener(this._onChangeStore); + }, + _onChangeStore: function() { + return this.setState(this.stateFromStore()); + }, + _handlePm: function(user) { + var audi; + audi = [window.util.mainStationPath(user), window.util.mainStationPath(window.urb.user)]; + if (user === window.urb.user) { + audi.pop(); + } + return StationActions.setAudience(audi); + }, + _handleAudi: function(audi) { + return StationActions.setAudience(audi); + }, + render: function() { + var _messages, _station, messages, ref1, ref2, sources, station; + station = this.state.station; + _station = "~" + window.urb.ship + "/" + station; + sources = _.clone((ref1 = (ref2 = this.state.configs[this.state.station]) != null ? ref2.sources : void 0) != null ? ref1 : []); + sources.push(_station); + _messages = this.state.messages; + _messages = _.sortBy(_messages, function(_message) { + _message.pending = _message.thought.audience[station]; + return _message.thought.statement.date; + }); + this.last = _messages[_messages.length - 1]; + this.length = _messages.length; + setTimeout((function(_this) { + return function() { + if (length < _this.pageSize) { + return _this.checkMore(); + } + }; + })(this), 1); + messages = _messages.map((function(_this) { + return function(_message) { + _message.station = _this.state.station; + _message._handlePm = _this._handlePm; + _message._handleAudi = _this._handleAudi; + return React.createElement(Message, _message); + }; + })(this)); + return div({ + id: "messages" + }, messages); + } +}); + + + +},{"../actions/MessageActions.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/actions/MessageActions.coffee","../actions/StationActions.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/actions/StationActions.coffee","../stores/MessageStore.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/stores/MessageStore.coffee","../stores/StationStore.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/stores/StationStore.coffee","./MemberComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/components/MemberComponent.coffee","moment-timezone":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/node_modules/moment-timezone/index.js"}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/components/StationComponent.coffee":[function(require,module,exports){ +var Member, StationActions, StationStore, a, div, h1, input, recl, ref, textarea; + +recl = React.createClass; + +ref = [React.DOM.div, React.DOM.input, React.DOM.textarea, React.DOM.h1, React.DOM.a], div = ref[0], input = ref[1], textarea = ref[2], h1 = ref[3], a = ref[4]; + +StationStore = require('../stores/StationStore.coffee'); + +StationActions = require('../actions/StationActions.coffee'); + +Member = require('./MemberComponent.coffee'); + +module.exports = recl({ + stateFromStore: function() { + return { + audi: StationStore.getAudience(), + members: StationStore.getMembers(), + station: window.util.mainStation(), + stations: StationStore.getStations(), + configs: StationStore.getConfigs(), + typing: StationStore.getTyping(), + listening: StationStore.getListening() + }; + }, + getInitialState: function() { + return this.stateFromStore(); + }, + componentDidMount: function() { + this.$el = $(this.getDOMNode()); + this.$input = this.$el.find('input'); + StationStore.addChangeListener(this._onChangeStore); + if (this.state.listening.indexOf(this.state.station) === -1) { + return StationActions.listenStation(this.state.station); + } + }, + componentWillUnmount: function() { + return StationStore.removeChangeListener(this._onChangeStore); + }, + _onChangeStore: function() { + return this.setState(this.stateFromStore()); + }, + _toggleOpen: function(e) { + if ($(e.target).closest('.sour-ctrl').length > 0) { + return; + } + return $("#station-container").toggleClass('open'); + }, + _keyUp: function(e) { + var _sources, v; + if (e.keyCode === 13) { + v = this.$input.val(); + if (this.state.configs[this.state.station].sources.indexOf(v) === -1) { + _sources = _.clone(this.state.configs[this.state.station].sources); + _sources.push(v); + StationActions.setSources(this.state.station, _sources); + this.$input.val(''); + return this.$input.blur(); + } + } + }, + _remove: function(e) { + var _sources, _station; + e.stopPropagation(); + e.preventDefault(); + _station = $(e.target).attr("data-station"); + _sources = _.clone(this.state.configs[this.state.station].sources); + _sources.splice(_sources.indexOf(_station), 1); + return StationActions.setSources(this.state.station, _sources); + }, + render: function() { + var _remove, _sources, head, members, parts, sourceCtrl, sourceInput, sources; + parts = []; + members = []; + if (this.state.station && this.state.members) { + members = _.map(this.state.members, function(stations, member) { + var audi; + audi = _.map(stations, function(presence, station) { + return div({ + className: "audi" + }, station); + }); + return div({}, [ + audi, React.createElement(Member, { + ship: member + }) + ]); + }); + } else { + members = ""; + } + sourceInput = [ + input({ + className: "join", + onKeyUp: this._keyUp, + placeholder: "+" + }, "") + ]; + sourceCtrl = div({ + className: "sour-ctrl" + }, sourceInput); + sources = []; + if (this.state.station && this.state.configs[this.state.station]) { + _remove = this._remove; + _sources = _.clone(this.state.configs[this.state.station].sources); + sources = _.map(_sources, (function(_this) { + return function(source) { + return div({ + className: "station" + }, [ + div({ + className: "remove", + onClick: _remove, + "data-station": source + }, "×"), div({ + className: "path" + }, source) + ]); + }; + })(this)); + } else { + sources = ""; + } + head = div({ + id: "head" + }, [ + div({ + id: "where" + }, [ + "/talk", div({ + className: "caret" + }, "") + ]), div({ + id: "who" + }, [ + div({ + className: "circle" + }, ""), "~" + window.urb.user + ]) + ]); + parts.push(head); + parts.push(div({ + id: "stations" + }, [h1({}, "Listening to"), div({}, sources), sourceCtrl])); + parts.push(div({ + id: "audience" + }, div({}, [ + h1({}, "Talking to"), div({ + id: "members" + }, members) + ]))); + return div({ + id: "station", + onClick: this._toggleOpen + }, parts); + } +}); + + + +},{"../actions/StationActions.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/actions/StationActions.coffee","../stores/StationStore.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/stores/StationStore.coffee","./MemberComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/components/MemberComponent.coffee"}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/components/TalkComponent.coffee":[function(require,module,exports){ +var MessagesComponent, StationComponent, WritingComponent, div, recf, recl; + +recl = React.createClass; + +recf = React.createFactory; + +div = [React.DOM.div][0]; + +StationComponent = recf(require('./StationComponent.coffee')); + +MessagesComponent = recf(require('./MessagesComponent.coffee')); + +WritingComponent = recf(require('./WritingComponent.coffee')); + +module.exports = recl({ + render: function() { + return div({}, [ + div({ + id: "station-container" + }, StationComponent({})), div({ + id: "messages-container" + }, MessagesComponent({})), div({ + id: "writing-container" + }, WritingComponent({})) + ]); + } +}); + + + +},{"./MessagesComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/components/MessagesComponent.coffee","./StationComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/components/StationComponent.coffee","./WritingComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/components/WritingComponent.coffee"}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/components/WritingComponent.coffee":[function(require,module,exports){ +var Member, MessageActions, MessageStore, StationActions, StationStore, br, div, input, recl, ref, textarea; + +recl = React.createClass; + +ref = [React.DOM.div, React.DOM.br, React.DOM.input, React.DOM.textarea], div = ref[0], br = ref[1], input = ref[2], textarea = ref[3]; + +MessageActions = require('../actions/MessageActions.coffee'); + +MessageStore = require('../stores/MessageStore.coffee'); + +StationActions = require('../actions/StationActions.coffee'); + +StationStore = require('../stores/StationStore.coffee'); + +Member = require('./MemberComponent.coffee'); + +module.exports = recl({ + set: function() { + if (window.localStorage && this.$writing) { + return window.localStorage.setItem('writing', this.$writing.text()); + } + }, + get: function() { + if (window.localStorage) { + return window.localStorage.getItem('writing'); + } + }, + stateFromStore: function() { + var s; + s = { + audi: StationStore.getAudience(), + ludi: MessageStore.getLastAudience(), + members: StationStore.getMembers(), + typing: StationStore.getTyping(), + valid: StationStore.getValidAudience() + }; + s.audi = _.without(s.audi, window.util.mainStationPath(window.urb.user)); + s.ludi = _.without(s.ludi, window.util.mainStationPath(window.urb.user)); + return s; + }, + getInitialState: function() { + return this.stateFromStore(); + }, + typing: function(state) { + if (this.state.typing[this.state.station] !== state) { + return StationActions.setTyping(this.state.station, state); + } + }, + _blur: function() { + MessageActions.setTyping(false); + return this.typing(false); + }, + _focus: function() { + MessageActions.setTyping(true); + return this.typing(true); + }, + sendMessage: function() { + var audi; + if (this._validateAudi() === false) { + $('#audi').focus(); + return; + } + if (this.state.audi.length === 0 && $('#audi').text().trim().length > 0) { + audi = this.state.ludi; + this._setAudi(); + } else { + audi = this.state.audi; + } + audi = window.util.expandAudi(audi); + MessageActions.sendMessage(this.$writing.text().trim(), audi); + this.$length.text("0/69"); + this.$writing.text(''); + this.set(); + return this.typing(false); + }, + _audiKeyDown: function(e) { + if (e.keyCode === 13) { + e.preventDefault(); + setTimeout(function() { + return $('#writing').focus(); + }, 0); + return false; + } + }, + _writingKeyUp: function(e) { + if (!window.urb.util.isURL(this.$writing.text())) { + return this.$length.toggleClass('valid-false', this.$writing.text().length > 62); + } + }, + _writingKeyDown: function(e) { + var txt; + if (e.keyCode === 13) { + txt = this.$writing.text(); + e.preventDefault(); + if ((txt.length > 0 && txt.length < 63) || window.urb.util.isURL(this.$writing.text())) { + this.sendMessage(); + } + return false; + } + this._input(); + return this.set(); + }, + _input: function(e) { + var length, text; + text = this.$writing.text(); + length = text.length; + return this.$length.text(length + "/62"); + }, + _setFocus: function() { + return this.$writing.focus(); + }, + _validateAudiPart: function(a) { + var _a, ship; + if (a[0] !== "~") { + return false; + } + if (a.indexOf("/") !== -1) { + _a = a.split("/"); + if (_a[1].length === 0) { + return false; + } + ship = _a[0]; + } else { + ship = a; + } + if (ship.length < 3) { + return false; + } + return true; + }, + _validateAudi: function() { + var a, i, len, v, valid; + v = $('#audi').text(); + v = v.trim(); + if (v.length === 0) { + return true; + } + v = v.split(" "); + for (i = 0, len = v.length; i < len; i++) { + a = v[i]; + a = a.trim(); + valid = this._validateAudiPart(a); + } + return valid; + }, + _setAudi: function() { + var v, valid; + valid = this._validateAudi(); + StationActions.setValidAudience(valid); + if (valid === true) { + v = $('#audi').text(); + v = v.split(" "); + v = window.util.expandAudi(v); + return StationActions.setAudience(v); + } + }, + getTime: function() { + var d, seconds; + d = new Date(); + seconds = d.getSeconds(); + if (seconds < 10) { + seconds = "0" + seconds; + } + return "~" + d.getHours() + "." + d.getMinutes() + "." + seconds; + }, + cursorAtEnd: function() { + var range, selection; + range = document.createRange(); + range.selectNodeContents(this.$writing[0]); + range.collapse(false); + selection = window.getSelection(); + selection.removeAllRanges(); + return selection.addRange(range); + }, + componentDidMount: function() { + window.util.sendMessage = this.sendMessage; + StationStore.addChangeListener(this._onChangeStore); + MessageStore.addChangeListener(this._onChangeStore); + this.$el = $(this.getDOMNode()); + this.$length = $('#length'); + this.$writing = $('#writing'); + this.$writing.focus(); + if (this.get()) { + this.$writing.text(this.get()); + this._input(); + } + return this.interval = setInterval((function(_this) { + return function() { + return _this.$el.find('.time').text(_this.getTime()); + }; + })(this), 1000); + }, + componentWillUnmount: function() { + StationStore.removeChangeListener(this._onChangeStore); + return clearInterval(this.interval); + }, + _onChangeStore: function() { + return this.setState(this.stateFromStore()); + }, + render: function() { + var audi, iden, k, name, ship, user; + user = "~" + window.urb.user; + iden = StationStore.getMember(user); + ship = iden ? iden.ship : user; + name = iden ? iden.name : ""; + audi = this.state.audi.length === 0 ? this.state.ludi : this.state.audi; + audi = window.util.clipAudi(audi); + k = "writing"; + return div({ + className: k + }, [ + div({ + className: "attr" + }, [ + div({ + id: "audi", + className: "audi valid-" + this.state.valid, + contentEditable: true, + onKeyDown: this._audiKeyDown, + onBlur: this._setAudi + }, audi.join(" ")), React.createElement(Member, iden), div({ + className: "time" + }, this.getTime()) + ]), div({ + id: "writing", + contentEditable: true, + onFocus: this._focus, + onBlur: this._blur, + onInput: this._input, + onPaste: this._input, + onKeyDown: this._writingKeyDown, + onKeyUp: this._writingKeyUp, + onFocus: this.cursorAtEnd + }, ""), div({ + id: "length" + }, "0/62") + ]); + } +}); + + + +},{"../actions/MessageActions.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/actions/MessageActions.coffee","../actions/StationActions.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/actions/StationActions.coffee","../stores/MessageStore.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/stores/MessageStore.coffee","../stores/StationStore.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/stores/StationStore.coffee","./MemberComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/components/MemberComponent.coffee"}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/dispatcher/Dispatcher.coffee":[function(require,module,exports){ +var Dispatcher; + +Dispatcher = require('flux').Dispatcher; + +module.exports = _.merge(new Dispatcher(), { + handleServerAction: function(action) { + return this.dispatch({ + source: 'server', + action: action + }); + }, + handleViewAction: function(action) { + return this.dispatch({ + source: 'view', + action: action + }); + } +}); + + + +},{"flux":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/node_modules/flux/index.js"}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/module.coffee":[function(require,module,exports){ +require('./util.coffee'); + +require('./move.coffee'); + +window.talk = { + Component: require('./components/TalkComponent.coffee'), + MessagePersistence: require('./persistence/MessagePersistence.coffee'), + StationPersistence: require('./persistence/StationPersistence.coffee'), + init: function(el) { + return this.StationPersistence.listen(); + } +}; + + + +},{"./components/TalkComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/components/TalkComponent.coffee","./move.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/move.coffee","./persistence/MessagePersistence.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/persistence/MessagePersistence.coffee","./persistence/StationPersistence.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/persistence/StationPersistence.coffee","./util.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/util.coffee"}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/move.coffee":[function(require,module,exports){ +var ldy, setSo, so; + +so = {}; + +so.ls = $(window).scrollTop(); + +so.cs = $(window).scrollTop(); + +so.w = null; + +so.$d = $('#nav > div'); + +setSo = function() { + so.$n = $('#station-container'); + so.w = $(window).width(); + so.h = $(window).height(); + so.dh = $("#c").height(); + return so.nh = so.$n.outerHeight(true); +}; + +setSo(); + +setInterval(setSo, 200); + +$(window).on('resize', function(e) { + if (so.w > 1170) { + return so.$n.removeClass('m-up m-down m-fixed'); + } +}); + +ldy = 0; + +$(window).on('scroll', function(e) { + var dy, sto, top; + so.cs = $(window).scrollTop(); + if (so.w > 1170) { + so.$n.removeClass('m-up m-down m-fixed'); + } + if (so.w < 1170) { + dy = so.ls - so.cs; + if (so.cs <= 0) { + so.$n.removeClass('m-up'); + so.$n.addClass('m-down m-fixed'); + return; + } + if (so.cs + so.h > so.dh) { + return; + } + if (so.$n.hasClass('m-fixed' && so.w < 1024)) { + so.$n.css({ + left: -1 * $(window).scrollLeft() + }); + } + if (dy > 0 && ldy > 0) { + if (!so.$n.hasClass('m-down')) { + so.$n.removeClass('m-up').addClass('m-down'); + top = so.cs - so.nh; + if (top < 0) { + top = 0; + } + so.$n.offset({ + top: top + }); + } + if (so.$n.hasClass('m-down') && !so.$n.hasClass('m-fixed') && so.$n.offset().top >= so.cs) { + so.$n.addClass('m-fixed'); + so.$n.attr({ + style: '' + }); + } + } + if (dy < 0 && ldy < 0) { + if (!so.$n.hasClass('m-up')) { + so.$n.removeClass('open'); + so.$n.removeClass('m-down m-fixed').addClass('m-up'); + so.$n.attr({ + style: '' + }); + top = so.cs; + sto = so.$n.offset().top; + if (top < 0) { + top = 0; + } + if (top > sto && top < sto + so.nh) { + top = sto; + } + so.$n.offset({ + top: top + }); + } + } + } + ldy = dy; + return so.ls = so.cs; +}); + +$(window).on('scroll', window.util.checkScroll); + + + +},{}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/node_modules/flux/index.js":[function(require,module,exports){ +/** + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +module.exports.Dispatcher = require('./lib/Dispatcher') + +},{"./lib/Dispatcher":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/node_modules/flux/lib/Dispatcher.js"}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/node_modules/flux/lib/Dispatcher.js":[function(require,module,exports){ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule Dispatcher + * @typechecks + */ + +"use strict"; + +var invariant = require('./invariant'); + +var _lastID = 1; +var _prefix = 'ID_'; + +/** + * Dispatcher is used to broadcast payloads to registered callbacks. This is + * different from generic pub-sub systems in two ways: + * + * 1) Callbacks are not subscribed to particular events. Every payload is + * dispatched to every registered callback. + * 2) Callbacks can be deferred in whole or part until other callbacks have + * been executed. + * + * For example, consider this hypothetical flight destination form, which + * selects a default city when a country is selected: + * + * var flightDispatcher = new Dispatcher(); + * + * // Keeps track of which country is selected + * var CountryStore = {country: null}; + * + * // Keeps track of which city is selected + * var CityStore = {city: null}; + * + * // Keeps track of the base flight price of the selected city + * var FlightPriceStore = {price: null} + * + * When a user changes the selected city, we dispatch the payload: + * + * flightDispatcher.dispatch({ + * actionType: 'city-update', + * selectedCity: 'paris' + * }); + * + * This payload is digested by `CityStore`: + * + * flightDispatcher.register(function(payload) { + * if (payload.actionType === 'city-update') { + * CityStore.city = payload.selectedCity; + * } + * }); + * + * When the user selects a country, we dispatch the payload: + * + * flightDispatcher.dispatch({ + * actionType: 'country-update', + * selectedCountry: 'australia' + * }); + * + * This payload is digested by both stores: + * + * CountryStore.dispatchToken = flightDispatcher.register(function(payload) { + * if (payload.actionType === 'country-update') { + * CountryStore.country = payload.selectedCountry; + * } + * }); + * + * When the callback to update `CountryStore` is registered, we save a reference + * to the returned token. Using this token with `waitFor()`, we can guarantee + * that `CountryStore` is updated before the callback that updates `CityStore` + * needs to query its data. + * + * CityStore.dispatchToken = flightDispatcher.register(function(payload) { + * if (payload.actionType === 'country-update') { + * // `CountryStore.country` may not be updated. + * flightDispatcher.waitFor([CountryStore.dispatchToken]); + * // `CountryStore.country` is now guaranteed to be updated. + * + * // Select the default city for the new country + * CityStore.city = getDefaultCityForCountry(CountryStore.country); + * } + * }); + * + * The usage of `waitFor()` can be chained, for example: + * + * FlightPriceStore.dispatchToken = + * flightDispatcher.register(function(payload) { + * switch (payload.actionType) { + * case 'country-update': + * flightDispatcher.waitFor([CityStore.dispatchToken]); + * FlightPriceStore.price = + * getFlightPriceStore(CountryStore.country, CityStore.city); + * break; + * + * case 'city-update': + * FlightPriceStore.price = + * FlightPriceStore(CountryStore.country, CityStore.city); + * break; + * } + * }); + * + * The `country-update` payload will be guaranteed to invoke the stores' + * registered callbacks in order: `CountryStore`, `CityStore`, then + * `FlightPriceStore`. + */ + + function Dispatcher() { + this.$Dispatcher_callbacks = {}; + this.$Dispatcher_isPending = {}; + this.$Dispatcher_isHandled = {}; + this.$Dispatcher_isDispatching = false; + this.$Dispatcher_pendingPayload = null; + } + + /** + * Registers a callback to be invoked with every dispatched payload. Returns + * a token that can be used with `waitFor()`. + * + * @param {function} callback + * @return {string} + */ + Dispatcher.prototype.register=function(callback) { + var id = _prefix + _lastID++; + this.$Dispatcher_callbacks[id] = callback; + return id; + }; + + /** + * Removes a callback based on its token. + * + * @param {string} id + */ + Dispatcher.prototype.unregister=function(id) { + invariant( + this.$Dispatcher_callbacks[id], + 'Dispatcher.unregister(...): `%s` does not map to a registered callback.', + id + ); + delete this.$Dispatcher_callbacks[id]; + }; + + /** + * Waits for the callbacks specified to be invoked before continuing execution + * of the current callback. This method should only be used by a callback in + * response to a dispatched payload. + * + * @param {array} ids + */ + Dispatcher.prototype.waitFor=function(ids) { + invariant( + this.$Dispatcher_isDispatching, + 'Dispatcher.waitFor(...): Must be invoked while dispatching.' + ); + for (var ii = 0; ii < ids.length; ii++) { + var id = ids[ii]; + if (this.$Dispatcher_isPending[id]) { + invariant( + this.$Dispatcher_isHandled[id], + 'Dispatcher.waitFor(...): Circular dependency detected while ' + + 'waiting for `%s`.', + id + ); + continue; + } + invariant( + this.$Dispatcher_callbacks[id], + 'Dispatcher.waitFor(...): `%s` does not map to a registered callback.', + id + ); + this.$Dispatcher_invokeCallback(id); + } + }; + + /** + * Dispatches a payload to all registered callbacks. + * + * @param {object} payload + */ + Dispatcher.prototype.dispatch=function(payload) { + invariant( + !this.$Dispatcher_isDispatching, + 'Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.' + ); + this.$Dispatcher_startDispatching(payload); + try { + for (var id in this.$Dispatcher_callbacks) { + if (this.$Dispatcher_isPending[id]) { + continue; + } + this.$Dispatcher_invokeCallback(id); + } + } finally { + this.$Dispatcher_stopDispatching(); + } + }; + + /** + * Is this Dispatcher currently dispatching. + * + * @return {boolean} + */ + Dispatcher.prototype.isDispatching=function() { + return this.$Dispatcher_isDispatching; + }; + + /** + * Call the callback stored with the given id. Also do some internal + * bookkeeping. + * + * @param {string} id + * @internal + */ + Dispatcher.prototype.$Dispatcher_invokeCallback=function(id) { + this.$Dispatcher_isPending[id] = true; + this.$Dispatcher_callbacks[id](this.$Dispatcher_pendingPayload); + this.$Dispatcher_isHandled[id] = true; + }; + + /** + * Set up bookkeeping needed when dispatching. + * + * @param {object} payload + * @internal + */ + Dispatcher.prototype.$Dispatcher_startDispatching=function(payload) { + for (var id in this.$Dispatcher_callbacks) { + this.$Dispatcher_isPending[id] = false; + this.$Dispatcher_isHandled[id] = false; + } + this.$Dispatcher_pendingPayload = payload; + this.$Dispatcher_isDispatching = true; + }; + + /** + * Clear bookkeeping used for dispatching. + * + * @internal + */ + Dispatcher.prototype.$Dispatcher_stopDispatching=function() { + this.$Dispatcher_pendingPayload = null; + this.$Dispatcher_isDispatching = false; + }; + + +module.exports = Dispatcher; + +},{"./invariant":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/node_modules/flux/lib/invariant.js"}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/node_modules/flux/lib/invariant.js":[function(require,module,exports){ +/** + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule invariant + */ + +"use strict"; + +/** + * Use invariant() to assert state which your program assumes to be true. + * + * Provide sprintf-style format (only %s is supported) and arguments + * to provide information about what broke and what you were + * expecting. + * + * The invariant message will be stripped in production, but the invariant + * will remain to ensure logic does not differ in production. + */ + +var invariant = function(condition, format, a, b, c, d, e, f) { + if (false) { + if (format === undefined) { + throw new Error('invariant requires an error message argument'); + } + } + + if (!condition) { + var error; + if (format === undefined) { + error = new Error( + 'Minified exception occurred; use the non-minified dev environment ' + + 'for the full error message and additional helpful warnings.' + ); + } else { + var args = [a, b, c, d, e, f]; + var argIndex = 0; + error = new Error( + 'Invariant Violation: ' + + format.replace(/%s/g, function() { return args[argIndex++]; }) + ); + } + + error.framesToPop = 1; // we don't care about invariant's own frame + throw error; + } +}; + +module.exports = invariant; + +},{}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/node_modules/moment-timezone/data/packed/latest.json":[function(require,module,exports){ +module.exports={ + "version": "2014j", + "zones": [ + "Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q", + "Africa/Accra|LMT GMT GHST|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE", + "Africa/Addis_Ababa|LMT EAT BEAT BEAUT|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ", + "Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0", + "Africa/Bangui|LMT WAT|-d.A -10|01|-22y0d.A", + "Africa/Bissau|LMT WAT GMT|12.k 10 0|012|-2ldWV.E 2xonV.E", + "Africa/Blantyre|LMT CAT|-2a.k -20|01|-2GJea.k", + "Africa/Cairo|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0 1o10 jz0 gN0 pb0 1qN0 dX0 e10 xz0 1o10 bb0 e10 An0 1o10 5z0 e10 FX0 1o10 2L0 e10 IL0 1C10 Lz0 1wp0 TX0 1qN0 WL0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0", + "Africa/Casablanca|LMT WET WEST CET|u.k 0 -10 -10|012121212121212121312121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uo0 e00 DA0 11A0 rA0 e00 Jc0 WM0 m00 gM0 M00 WM0 jc0 e00 RA0 11A0 dA0 e00 Uo0 11A0 800 gM0 Xc0 11A0 5c0 e00 17A0 WM0 2o0 e00 1ao0 19A0 1g00 16M0 1iM0 1400 1lA0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qo0 1200 1kM0 14M0 1i00", + "Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1y7p0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Africa/El_Aaiun|LMT WAT WET WEST|Q.M 10 0 -10|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uo0 e00 DA0 11A0 rA0 e00 Jc0 WM0 m00 gM0 M00 WM0 jc0 e00 RA0 11A0 dA0 e00 Uo0 11A0 800 gM0 Xc0 11A0 5c0 e00 17A0 WM0 2o0 e00 1ao0 19A0 1g00 16M0 1iM0 1400 1lA0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qo0 1200 1kM0 14M0 1i00", + "Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0", + "Africa/Juba|LMT CAT CAST EAT|-2a.8 -20 -30 -30|01212121212121212121212121212121213|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0", + "Africa/Monrovia|MMT LRT GMT|H.8 I.u 0|012|-23Lzg.Q 29s01.m", + "Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0", + "Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00", + "Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00", + "Africa/Windhoek|SWAT SAST SAST CAT WAT WAST|-1u -20 -30 -20 -10 -20|012134545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2GJdu 1Ajdu 1cL0 1SqL0 9NA0 11D0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0", + "America/Adak|NST NWT NPT BST BDT AHST HAST HADT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Anchorage|CAT CAWT CAPT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Anguilla|LMT AST|46.4 40|01|-2kNvR.U", + "America/Antigua|LMT EST AST|47.c 50 40|012|-2kNvQ.M 1yxAQ.M", + "America/Araguaina|LMT BRT BRST|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0", + "America/Argentina/Buenos_Aires|CMT ART ARST ART ARST|4g.M 40 30 30 20|0121212121212121212121212121212121212121213434343434343234343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 j3c0 uL0 1qN0 WL0", + "America/Argentina/Catamarca|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343454343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0", + "America/Argentina/Cordoba|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343454343234343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 j3c0 uL0 1qN0 WL0", + "America/Argentina/Jujuy|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|01212121212121212121212121212121212121212134343456543432343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 g0p0 10M0 j3c0 uL0", + "America/Argentina/La_Rioja|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434534343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0", + "America/Argentina/Mendoza|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|0121212121212121212121212121212121212121213434345656543235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 g0p0 10M0 agM0 Op0 7TX0 uL0", + "America/Argentina/Rio_Gallegos|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343434343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0", + "America/Argentina/Salta|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434543432343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 j3c0 uL0", + "America/Argentina/San_Juan|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434534343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 g0p0 10M0 ak00 m10 8lb0 uL0", + "America/Argentina/San_Luis|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|01212121212121212121212121212121212121212134343456536353465653|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 kin0 10M0 ak00 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0", + "America/Argentina/Tucuman|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|012121212121212121212121212121212121212121343434345434323534343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 ako0 4N0 8BX0 uL0 1qN0 WL0", + "America/Argentina/Ushuaia|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343434343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 ajA0 8p0 8zb0 uL0", + "America/Aruba|LMT ANT AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d", + "America/Asuncion|AMT PYT PYT PYST|3O.E 40 30 30|012131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0", + "America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0", + "America/Bahia|LMT BRT BRST|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0", + "America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0", + "America/Belem|LMT BRT BRST|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0", + "America/Belize|LMT CST CHDT CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0", + "America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0", + "America/Boa_Vista|LMT AMT AMST|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0", + "America/Bogota|BMT COT COST|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0", + "America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Cambridge_Bay|zzz MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Campo_Grande|LMT AMT AMST|3C.s 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0", + "America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Caracas|CMT VET VET|4r.E 4u 40|0121|-2kV7w.k 28KM2.k 1IwOu", + "America/Cayenne|LMT GFT GFT|3t.k 40 30|012|-2mrwu.E 2gWou.E", + "America/Cayman|KMT EST|57.b 50|01|-2l1uQ.N", + "America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0", + "America/Creston|MST PST|70 80|010|-29DR0 43B0", + "America/Cuiaba|LMT AMT AMST|3I.k 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0", + "America/Danmarkshavn|LMT WGT WGST GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0", + "America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0", + "America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|01234252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 Jy10 SL0 dnB0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|01212121212121341212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 LFB0 1cL0 3Cp0 1cL0 66N0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Eirunepe|LMT ACT ACST AMT|4D.s 50 40 40|0121212121212121212121212121212131|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0", + "America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0", + "America/Ensenada|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOP0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Fortaleza|LMT BRT BRST|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0", + "America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Godthab|LMT WGT WGST|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Grand_Turk|KMT EST EDT AST|57.b 50 40 40|0121212121212121212121212121212121212121212121212121212121212121212121212123|-2l1uQ.N 2HHBQ.N 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0", + "America/Guayaquil|QMT ECT|5e 50|01|-1yVSK", + "America/Guyana|LMT GBGT GYT GYT GYT|3Q.E 3J 3J 30 40|01234|-2dvU7.k 24JzQ.k mlc0 Bxbf", + "America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0", + "America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0", + "America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Inuvik|zzz PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Iqaluit|zzz EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Jamaica|KMT EST EDT|57.b 50 40|0121212121212121212121|-2l1uQ.N 2uM1Q.N 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0", + "America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 Bb0 10N0 2bB0 8in0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/La_Paz|CMT BOST BOT|4w.A 3w.A 40|012|-1x37r.o 13b0", + "America/Lima|LMT PET PEST|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0", + "America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp0 1Vb0 3dB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Maceio|LMT BRT BRST|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0", + "America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0", + "America/Manaus|LMT AMT AMST|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0", + "America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0", + "America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Metlakatla|PST PWT PPT PDT|80 70 70 70|0120303030303030303030303030303030|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0", + "America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Miquelon|LMT AST PMST PMDT|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Montevideo|MMT UYT UYHST UYST UYT UYHST|3I.I 3u 30 20 30 2u|012121212121212121212121213434343434345454543453434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-20UIf.g 8jzJ.g 1cLu 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1qMu WLu 1qMu 11zu 1o0u 11zu NAu 11bu 2iMu zWu Dq10 19X0 pd0 jz0 cm10 19X0 1fB0 1on0 11d0 1oL0 1nB0 1fzu 1aou 1fzu 1aou 1fzu 3nAu Jb0 3MN0 1SLu 4jzu 2PB0 Lb0 3Dd0 1pb0 ixd0 An0 1MN0 An0 1wp0 On0 1wp0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10", + "America/Montreal|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-28tR0 bV0 2m30 1in0 121u 1nb0 1g10 11z0 1o0u 11zu 1o0u 11zu 3VAu Rzu 1qMu WLu 1qMu WLu 1qKu WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kO0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Noronha|LMT FNT FNST|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0", + "America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Panama|CMT EST|5j.A 50|01|-2uduE.o", + "America/Pangnirtung|zzz AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Paramaribo|LMT PMT PMT NEGT SRT SRT|3E.E 3E.Q 3E.A 3u 3u 30|012345|-2nDUj.k Wqo0.c qanX.I 1dmLN.o lzc0", + "America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0", + "America/Port-au-Prince|PPMT EST EDT|4N 50 40|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Porto_Acre|LMT ACT ACST AMT|4v.c 50 40 40|01212121212121212121212121212131|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0", + "America/Porto_Velho|LMT AMT AMST|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0", + "America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0", + "America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Rankin_Inlet|zzz CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Recife|LMT BRT BRST|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0", + "America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0", + "America/Resolute|zzz CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Santa_Isabel|LMT MST PST PDT PWT PPT|7D.s 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOP0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Santarem|LMT AMT AMST BRT|3C.M 40 30 30|0121212121212121212121212121213|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0", + "America/Santiago|SMT CLT CLT CLST CLST|4G.K 50 40 40 30|010203131313131313124242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424|-2q5Th.e fNch.e 5gLG.K 21bh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9UK0 1Je0 Qen0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1ld0 14n0 1qN0 11z0 1cN0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1zb0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1zb0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1zb0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1zb0 Op0 1zb0 Rd0 1wn0 Rd0", + "America/Santo_Domingo|SDMT EST EDT EHDT AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00", + "America/Sao_Paulo|LMT BRT BRST|36.s 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0", + "America/Scoresbysund|LMT CGT CGST EGST EGT|1r.Q 20 10 0 10|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0", + "America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0", + "America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 1Be0 xDz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Yellowknife|zzz MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "Antarctica/Casey|zzz AWST CAST|0 -80 -b0|012121|-2q00 1DjS0 T90 40P0 KL0", + "Antarctica/Davis|zzz DAVT DAVT|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0", + "Antarctica/DumontDUrville|zzz PMT DDUT|0 -a0 -a0|0102|-U0o0 cfq0 bFm0", + "Antarctica/Macquarie|AEST AEDT zzz MIST|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0", + "Antarctica/Mawson|zzz MAWT MAWT|0 -60 -50|012|-CEo0 2fyk0", + "Antarctica/McMurdo|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00", + "Antarctica/Palmer|zzz ARST ART ART ARST CLT CLST|0 30 40 30 20 40 30|012121212123435656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1ld0 14n0 1qN0 11z0 1cN0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1zb0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1zb0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1zb0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1zb0 Op0 1zb0 Rd0 1wn0 Rd0", + "Antarctica/Rothera|zzz ROTT|0 30|01|gOo0", + "Antarctica/Syowa|zzz SYOT|0 -30|01|-vs00", + "Antarctica/Troll|zzz UTC CEST|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Antarctica/Vostok|zzz VOST|0 -60|01|-tjA0", + "Arctic/Longyearbyen|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Asia/Aden|LMT AST|-2X.S -30|01|-MG2X.S", + "Asia/Almaty|LMT ALMT ALMT ALMST|-57.M -50 -60 -70|0123232323232323232323232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3Cl0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0", + "Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0", + "Asia/Anadyr|LMT ANAT ANAT ANAST ANAST ANAST ANAT|-bN.U -c0 -d0 -e0 -d0 -c0 -b0|01232414141414141414141561414141414141414141414141414141414141561|-1PcbN.U eUnN.U 23CL0 1db0 1cN0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0", + "Asia/Aqtau|LMT FORT FORT SHET SHET SHEST AQTT AQTST AQTST AQTT|-3l.4 -40 -50 -50 -60 -60 -50 -60 -50 -40|012345353535353535353536767676898989898989898989896|-1Pc3l.4 eUnl.4 1jcL0 JDc0 1cL0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2UK0 Fz0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cN0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 RW0", + "Asia/Aqtobe|LMT AKTT AKTT AKTST AKTT AQTT AQTST|-3M.E -40 -50 -60 -60 -50 -60|01234323232323232323232565656565656565656565656565|-1Pc3M.E eUnM.E 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2UK0 Fz0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0", + "Asia/Ashgabat|LMT ASHT ASHT ASHST ASHST TMT TMT|-3R.w -40 -50 -60 -50 -40 -50|012323232323232323232324156|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 ba0 xC0", + "Asia/Baghdad|BMT AST ADT|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0", + "Asia/Bahrain|LMT GST AST|-3m.k -40 -30|012|-21Jfm.k 27BXm.k", + "Asia/Baku|LMT BAKT BAKT BAKST BAKST AZST AZT AZT AZST|-3j.o -30 -40 -50 -40 -40 -30 -40 -50|0123232323232323232323245657878787878787878787878787878787878787878787878787878787878787878787878787878787878787|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 10K0 c30 1cJ0 1cL0 8wu0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Asia/Bangkok|BMT ICT|-6G.4 -70|01|-218SG.4", + "Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0", + "Asia/Bishkek|LMT FRUT FRUT FRUST FRUST KGT KGST KGT|-4W.o -50 -60 -70 -60 -50 -60 -60|01232323232323232323232456565656565656565656565656567|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 11c0 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 T8u", + "Asia/Brunei|LMT BNT BNT|-7D.E -7u -80|012|-1KITD.E gDc9.E", + "Asia/Calcutta|HMT BURT IST IST|-5R.k -6u -5u -6u|01232|-18LFR.k 1unn.k HB0 7zX0", + "Asia/Chita|LMT YAKT YAKT YAKST YAKST YAKT IRKT|-7x.Q -80 -90 -a0 -90 -a0 -80|012323232323232323232324123232323232323232323232323232323232323256|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Choibalsan|LMT ULAT ULAT CHOST CHOT CHOT|-7C -70 -80 -a0 -90 -80|012343434343434343434343434343434343434343434345|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0", + "Asia/Chongqing|CST CDT|-80 -90|01010101010101010|-1c1I0 LX0 16p0 1jz0 1Myp0 Rb0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0", + "Asia/Colombo|MMT IST IHST IST LKT LKT|-5j.w -5u -60 -6u -6u -60|01231451|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu", + "Asia/Dacca|HMT BURT IST DACT BDT BDST|-5R.k -6u -5u -60 -60 -70|01213454|-18LFR.k 1unn.k HB0 m6n0 LqMu 1x6n0 1i00", + "Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0", + "Asia/Dili|LMT TLT JST TLT WITA|-8m.k -80 -90 -90 -80|012343|-2le8m.k 1dnXm.k 8HA0 1ew00 Xld0", + "Asia/Dubai|LMT GST|-3F.c -40|01|-21JfF.c", + "Asia/Dushanbe|LMT DUST DUST DUSST DUSST TJT|-4z.c -50 -60 -70 -60 -50|0123232323232323232323245|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 14N0", + "Asia/Gaza|EET EET EEST IST IDT|-20 -30 -30 -20 -30|010101010102020202020202020202023434343434343434343434343430202020202020202020202020202020202020202020202020202020202020202020202020202020202020|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0", + "Asia/Hebron|EET EET EEST IST IDT|-20 -30 -30 -20 -30|01010101010202020202020202020202343434343434343434343434343020202020202020202020202020202020202020202020202020202020202020202020202020202020202020|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0", + "Asia/Ho_Chi_Minh|LMT PLMT ICT IDT JST|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0", + "Asia/Hong_Kong|LMT HKT HKST JST|-7A.G -80 -90 -90|0121312121212121212121212121212121212121212121212121212121212121212121|-2CFHA.G 1sEP6.G 1cL0 ylu 93X0 1qQu 1tX0 Rd0 1In0 NB0 1cL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1kL0 14N0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0", + "Asia/Hovd|LMT HOVT HOVT HOVST|-66.A -60 -70 -80|01232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0", + "Asia/Irkutsk|IMT IRKT IRKT IRKST IRKST IRKT|-6V.5 -70 -80 -90 -80 -90|012323232323232323232324123232323232323232323232323232323232323252|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Istanbul|IMT EET EEST TRST TRT|-1U.U -20 -30 -40 -30|012121212121212121212121212121212121212121212121212121234343434342121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSp0 CL0 mN0 1Vz0 1gN0 1pz0 5Rd0 1fz0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1jB0 18L0 1ip0 17z0 qdd0 xX0 3S10 Tz0 dA10 11z0 1o10 11z0 1qN0 11z0 1ze0 11B0 WM0 1qO0 WI0 1nX0 1rB0 10L0 11B0 1in0 17d0 1in0 2pX0 19E0 1fU0 16Q0 1iI0 16Q0 1iI0 1Vd0 pb0 3Kp0 14o0 1df0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Asia/Jakarta|BMT JAVT WIB JST WIB WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu", + "Asia/Jayapura|LMT WIT ACST|-9m.M -90 -9u|0121|-1uu9m.M sMMm.M L4nu", + "Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|01212121212132121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0", + "Asia/Kabul|AFT AFT|-40 -4u|01|-10Qs0", + "Asia/Kamchatka|LMT PETT PETT PETST PETST|-ay.A -b0 -c0 -d0 -c0|01232323232323232323232412323232323232323232323232323232323232412|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0", + "Asia/Karachi|LMT IST IST KART PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy01 1cL0 dK0X 11b0 1610 1jX0", + "Asia/Kashgar|LMT XJT|-5O.k -60|01|-1GgtO.k", + "Asia/Kathmandu|LMT IST NPT|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g", + "Asia/Khandyga|LMT YAKT YAKT YAKST YAKST VLAT VLAST VLAT YAKT|-92.d -80 -90 -a0 -90 -a0 -b0 -b0 -a0|01232323232323232323232412323232323232323232323232565656565656565782|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0", + "Asia/Krasnoyarsk|LMT KRAT KRAT KRAST KRAST KRAT|-6b.q -60 -70 -80 -70 -80|012323232323232323232324123232323232323232323232323232323232323252|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Kuala_Lumpur|SMT MALT MALST MALT MALT JST MYT|-6T.p -70 -7k -7k -7u -90 -80|01234546|-2Bg6T.p 17anT.p 7hXE dM00 17bO 8Fyu 1so1u", + "Asia/Kuching|LMT BORT BORT BORTST JST MYT|-7l.k -7u -80 -8k -90 -80|01232323232323232425|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0 1so10", + "Asia/Kuwait|LMT AST|-3b.U -30|01|-MG3b.U", + "Asia/Macao|LMT MOT MOST CST|-7y.k -80 -90 -80|0121212121212121212121212121212121212121213|-2le7y.k 1XO34.k 1wn0 Rd0 1wn0 R9u 1wqu U10 1tz0 TVu 1tz0 17gu 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cOu 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cL0 KEp0", + "Asia/Magadan|LMT MAGT MAGT MAGST MAGST MAGT|-a3.c -a0 -b0 -c0 -b0 -c0|012323232323232323232324123232323232323232323232323232323232323251|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Makassar|LMT MMT WITA JST|-7V.A -7V.A -80 -90|01232|-21JjV.A vfc0 myLV.A 8ML0", + "Asia/Manila|PHT PHST JST|-80 -90 -90|010201010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0", + "Asia/Muscat|LMT GST|-3S.o -40|01|-21JfS.o", + "Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Asia/Novokuznetsk|LMT KRAT KRAT KRAST KRAST NOVST NOVT NOVT|-5M.M -60 -70 -80 -70 -70 -60 -70|012323232323232323232324123232323232323232323232323232323232325672|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0 8Hz0", + "Asia/Novosibirsk|LMT NOVT NOVT NOVST NOVST|-5v.E -60 -70 -80 -70|0123232323232323232323241232341414141414141414141414141414141414121|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Omsk|LMT OMST OMST OMSST OMSST OMST|-4R.u -50 -60 -70 -60 -70|012323232323232323232324123232323232323232323232323232323232323252|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Oral|LMT URAT URAT URAST URAT URAST ORAT ORAST ORAT|-3p.o -40 -50 -60 -60 -50 -40 -50 -50|012343232323232323251516767676767676767676767676768|-1Pc3p.o eUnp.o 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 2UK0 Fz0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 RW0", + "Asia/Pontianak|LMT PMT WIB JST WIB WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu", + "Asia/Pyongyang|LMT KST JCST JST KST|-8n -8u -90 -90 -90|01234|-2um8n 97XR 12FXu jdA0", + "Asia/Qatar|LMT GST AST|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8", + "Asia/Qyzylorda|LMT KIZT KIZT KIZST KIZT QYZT QYZT QYZST|-4l.Q -40 -50 -60 -60 -50 -60 -70|012343232323232323232325676767676767676767676767676|-1Pc4l.Q eUol.Q 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2UK0 dC0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0", + "Asia/Rangoon|RMT BURT JST MMT|-6o.E -6u -90 -6u|0123|-21Jio.E SmnS.E 7j9u", + "Asia/Riyadh|LMT AST|-36.Q -30|01|-TvD6.Q", + "Asia/Sakhalin|LMT JCST JST SAKT SAKST SAKST SAKT|-9u.M -90 -90 -b0 -c0 -b0 -a0|0123434343434343434343435634343434343565656565656565656565656565636|-2AGVu.M 1iaMu.M je00 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o10 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Samarkand|LMT SAMT SAMT SAMST TAST UZST UZT|-4r.R -40 -50 -60 -60 -60 -50|01234323232323232323232356|-1Pc4r.R eUor.R 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 11x0 bf0", + "Asia/Seoul|LMT KST JCST JST KST KDT KDT|-8r.Q -8u -90 -90 -90 -9u -a0|01234151515151515146464|-2um8r.Q 97XV.Q 12FXu jjA0 kKo0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0", + "Asia/Singapore|SMT MALT MALST MALT MALT JST SGT SGT|-6T.p -70 -7k -7k -7u -90 -7u -80|012345467|-2Bg6T.p 17anT.p 7hXE dM00 17bO 8Fyu Mspu DTA0", + "Asia/Srednekolymsk|LMT MAGT MAGT MAGST MAGST MAGT SRET|-ae.Q -a0 -b0 -c0 -b0 -c0 -b0|012323232323232323232324123232323232323232323232323232323232323256|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Taipei|JWST JST CST CDT|-80 -90 -80 -90|01232323232323232323232323232323232323232|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0", + "Asia/Tashkent|LMT TAST TAST TASST TASST UZST UZT|-4B.b -50 -60 -70 -60 -60 -50|01232323232323232323232456|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 11y0 bf0", + "Asia/Tbilisi|TBMT TBIT TBIT TBIST TBIST GEST GET GET GEST|-2X.b -30 -40 -50 -40 -40 -30 -40 -50|0123232323232323232323245656565787878787878787878567|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 3y0 19f0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cM0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0", + "Asia/Tehran|LMT TMT IRST IRST IRDT IRDT|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0", + "Asia/Thimbu|LMT IST BTT|-5W.A -5u -60|012|-Su5W.A 1BGMs.A", + "Asia/Tokyo|JCST JST JDT|-90 -90 -a0|0121212121|-1iw90 pKq0 QL0 1lB0 13X0 1zB0 NX0 1zB0 NX0", + "Asia/Ulaanbaatar|LMT ULAT ULAT ULAST|-77.w -70 -80 -90|01232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0", + "Asia/Ust-Nera|LMT YAKT YAKT MAGST MAGT MAGST MAGT MAGT VLAT VLAT|-9w.S -80 -90 -c0 -b0 -b0 -a0 -c0 -b0 -a0|0123434343434343434343456434343434343434343434343434343434343434789|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0", + "Asia/Vladivostok|LMT VLAT VLAT VLAST VLAST VLAT|-8L.v -90 -a0 -b0 -a0 -b0|012323232323232323232324123232323232323232323232323232323232323252|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Yakutsk|LMT YAKT YAKT YAKST YAKST YAKT|-8C.W -80 -90 -a0 -90 -a0|012323232323232323232324123232323232323232323232323232323232323252|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Yekaterinburg|LMT PMT SVET SVET SVEST SVEST YEKT YEKST YEKT|-42.x -3J.5 -40 -50 -60 -50 -50 -60 -60|0123434343434343434343435267676767676767676767676767676767676767686|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Yerevan|LMT YERT YERT YERST YERST AMST AMT AMT AMST|-2W -30 -40 -50 -40 -40 -30 -40 -50|0123232323232323232323245656565657878787878787878787878787878787|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1am0 2r0 1cJ0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fb0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0", + "Atlantic/Azores|HMT AZOT AZOST AZOMT AZOT AZOST WET|1S.w 20 10 0 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545456545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldW5.s aPX5.s Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "Atlantic/Canary|LMT CANT WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Atlantic/Cape_Verde|LMT CVT CVST CVT|1y.4 20 10 10|01213|-2xomp.U 1qOMp.U 7zX0 1djf0", + "Atlantic/Faeroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Atlantic/Madeira|FMT MADT MADST MADMT WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldWQ.o aPWQ.o Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Atlantic/Reykjavik|RMT IST ISST GMT|1r.M 10 0 0|01212121212121212121212121212121212121212121212121212121212121213|-2uWmw.c mfaw.c 1Bd0 ML0 1LB0 NLX0 1pe0 zd0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0", + "Atlantic/South_Georgia|GST|20|0|", + "Atlantic/Stanley|SMT FKT FKST FKT FKST|3P.o 40 30 30 20|0121212121212134343212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 U10 1qM0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10", + "Australia/ACT|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0", + "Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0", + "Australia/Eucla|ACWST ACWDT|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0", + "Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/LHI|AEST LHST LHDT LHDT|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu", + "Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0", + "Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0", + "CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "Chile/EasterIsland|EMT EASST EAST EAST EASST|7h.s 60 70 60 50|012121212121212121212121212121213434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-1uSgG.w nHUG.w op0 9UK0 RXB0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1ld0 14n0 1qN0 11z0 1cN0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1zb0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1zb0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1zb0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1wn0 Rd0 1zb0 Op0 1zb0 Rd0 1wn0 Rd0", + "EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "EST|EST|50|0|", + "EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "Eire|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g5X0 14p0 1wn0 17d0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Etc/GMT+0|GMT|0|0|", + "Etc/GMT+1|GMT+1|10|0|", + "Etc/GMT+10|GMT+10|a0|0|", + "Etc/GMT+11|GMT+11|b0|0|", + "Etc/GMT+12|GMT+12|c0|0|", + "Etc/GMT+2|GMT+2|20|0|", + "Etc/GMT+3|GMT+3|30|0|", + "Etc/GMT+4|GMT+4|40|0|", + "Etc/GMT+5|GMT+5|50|0|", + "Etc/GMT+6|GMT+6|60|0|", + "Etc/GMT+7|GMT+7|70|0|", + "Etc/GMT+8|GMT+8|80|0|", + "Etc/GMT+9|GMT+9|90|0|", + "Etc/GMT-1|GMT-1|-10|0|", + "Etc/GMT-10|GMT-10|-a0|0|", + "Etc/GMT-11|GMT-11|-b0|0|", + "Etc/GMT-12|GMT-12|-c0|0|", + "Etc/GMT-13|GMT-13|-d0|0|", + "Etc/GMT-14|GMT-14|-e0|0|", + "Etc/GMT-2|GMT-2|-20|0|", + "Etc/GMT-3|GMT-3|-30|0|", + "Etc/GMT-4|GMT-4|-40|0|", + "Etc/GMT-5|GMT-5|-50|0|", + "Etc/GMT-6|GMT-6|-60|0|", + "Etc/GMT-7|GMT-7|-70|0|", + "Etc/GMT-8|GMT-8|-80|0|", + "Etc/GMT-9|GMT-9|-90|0|", + "Etc/UCT|UCT|0|0|", + "Etc/UTC|UTC|0|0|", + "Europe/Amsterdam|AMT NST NEST NET CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Belfast|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Bratislava|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 16M0 1lc0 1tA0 17A0 11c0 1io0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Busingen|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|0123232323232323232345454676767676767676767623232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1ty0 2bD0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Kaliningrad|CET CEST CET CEST MSK MSD EEST EET FET|-10 -20 -20 -30 -30 -40 -30 -20 -30|0101010101010232454545454545454545454676767676767676767676767676767676767676787|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 Am0 Lb0 1en0 op0 1pNz0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1cJ0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ldXn.f aPWn.f Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|01010101010101010101010121212121234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-28dd0 11A0 1go0 19A0 1co0 1dA0 b1A0 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 iyo0 Rc0 18o0 1hc0 1io0 1a00 14o0 5aL0 MM0 1vc0 17A0 1i00 1bc0 1eo0 17d0 1in0 17A0 6hA0 10N0 XIL0 1a10 1in0 17d0 19X0 1cN0 1fz0 1a10 1fX0 1cp0 1cO0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2as10 M00 1cM0 1cM0 14o0 1o00 WM0 1qM0 17c0 1cM0 M3A0 5M20 WM0 1fA0 1cM0 1cM0 1cM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 Lz0 1C10 Lz0 1EN0 Lz0 1C10 Lz0 1zd0 Oo0 1C00 On0 1cp0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Minsk|MMT EET MSK CEST CET MSD EEST FET|-1O -20 -30 -20 -10 -40 -30 -30|012343432525252525252525252616161616161616161616161616161616161616172|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cK0 1cM0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hy0", + "Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Moscow|MMT MMT MST MDST MSD MSK MSM EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c20 imv.j 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2as10 M00 1cM0 1cM0 14o0 1o00 WM0 1qM0 17c0 1cM0 M3A0 5M20 WM0 1fA0 1cM0 16K0 1iO0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 Lz0 1C10 Lz0 1EN0 Lz0 1C10 Lz0 1zd0 Oo0 1C00 On0 1C10 Lz0 1zd0 On0 1C10 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Samara|LMT SAMT SAMT KUYT KUYST MSD MSK EEST KUYT SAMST SAMST|-3k.k -30 -40 -40 -50 -40 -30 -30 -30 -50 -40|012343434343434343435656782929292929292929292929292929292929292a12|-22WNk.k qHak.k bcn0 1Qqo0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cN0 8o0 14j0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0", + "Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0", + "Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1a00 1cM0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646464647373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Volgograd|LMT TSAT STAT STAT VOLT VOLST VOLST VOLT MSK MSK|-2V.E -30 -30 -40 -40 -50 -40 -30 -40 -30|012345454545454545454676748989898989898989898989898989898989898989|-21IqV.E cLXV.E cEM0 1gqn0 Lco0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 2pz0 1cJ0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Zaporozhye|CUT EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "HST|HST|a0|0|", + "Indian/Chagos|LMT IOT IOT|-4N.E -50 -60|012|-2xosN.E 3AGLN.E", + "Indian/Christmas|CXT|-70|0|", + "Indian/Cocos|CCT|-6u|0|", + "Indian/Kerguelen|zzz TFT|0 -50|01|-MG00", + "Indian/Mahe|LMT SCT|-3F.M -40|01|-2yO3F.M", + "Indian/Maldives|MMT MVT|-4S -50|01|-olgS", + "Indian/Mauritius|LMT MUT MUST|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0", + "Indian/Reunion|LMT RET|-3F.Q -40|01|-2mDDF.Q", + "Kwajalein|MHT KWAT MHT|-b0 c0 -c0|012|-AX0 W9X0", + "MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "MST|MST|70|0|", + "MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "NZ-CHAT|CHAST CHAST CHADT|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00", + "PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "Pacific/Apia|LMT WSST SST SDT WSDT WSST|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00", + "Pacific/Bougainville|PGT JST BST|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0", + "Pacific/Chuuk|CHUT|-a0|0|", + "Pacific/Efate|LMT VUT VUST|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0", + "Pacific/Enderbury|PHOT PHOT PHOT|c0 b0 -d0|012|nIc0 B8n0", + "Pacific/Fakaofo|TKT TKT|b0 -d0|01|1Gfn0", + "Pacific/Fiji|LMT FJT FJST|-bT.I -c0 -d0|012121212121212121212121212121212121212121212121212121212121212|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 xA0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1SM0 xA0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1SM0 xA0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1SM0", + "Pacific/Funafuti|TVT|-c0|0|", + "Pacific/Galapagos|LMT ECT GALT|5W.o 50 60|012|-1yVS1.A 2dTz1.A", + "Pacific/Gambier|LMT GAMT|8X.M 90|01|-2jof0.c", + "Pacific/Guadalcanal|LMT SBT|-aD.M -b0|01|-2joyD.M", + "Pacific/Guam|GST ChST|-a0 -a0|01|1fpq0", + "Pacific/Honolulu|HST HDT HST|au 9u a0|010102|-1thLu 8x0 lef0 8Pz0 46p0", + "Pacific/Kiritimati|LINT LINT LINT|aE a0 -e0|012|nIaE B8nk", + "Pacific/Kosrae|KOST KOST|-b0 -c0|010|-AX0 1bdz0", + "Pacific/Majuro|MHT MHT|-b0 -c0|01|-AX0", + "Pacific/Marquesas|LMT MART|9i 9u|01|-2joeG", + "Pacific/Midway|NST NDT BST SST|b0 a0 b0 b0|01023|-x3N0 An0 pJd0 EyM0", + "Pacific/Nauru|LMT NRT JST NRT|-b7.E -bu -90 -c0|01213|-1Xdn7.E PvzB.E 5RCu 1ouJu", + "Pacific/Niue|NUT NUT NUT|bk bu b0|012|-KfME 17y0a", + "Pacific/Norfolk|NMT NFT|-bc -bu|01|-Kgbc", + "Pacific/Noumea|LMT NCT NCST|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0", + "Pacific/Pago_Pago|LMT NST BST SST|bm.M b0 b0 b0|0123|-2nDMB.c 2gVzB.c EyM0", + "Pacific/Palau|PWT|-90|0|", + "Pacific/Pitcairn|PNT PST|8u 80|01|18Vku", + "Pacific/Pohnpei|PONT|-b0|0|", + "Pacific/Port_Moresby|PGT|-a0|0|", + "Pacific/Rarotonga|CKT CKHST CKT|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu", + "Pacific/Saipan|MPT MPT ChST|-90 -a0 -a0|012|-AV0 1g2n0", + "Pacific/Tahiti|LMT TAHT|9W.g a0|01|-2joe1.I", + "Pacific/Tarawa|GILT|-c0|0|", + "Pacific/Tongatapu|TOT TOT TOST|-ck -d0 -e0|01212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0", + "Pacific/Wake|WAKT|-c0|0|", + "Pacific/Wallis|WFT|-c0|0|", + "WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00" + ], + "links": [ + "Africa/Abidjan|Africa/Bamako", + "Africa/Abidjan|Africa/Banjul", + "Africa/Abidjan|Africa/Conakry", + "Africa/Abidjan|Africa/Dakar", + "Africa/Abidjan|Africa/Freetown", + "Africa/Abidjan|Africa/Lome", + "Africa/Abidjan|Africa/Nouakchott", + "Africa/Abidjan|Africa/Ouagadougou", + "Africa/Abidjan|Africa/Sao_Tome", + "Africa/Abidjan|Africa/Timbuktu", + "Africa/Abidjan|Atlantic/St_Helena", + "Africa/Addis_Ababa|Africa/Asmara", + "Africa/Addis_Ababa|Africa/Asmera", + "Africa/Addis_Ababa|Africa/Dar_es_Salaam", + "Africa/Addis_Ababa|Africa/Djibouti", + "Africa/Addis_Ababa|Africa/Kampala", + "Africa/Addis_Ababa|Africa/Mogadishu", + "Africa/Addis_Ababa|Africa/Nairobi", + "Africa/Addis_Ababa|Indian/Antananarivo", + "Africa/Addis_Ababa|Indian/Comoro", + "Africa/Addis_Ababa|Indian/Mayotte", + "Africa/Bangui|Africa/Brazzaville", + "Africa/Bangui|Africa/Douala", + "Africa/Bangui|Africa/Kinshasa", + "Africa/Bangui|Africa/Lagos", + "Africa/Bangui|Africa/Libreville", + "Africa/Bangui|Africa/Luanda", + "Africa/Bangui|Africa/Malabo", + "Africa/Bangui|Africa/Niamey", + "Africa/Bangui|Africa/Porto-Novo", + "Africa/Blantyre|Africa/Bujumbura", + "Africa/Blantyre|Africa/Gaborone", + "Africa/Blantyre|Africa/Harare", + "Africa/Blantyre|Africa/Kigali", + "Africa/Blantyre|Africa/Lubumbashi", + "Africa/Blantyre|Africa/Lusaka", + "Africa/Blantyre|Africa/Maputo", + "Africa/Cairo|Egypt", + "Africa/Johannesburg|Africa/Maseru", + "Africa/Johannesburg|Africa/Mbabane", + "Africa/Juba|Africa/Khartoum", + "Africa/Tripoli|Libya", + "America/Adak|America/Atka", + "America/Adak|US/Aleutian", + "America/Anchorage|US/Alaska", + "America/Anguilla|America/Dominica", + "America/Anguilla|America/Grenada", + "America/Anguilla|America/Guadeloupe", + "America/Anguilla|America/Marigot", + "America/Anguilla|America/Montserrat", + "America/Anguilla|America/Port_of_Spain", + "America/Anguilla|America/St_Barthelemy", + "America/Anguilla|America/St_Kitts", + "America/Anguilla|America/St_Lucia", + "America/Anguilla|America/St_Thomas", + "America/Anguilla|America/St_Vincent", + "America/Anguilla|America/Tortola", + "America/Anguilla|America/Virgin", + "America/Argentina/Buenos_Aires|America/Buenos_Aires", + "America/Argentina/Catamarca|America/Argentina/ComodRivadavia", + "America/Argentina/Catamarca|America/Catamarca", + "America/Argentina/Cordoba|America/Cordoba", + "America/Argentina/Cordoba|America/Rosario", + "America/Argentina/Jujuy|America/Jujuy", + "America/Argentina/Mendoza|America/Mendoza", + "America/Aruba|America/Curacao", + "America/Aruba|America/Kralendijk", + "America/Aruba|America/Lower_Princes", + "America/Atikokan|America/Coral_Harbour", + "America/Chicago|US/Central", + "America/Denver|America/Shiprock", + "America/Denver|Navajo", + "America/Denver|US/Mountain", + "America/Detroit|US/Michigan", + "America/Edmonton|Canada/Mountain", + "America/Ensenada|America/Tijuana", + "America/Ensenada|Mexico/BajaNorte", + "America/Fort_Wayne|America/Indiana/Indianapolis", + "America/Fort_Wayne|America/Indianapolis", + "America/Fort_Wayne|US/East-Indiana", + "America/Halifax|Canada/Atlantic", + "America/Havana|Cuba", + "America/Indiana/Knox|America/Knox_IN", + "America/Indiana/Knox|US/Indiana-Starke", + "America/Jamaica|Jamaica", + "America/Kentucky/Louisville|America/Louisville", + "America/Los_Angeles|US/Pacific", + "America/Los_Angeles|US/Pacific-New", + "America/Manaus|Brazil/West", + "America/Mazatlan|Mexico/BajaSur", + "America/Mexico_City|Mexico/General", + "America/New_York|US/Eastern", + "America/Noronha|Brazil/DeNoronha", + "America/Phoenix|US/Arizona", + "America/Porto_Acre|America/Rio_Branco", + "America/Porto_Acre|Brazil/Acre", + "America/Regina|Canada/East-Saskatchewan", + "America/Regina|Canada/Saskatchewan", + "America/Santiago|Chile/Continental", + "America/Sao_Paulo|Brazil/East", + "America/St_Johns|Canada/Newfoundland", + "America/Toronto|Canada/Eastern", + "America/Vancouver|Canada/Pacific", + "America/Whitehorse|Canada/Yukon", + "America/Winnipeg|Canada/Central", + "Antarctica/McMurdo|Antarctica/South_Pole", + "Antarctica/McMurdo|NZ", + "Antarctica/McMurdo|Pacific/Auckland", + "Arctic/Longyearbyen|Atlantic/Jan_Mayen", + "Arctic/Longyearbyen|Europe/Oslo", + "Asia/Ashgabat|Asia/Ashkhabad", + "Asia/Bangkok|Asia/Phnom_Penh", + "Asia/Bangkok|Asia/Vientiane", + "Asia/Calcutta|Asia/Kolkata", + "Asia/Chongqing|Asia/Chungking", + "Asia/Chongqing|Asia/Harbin", + "Asia/Chongqing|Asia/Shanghai", + "Asia/Chongqing|PRC", + "Asia/Dacca|Asia/Dhaka", + "Asia/Ho_Chi_Minh|Asia/Saigon", + "Asia/Hong_Kong|Hongkong", + "Asia/Istanbul|Europe/Istanbul", + "Asia/Istanbul|Turkey", + "Asia/Jerusalem|Asia/Tel_Aviv", + "Asia/Jerusalem|Israel", + "Asia/Kashgar|Asia/Urumqi", + "Asia/Kathmandu|Asia/Katmandu", + "Asia/Macao|Asia/Macau", + "Asia/Makassar|Asia/Ujung_Pandang", + "Asia/Nicosia|Europe/Nicosia", + "Asia/Seoul|ROK", + "Asia/Singapore|Singapore", + "Asia/Taipei|ROC", + "Asia/Tehran|Iran", + "Asia/Thimbu|Asia/Thimphu", + "Asia/Tokyo|Japan", + "Asia/Ulaanbaatar|Asia/Ulan_Bator", + "Atlantic/Faeroe|Atlantic/Faroe", + "Atlantic/Reykjavik|Iceland", + "Australia/ACT|Australia/Canberra", + "Australia/ACT|Australia/NSW", + "Australia/ACT|Australia/Sydney", + "Australia/Adelaide|Australia/South", + "Australia/Brisbane|Australia/Queensland", + "Australia/Broken_Hill|Australia/Yancowinna", + "Australia/Darwin|Australia/North", + "Australia/Hobart|Australia/Tasmania", + "Australia/LHI|Australia/Lord_Howe", + "Australia/Melbourne|Australia/Victoria", + "Australia/Perth|Australia/West", + "Chile/EasterIsland|Pacific/Easter", + "Eire|Europe/Dublin", + "Etc/GMT+0|Etc/GMT", + "Etc/GMT+0|Etc/GMT-0", + "Etc/GMT+0|Etc/GMT0", + "Etc/GMT+0|Etc/Greenwich", + "Etc/GMT+0|GMT", + "Etc/GMT+0|GMT+0", + "Etc/GMT+0|GMT-0", + "Etc/GMT+0|GMT0", + "Etc/GMT+0|Greenwich", + "Etc/UCT|UCT", + "Etc/UTC|Etc/Universal", + "Etc/UTC|Etc/Zulu", + "Etc/UTC|UTC", + "Etc/UTC|Universal", + "Etc/UTC|Zulu", + "Europe/Belfast|Europe/Guernsey", + "Europe/Belfast|Europe/Isle_of_Man", + "Europe/Belfast|Europe/Jersey", + "Europe/Belfast|Europe/London", + "Europe/Belfast|GB", + "Europe/Belfast|GB-Eire", + "Europe/Belgrade|Europe/Ljubljana", + "Europe/Belgrade|Europe/Podgorica", + "Europe/Belgrade|Europe/Sarajevo", + "Europe/Belgrade|Europe/Skopje", + "Europe/Belgrade|Europe/Zagreb", + "Europe/Bratislava|Europe/Prague", + "Europe/Busingen|Europe/Vaduz", + "Europe/Busingen|Europe/Zurich", + "Europe/Chisinau|Europe/Tiraspol", + "Europe/Helsinki|Europe/Mariehamn", + "Europe/Lisbon|Portugal", + "Europe/Moscow|W-SU", + "Europe/Rome|Europe/San_Marino", + "Europe/Rome|Europe/Vatican", + "Europe/Warsaw|Poland", + "Kwajalein|Pacific/Kwajalein", + "NZ-CHAT|Pacific/Chatham", + "Pacific/Chuuk|Pacific/Truk", + "Pacific/Chuuk|Pacific/Yap", + "Pacific/Honolulu|Pacific/Johnston", + "Pacific/Honolulu|US/Hawaii", + "Pacific/Pago_Pago|Pacific/Samoa", + "Pacific/Pago_Pago|US/Samoa", + "Pacific/Pohnpei|Pacific/Ponape" + ] +} +},{}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/node_modules/moment-timezone/index.js":[function(require,module,exports){ +var moment = module.exports = require("./moment-timezone"); +moment.tz.load(require('./data/packed/latest.json')); + +},{"./data/packed/latest.json":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/node_modules/moment-timezone/data/packed/latest.json","./moment-timezone":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/node_modules/moment-timezone/moment-timezone.js"}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/node_modules/moment-timezone/moment-timezone.js":[function(require,module,exports){ +//! moment-timezone.js +//! version : 0.2.5 +//! author : Tim Wood +//! license : MIT +//! github.com/moment/moment-timezone + +(function (root, factory) { + "use strict"; + + /*global define*/ + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('moment')); // Node + } else { + factory(root.moment); // Browser + } +}(this, function (moment) { + "use strict"; + + // Do not load moment-timezone a second time. + if (moment.tz !== undefined) { return moment; } + + var VERSION = "0.2.5", + zones = {}, + links = {}, + + momentVersion = moment.version.split('.'), + major = +momentVersion[0], + minor = +momentVersion[1]; + + // Moment.js version check + if (major < 2 || (major === 2 && minor < 6)) { + logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com'); + } + + /************************************ + Unpacking + ************************************/ + + function charCodeToInt(charCode) { + if (charCode > 96) { + return charCode - 87; + } else if (charCode > 64) { + return charCode - 29; + } + return charCode - 48; + } + + function unpackBase60(string) { + var i = 0, + parts = string.split('.'), + whole = parts[0], + fractional = parts[1] || '', + multiplier = 1, + num, + out = 0, + sign = 1; + + // handle negative numbers + if (string.charCodeAt(0) === 45) { + i = 1; + sign = -1; + } + + // handle digits before the decimal + for (i; i < whole.length; i++) { + num = charCodeToInt(whole.charCodeAt(i)); + out = 60 * out + num; + } + + // handle digits after the decimal + for (i = 0; i < fractional.length; i++) { + multiplier = multiplier / 60; + num = charCodeToInt(fractional.charCodeAt(i)); + out += num * multiplier; + } + + return out * sign; + } + + function arrayToInt (array) { + for (var i = 0; i < array.length; i++) { + array[i] = unpackBase60(array[i]); + } + } + + function intToUntil (array, length) { + for (var i = 0; i < length; i++) { + array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds + } + + array[length - 1] = Infinity; + } + + function mapIndices (source, indices) { + var out = [], i; + + for (i = 0; i < indices.length; i++) { + out[i] = source[indices[i]]; + } + + return out; + } + + function unpack (string) { + var data = string.split('|'), + offsets = data[2].split(' '), + indices = data[3].split(''), + untils = data[4].split(' '); + + arrayToInt(offsets); + arrayToInt(indices); + arrayToInt(untils); + + intToUntil(untils, indices.length); + + return { + name : data[0], + abbrs : mapIndices(data[1].split(' '), indices), + offsets : mapIndices(offsets, indices), + untils : untils + }; + } + + /************************************ + Zone object + ************************************/ + + function Zone (packedString) { + if (packedString) { + this._set(unpack(packedString)); + } + } + + Zone.prototype = { + _set : function (unpacked) { + this.name = unpacked.name; + this.abbrs = unpacked.abbrs; + this.untils = unpacked.untils; + this.offsets = unpacked.offsets; + }, + + _index : function (timestamp) { + var target = +timestamp, + untils = this.untils, + i; + + for (i = 0; i < untils.length; i++) { + if (target < untils[i]) { + return i; + } + } + }, + + parse : function (timestamp) { + var target = +timestamp, + offsets = this.offsets, + untils = this.untils, + max = untils.length - 1, + offset, offsetNext, offsetPrev, i; + + for (i = 0; i < max; i++) { + offset = offsets[i]; + offsetNext = offsets[i + 1]; + offsetPrev = offsets[i ? i - 1 : i]; + + if (offset < offsetNext && tz.moveAmbiguousForward) { + offset = offsetNext; + } else if (offset > offsetPrev && tz.moveInvalidForward) { + offset = offsetPrev; + } + + if (target < untils[i] - (offset * 60000)) { + return offsets[i]; + } + } + + return offsets[max]; + }, + + abbr : function (mom) { + return this.abbrs[this._index(mom)]; + }, + + offset : function (mom) { + return this.offsets[this._index(mom)]; + } + }; + + /************************************ + Global Methods + ************************************/ + + function normalizeName (name) { + return (name || '').toLowerCase().replace(/\//g, '_'); + } + + function addZone (packed) { + var i, zone, zoneName; + + if (typeof packed === "string") { + packed = [packed]; + } + + for (i = 0; i < packed.length; i++) { + zone = new Zone(packed[i]); + zoneName = normalizeName(zone.name); + zones[zoneName] = zone; + upgradeLinksToZones(zoneName); + } + } + + function getZone (name) { + return zones[normalizeName(name)] || null; + } + + function getNames () { + var i, out = []; + + for (i in zones) { + if (zones.hasOwnProperty(i) && zones[i]) { + out.push(zones[i].name); + } + } + + return out.sort(); + } + + function addLink (aliases) { + var i, alias; + + if (typeof aliases === "string") { + aliases = [aliases]; + } + + for (i = 0; i < aliases.length; i++) { + alias = aliases[i].split('|'); + pushLink(alias[0], alias[1]); + pushLink(alias[1], alias[0]); + } + } + + function upgradeLinksToZones (zoneName) { + if (!links[zoneName]) { + return; + } + + var i, + zone = zones[zoneName], + linkNames = links[zoneName]; + + for (i = 0; i < linkNames.length; i++) { + copyZoneWithName(zone, linkNames[i]); + } + + links[zoneName] = null; + } + + function copyZoneWithName (zone, name) { + var linkZone = zones[normalizeName(name)] = new Zone(); + linkZone._set(zone); + linkZone.name = name; + } + + function pushLink (zoneName, linkName) { + zoneName = normalizeName(zoneName); + + if (zones[zoneName]) { + copyZoneWithName(zones[zoneName], linkName); + } else { + links[zoneName] = links[zoneName] || []; + links[zoneName].push(linkName); + } + } + + function loadData (data) { + addZone(data.zones); + addLink(data.links); + tz.dataVersion = data.version; + } + + function zoneExists (name) { + if (!zoneExists.didShowError) { + zoneExists.didShowError = true; + logError("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')"); + } + return !!getZone(name); + } + + function needsOffset (m) { + return !!(m._a && (m._tzm === undefined)); + } + + function logError (message) { + if (typeof console !== 'undefined' && typeof console.error === 'function') { + console.error(message); + } + } + + /************************************ + moment.tz namespace + ************************************/ + + function tz () { + var args = Array.prototype.slice.call(arguments, 0, -1), + name = arguments[arguments.length - 1], + zone = getZone(name), + out = moment.utc.apply(null, args); + + if (zone && needsOffset(out)) { + out.add(zone.parse(out), 'minutes'); + } + + out.tz(name); + + return out; + } + + tz.version = VERSION; + tz.dataVersion = ''; + tz._zones = zones; + tz._links = links; + tz.add = addZone; + tz.link = addLink; + tz.load = loadData; + tz.zone = getZone; + tz.zoneExists = zoneExists; // deprecated in 0.1.0 + tz.names = getNames; + tz.Zone = Zone; + tz.unpack = unpack; + tz.unpackBase60 = unpackBase60; + tz.needsOffset = needsOffset; + tz.moveInvalidForward = true; + tz.moveAmbiguousForward = false; + + /************************************ + Interface with Moment.js + ************************************/ + + var fn = moment.fn; + + moment.tz = tz; + + moment.updateOffset = function (mom, keepTime) { + var offset; + if (mom._z) { + offset = mom._z.offset(mom); + if (Math.abs(offset) < 16) { + offset = offset / 60; + } + mom.zone(offset, keepTime); + } + }; + + fn.tz = function (name) { + if (name) { + this._z = getZone(name); + if (this._z) { + moment.updateOffset(this); + } else { + logError("Moment Timezone has no data for " + name + ". See http://momentjs.com/timezone/docs/#/data-loading/."); + } + return this; + } + if (this._z) { return this._z.name; } + }; + + function abbrWrap (old) { + return function () { + if (this._z) { return this._z.abbr(this); } + return old.call(this); + }; + } + + function resetZoneWrap (old) { + return function () { + this._z = null; + return old.apply(this, arguments); + }; + } + + fn.zoneName = abbrWrap(fn.zoneName); + fn.zoneAbbr = abbrWrap(fn.zoneAbbr); + fn.utc = resetZoneWrap(fn.utc); + + // Cloning a moment should include the _z property. + var momentProperties = moment.momentProperties; + if (Object.prototype.toString.call(momentProperties) === '[object Array]') { + // moment 2.8.1+ + momentProperties.push('_z'); + momentProperties.push('_a'); + } else if (momentProperties) { + // moment 2.7.0 + momentProperties._z = null; + } + + // INJECT DATA + + return moment; +})); + +},{"moment":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/node_modules/moment-timezone/node_modules/moment/moment.js"}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/node_modules/moment-timezone/node_modules/moment/moment.js":[function(require,module,exports){ +//! moment.js +//! version : 2.10.2 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + global.moment = factory() +}(this, function () { 'use strict'; + + var hookCallback; + + function utils_hooks__hooks () { + return hookCallback.apply(null, arguments); + } + + // This is done to register the method called with moment() + // without creating circular dependencies. + function setHookCallback (callback) { + hookCallback = callback; + } + + function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso : false + }; + } + + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } + + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || input instanceof Date; + } + + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; + } + + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); + } + + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } + + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } + + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } + + return a; + } + + function create_utc__createUTC (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, true).utc(); + } + + function valid__isValid(m) { + if (m._isValid == null) { + m._isValid = !isNaN(m._d.getTime()) && + m._pf.overflow < 0 && + !m._pf.empty && + !m._pf.invalidMonth && + !m._pf.nullInput && + !m._pf.invalidFormat && + !m._pf.userInvalidated; + + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0 && + m._pf.bigHour === undefined; + } + } + return m._isValid; + } + + function valid__createInvalid (flags) { + var m = create_utc__createUTC(NaN); + if (flags != null) { + extend(m._pf, flags); + } + else { + m._pf.userInvalidated = true; + } + + return m; + } + + var momentProperties = utils_hooks__hooks.momentProperties = []; + + function copyConfig(to, from) { + var i, prop, val; + + if (typeof from._isAMomentObject !== 'undefined') { + to._isAMomentObject = from._isAMomentObject; + } + if (typeof from._i !== 'undefined') { + to._i = from._i; + } + if (typeof from._f !== 'undefined') { + to._f = from._f; + } + if (typeof from._l !== 'undefined') { + to._l = from._l; + } + if (typeof from._strict !== 'undefined') { + to._strict = from._strict; + } + if (typeof from._tzm !== 'undefined') { + to._tzm = from._tzm; + } + if (typeof from._isUTC !== 'undefined') { + to._isUTC = from._isUTC; + } + if (typeof from._offset !== 'undefined') { + to._offset = from._offset; + } + if (typeof from._pf !== 'undefined') { + to._pf = from._pf; + } + if (typeof from._locale !== 'undefined') { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (typeof val !== 'undefined') { + to[prop] = val; + } + } + } + + return to; + } + + var updateInProgress = false; + + // Moment prototype object + function Moment(config) { + copyConfig(this, config); + this._d = new Date(+config._d); + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + utils_hooks__hooks.updateOffset(this); + updateInProgress = false; + } + } + + function isMoment (obj) { + return obj instanceof Moment || (obj != null && hasOwnProp(obj, '_isAMomentObject')); + } + + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); + } else { + value = Math.ceil(coercedNumber); + } + } + + return value; + } + + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; + } + + function Locale() { + } + + var locales = {}; + var globalLocale; + + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } + + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; + } + + function loadLocale(name) { + var oldLocale = null; + // TODO: Find a better way to register and load all the locales in Node + if (!locales[name] && typeof module !== 'undefined' && + module && module.exports) { + try { + oldLocale = globalLocale._abbr; + require('./locale/' + name); + // because defineLocale currently also sets the global locale, we + // want to undo that for lazy loaded locales + locale_locales__getSetGlobalLocale(oldLocale); + } catch (e) { } + } + return locales[name]; + } + + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + function locale_locales__getSetGlobalLocale (key, values) { + var data; + if (key) { + if (typeof values === 'undefined') { + data = locale_locales__getLocale(key); + } + else { + data = defineLocale(key, values); + } + + if (data) { + // moment.duration._locale = moment._locale = data; + globalLocale = data; + } + } + + return globalLocale._abbr; + } + + function defineLocale (name, values) { + if (values !== null) { + values.abbr = name; + if (!locales[name]) { + locales[name] = new Locale(); + } + locales[name].set(values); + + // backwards compat for now: also set the locale + locale_locales__getSetGlobalLocale(name); + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + } + + // returns locale data + function locale_locales__getLocale (key) { + var locale; + + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return globalLocale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } + + return chooseLocale(key); + } + + var aliases = {}; + + function addUnitAlias (unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; + } + + function normalizeUnits(units) { + return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; + } + + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + + return normalizedInput; + } + + function makeGetSet (unit, keepTime) { + return function (value) { + if (value != null) { + get_set__set(this, unit, value); + utils_hooks__hooks.updateOffset(this, keepTime); + return this; + } else { + return get_set__get(this, unit); + } + }; + } + + function get_set__get (mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } + + function get_set__set (mom, unit, value) { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + + // MOMENTS + + function getSet (units, value) { + var unit; + if (typeof units === 'object') { + for (unit in units) { + this.set(unit, units[unit]); + } + } else { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + return this[units](value); + } + } + return this; + } + + function zeroFill(number, targetLength, forceSign) { + var output = '' + Math.abs(number), + sign = number >= 0; + + while (output.length < targetLength) { + output = '0' + output; + } + return (sign ? (forceSign ? '+' : '') : '-') + output; + } + + var formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g; + + var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; + + var formatFunctions = {}; + + var formatTokenFunctions = {}; + + // token: 'M' + // padded: ['MM', 2] + // ordinal: 'Mo' + // callback: function () { this.month() + 1 } + function addFormatToken (token, padded, ordinal, callback) { + var func = callback; + if (typeof callback === 'string') { + func = function () { + return this[callback](); + }; + } + if (token) { + formatTokenFunctions[token] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function () { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal) { + formatTokenFunctions[ordinal] = function () { + return this.localeData().ordinal(func.apply(this, arguments), token); + }; + } + } + + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); + } + + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } + + return function (mom) { + var output = ''; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } + + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } + + format = expandFormat(format, m.localeData()); + + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); + } + + return formatFunctions[format](m); + } + + function expandFormat(format, locale) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } + + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; + } + + var match1 = /\d/; // 0 - 9 + var match2 = /\d\d/; // 00 - 99 + var match3 = /\d{3}/; // 000 - 999 + var match4 = /\d{4}/; // 0000 - 9999 + var match6 = /[+-]?\d{6}/; // -999999 - 999999 + var match1to2 = /\d\d?/; // 0 - 99 + var match1to3 = /\d{1,3}/; // 0 - 999 + var match1to4 = /\d{1,4}/; // 0 - 9999 + var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 + + var matchUnsigned = /\d+/; // 0 - inf + var matchSigned = /[+-]?\d+/; // -inf - inf + + var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z + + var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 + + // any word (or two) characters or numbers including two/three word month in arabic. + var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; + + var regexes = {}; + + function addRegexToken (token, regex, strictRegex) { + regexes[token] = typeof regex === 'function' ? regex : function (isStrict) { + return (isStrict && strictRegex) ? strictRegex : regex; + }; + } + + function getParseRegexForToken (token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); + } + + return regexes[token](config._strict, config._locale); + } + + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function unescapeFormat(s) { + return s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + + var tokens = {}; + + function addParseToken (token, callback) { + var i, func = callback; + if (typeof token === 'string') { + token = [token]; + } + if (typeof callback === 'number') { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; + } + } + + function addWeekParseToken (token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); + } + + function addTimeToArrayFromToken(token, input, config) { + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); + } + } + + var YEAR = 0; + var MONTH = 1; + var DATE = 2; + var HOUR = 3; + var MINUTE = 4; + var SECOND = 5; + var MILLISECOND = 6; + + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } + + // FORMATTING + + addFormatToken('M', ['MM', 2], 'Mo', function () { + return this.month() + 1; + }); + + addFormatToken('MMM', 0, 0, function (format) { + return this.localeData().monthsShort(this, format); + }); + + addFormatToken('MMMM', 0, 0, function (format) { + return this.localeData().months(this, format); + }); + + // ALIASES + + addUnitAlias('month', 'M'); + + // PARSING + + addRegexToken('M', match1to2); + addRegexToken('MM', match1to2, match2); + addRegexToken('MMM', matchWord); + addRegexToken('MMMM', matchWord); + + addParseToken(['M', 'MM'], function (input, array) { + array[MONTH] = toInt(input) - 1; + }); + + addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { + var month = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (month != null) { + array[MONTH] = month; + } else { + config._pf.invalidMonth = input; + } + }); + + // LOCALES + + var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); + function localeMonths (m) { + return this._months[m.month()]; + } + + var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); + function localeMonthsShort (m) { + return this._monthsShort[m.month()]; + } + + function localeMonthsParse (monthName, format, strict) { + var i, mom, regex; + + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } + + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = create_utc__createUTC([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } + } + + // MOMENTS + + function setMonth (mom, value) { + var dayOfMonth; + + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } + } + + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } + + function getSetMonth (value) { + if (value != null) { + setMonth(this, value); + utils_hooks__hooks.updateOffset(this, true); + return this; + } else { + return get_set__get(this, 'Month'); + } + } + + function getDaysInMonth () { + return daysInMonth(this.year(), this.month()); + } + + function checkOverflow (m) { + var overflow; + var a = m._a; + + if (a && m._pf.overflow === -2) { + overflow = + a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : + a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : + a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : + a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : + a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : + a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + + m._pf.overflow = overflow; + } + + return m; + } + + function warn(msg) { + if (utils_hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } + + function deprecate(msg, fn) { + var firstTime = true; + return extend(function () { + if (firstTime) { + warn(msg); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } + + var deprecations = {}; + + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; + } + } + + utils_hooks__hooks.suppressDeprecationWarnings = false; + + var from_string__isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; + + var isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ]; + + // iso time formats and regexes + var isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ]; + + var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; + + // date from iso format + function configFromISO(config) { + var i, l, + string = config._i, + match = from_string__isoRegex.exec(string); + + if (match) { + config._pf.iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + // match[5] should be 'T' or undefined + config._f = isoDates[i][0] + (match[6] || ' '); + break; + } + } + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + config._f += isoTimes[i][0]; + break; + } + } + if (string.match(matchOffset)) { + config._f += 'Z'; + } + configFromStringAndFormat(config); + } else { + config._isValid = false; + } + } + + // date from iso format or fallback + function configFromString(config) { + var matched = aspNetJsonRegex.exec(config._i); + + if (matched !== null) { + config._d = new Date(+matched[1]); + return; + } + + configFromISO(config); + if (config._isValid === false) { + delete config._isValid; + utils_hooks__hooks.createFromInputFallback(config); + } + } + + utils_hooks__hooks.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); + + function createDate (y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); + + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); + } + return date; + } + + function createUTCDate (y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; + } + + addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; + }); + + addFormatToken(0, ['YYYY', 4], 0, 'year'); + addFormatToken(0, ['YYYYY', 5], 0, 'year'); + addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + + // ALIASES + + addUnitAlias('year', 'y'); + + // PARSING + + addRegexToken('Y', matchSigned); + addRegexToken('YY', match1to2, match2); + addRegexToken('YYYY', match1to4, match4); + addRegexToken('YYYYY', match1to6, match6); + addRegexToken('YYYYYY', match1to6, match6); + + addParseToken(['YYYY', 'YYYYY', 'YYYYYY'], YEAR); + addParseToken('YY', function (input, array) { + array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input); + }); + + // HELPERS + + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + + // HOOKS + + utils_hooks__hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; + + // MOMENTS + + var getSetYear = makeGetSet('FullYear', false); + + function getIsLeapYear () { + return isLeapYear(this.year()); + } + + addFormatToken('w', ['ww', 2], 'wo', 'week'); + addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); + + // ALIASES + + addUnitAlias('week', 'w'); + addUnitAlias('isoWeek', 'W'); + + // PARSING + + addRegexToken('w', match1to2); + addRegexToken('ww', match1to2, match2); + addRegexToken('W', match1to2); + addRegexToken('WW', match1to2, match2); + + addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + week[token.substr(0, 1)] = toInt(input); + }); + + // HELPERS + + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), + adjustedMoment; + + + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; + } + + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; + } + + adjustedMoment = local__createLocal(mom).add(daysToDayOfWeek, 'd'); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; + } + + // LOCALES + + function localeWeek (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + } + + var defaultLocaleWeek = { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }; + + function localeFirstDayOfWeek () { + return this._week.dow; + } + + function localeFirstDayOfYear () { + return this._week.doy; + } + + // MOMENTS + + function getSetWeek (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + function getSetISOWeek (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); + + // ALIASES + + addUnitAlias('dayOfYear', 'DDD'); + + // PARSING + + addRegexToken('DDD', match1to3); + addRegexToken('DDDD', match3); + addParseToken(['DDD', 'DDDD'], function (input, array, config) { + config._dayOfYear = toInt(input); + }); + + // HELPERS + + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var d = createUTCDate(year, 0, 1).getUTCDay(); + var daysToAdd; + var dayOfYear; + + d = d === 0 ? 7 : d; + weekday = weekday != null ? weekday : firstDayOfWeek; + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); + dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + + return { + year : dayOfYear > 0 ? year : year - 1, + dayOfYear : dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; + } + + // MOMENTS + + function getSetDayOfYear (input) { + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + } + + // Pick the first defined of two or three arguments. + function defaults(a, b, c) { + if (a != null) { + return a; + } + if (b != null) { + return b; + } + return c; + } + + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()]; + } + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } + + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function configFromArray (config) { + var i, date, input = [], currentDate, yearToUse; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; + } + + date = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } + + config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + + if (config._nextDay) { + config._a[HOUR] = 24; + } + } + + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + + weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year); + week = defaults(w.w, 1); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + } else { + // default to begining of week + weekday = dow; + } + } + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); + + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } + + utils_hooks__hooks.ISO_8601 = function () {}; + + // date from string and format string + function configFromStringAndFormat(config) { + // TODO: Move this to another part of the creation flow to prevent circular deps + if (config._f === utils_hooks__hooks.ISO_8601) { + configFromISO(config); + return; + } + + config._a = []; + config._pf.empty = true; + + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + config._pf.unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + config._pf.empty = false; + } + else { + config._pf.unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + config._pf.unusedTokens.push(token); + } + } + + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); + } + + // clear _12h flag if hour is <= 12 + if (config._pf.bigHour === true && config._a[HOUR] <= 12) { + config._pf.bigHour = undefined; + } + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); + + configFromArray(config); + checkOverflow(config); + } + + + function meridiemFixWrap (locale, hour, meridiem) { + var isPm; + + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // this is not supposed to happen + return hour; + } + } + + function configFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + configFromStringAndFormat(tempConfig); + + if (!valid__isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; + + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; + + tempConfig._pf.score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + + extend(config, bestMoment || tempConfig); + } + + function configFromObject(config) { + if (config._d) { + return; + } + + var i = normalizeObjectUnits(config._i); + config._a = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond]; + + configFromArray(config); + } + + function createFromConfig (config) { + var input = config._i, + format = config._f, + res; + + config._locale = config._locale || locale_locales__getLocale(config._l); + + if (input === null || (format === undefined && input === '')) { + return valid__createInvalid({nullInput: true}); + } + + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } + + if (isMoment(input)) { + return new Moment(checkOverflow(input)); + } else if (isArray(format)) { + configFromStringAndArray(config); + } else if (format) { + configFromStringAndFormat(config); + } else { + configFromInput(config); + } + + res = new Moment(checkOverflow(config)); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } + + return res; + } + + function configFromInput(config) { + var input = config._i; + if (input === undefined) { + config._d = new Date(); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if (typeof input === 'string') { + configFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + configFromArray(config); + } else if (typeof(input) === 'object') { + configFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + utils_hooks__hooks.createFromInputFallback(config); + } + } + + function createLocalOrUTC (input, format, locale, strict, isUTC) { + var c = {}; + + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c._isAMomentObject = true; + c._useUTC = c._isUTC = isUTC; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); + + return createFromConfig(c); + } + + function local__createLocal (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, false); + } + + var prototypeMin = deprecate( + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function () { + var other = local__createLocal.apply(null, arguments); + return other < this ? this : other; + } + ); + + var prototypeMax = deprecate( + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + function () { + var other = local__createLocal.apply(null, arguments); + return other > this ? this : other; + } + ); + + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return local__createLocal(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (moments[i][fn](res)) { + res = moments[i]; + } + } + return res; + } + + // TODO: Use [].sort instead? + function min () { + var args = [].slice.call(arguments, 0); + + return pickBy('isBefore', args); + } + + function max () { + var args = [].slice.call(arguments, 0); + + return pickBy('isAfter', args); + } + + function Duration (duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = locale_locales__getLocale(); + + this._bubble(); + } + + function isDuration (obj) { + return obj instanceof Duration; + } + + function offset (token, separator) { + addFormatToken(token, 0, 0, function () { + var offset = this.utcOffset(); + var sign = '+'; + if (offset < 0) { + offset = -offset; + sign = '-'; + } + return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); + }); + } + + offset('Z', ':'); + offset('ZZ', ''); + + // PARSING + + addRegexToken('Z', matchOffset); + addRegexToken('ZZ', matchOffset); + addParseToken(['Z', 'ZZ'], function (input, array, config) { + config._useUTC = true; + config._tzm = offsetFromString(input); + }); + + // HELPERS + + // timezone chunker + // '+10:00' > ['10', '00'] + // '-1530' > ['-15', '30'] + var chunkOffset = /([\+\-]|\d\d)/gi; + + function offsetFromString(string) { + var matches = ((string || '').match(matchOffset) || []); + var chunk = matches[matches.length - 1] || []; + var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + var minutes = +(parts[1] * 60) + toInt(parts[2]); + + return parts[0] === '+' ? minutes : -minutes; + } + + // Return a moment from input, that is local/utc/zone equivalent to model. + function cloneWithOffset(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - (+res); + // Use low-level api, because this fn is low-level api. + res._d.setTime(+res._d + diff); + utils_hooks__hooks.updateOffset(res, false); + return res; + } else { + return local__createLocal(input).local(); + } + return model._isUTC ? local__createLocal(input).zone(model._offset || 0) : local__createLocal(input).local(); + } + + function getDateOffset (m) { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(m._d.getTimezoneOffset() / 15) * 15; + } + + // HOOKS + + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + utils_hooks__hooks.updateOffset = function () {}; + + // MOMENTS + + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + function getSetOffset (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (input != null) { + if (typeof input === 'string') { + input = offsetFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = getDateOffset(this); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + utils_hooks__hooks.updateOffset(this, true); + this._changeInProgress = null; + } + } + return this; + } else { + return this._isUTC ? offset : getDateOffset(this); + } + } + + function getSetZone (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); + } + } + + function setOffsetToUTC (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + } + + function setOffsetToLocal (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(getDateOffset(this), 'm'); + } + } + return this; + } + + function setOffsetToParsedOffset () { + if (this._tzm) { + this.utcOffset(this._tzm); + } else if (typeof this._i === 'string') { + this.utcOffset(offsetFromString(this._i)); + } + return this; + } + + function hasAlignedHourOffset (input) { + if (!input) { + input = 0; + } + else { + input = local__createLocal(input).utcOffset(); + } + + return (this.utcOffset() - input) % 60 === 0; + } + + function isDaylightSavingTime () { + return ( + this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset() + ); + } + + function isDaylightSavingTimeShifted () { + if (this._a) { + var other = this._isUTC ? create_utc__createUTC(this._a) : local__createLocal(this._a); + return this.isValid() && compareArrays(this._a, other.toArray()) > 0; + } + + return false; + } + + function isLocal () { + return !this._isUTC; + } + + function isUtcOffset () { + return this._isUTC; + } + + function isUtc () { + return this._isUTC && this._offset === 0; + } + + var aspNetRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/; + + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + var create__isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/; + + function create__createDuration (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + diffRes; + + if (isDuration(input)) { + duration = { + ms : input._milliseconds, + d : input._days, + M : input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : 0, + d : toInt(match[DATE]) * sign, + h : toInt(match[HOUR]) * sign, + m : toInt(match[MINUTE]) * sign, + s : toInt(match[SECOND]) * sign, + ms : toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = create__isoRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : parseIso(match[2], sign), + M : parseIso(match[3], sign), + d : parseIso(match[4], sign), + h : parseIso(match[5], sign), + m : parseIso(match[6], sign), + s : parseIso(match[7], sign), + w : parseIso(match[8], sign) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } + + ret = new Duration(duration); + + if (isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } + + return ret; + } + + create__createDuration.fn = Duration.prototype; + + function parseIso (inp, sign) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + } + + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; + } + + function momentsDifference(base, other) { + var res; + other = cloneWithOffset(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; + } + + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = create__createDuration(val, period); + add_subtract__addSubtract(this, dur, direction); + return this; + }; + } + + function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; + + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); + } + if (days) { + get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding); + } + if (months) { + setMonth(mom, get_set__get(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + utils_hooks__hooks.updateOffset(mom, days || months); + } + } + + var add_subtract__add = createAdder(1, 'add'); + var add_subtract__subtract = createAdder(-1, 'subtract'); + + function moment_calendar__calendar (time) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're local/utc/offset or not. + var now = time || local__createLocal(), + sod = cloneWithOffset(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(this.localeData().calendar(format, this, local__createLocal(now))); + } + + function clone () { + return new Moment(this); + } + + function isAfter (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = isMoment(input) ? input : local__createLocal(input); + return +this > +input; + } else { + inputMs = isMoment(input) ? +input : +local__createLocal(input); + return inputMs < +this.clone().startOf(units); + } + } + + function isBefore (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = isMoment(input) ? input : local__createLocal(input); + return +this < +input; + } else { + inputMs = isMoment(input) ? +input : +local__createLocal(input); + return +this.clone().endOf(units) < inputMs; + } + } + + function isBetween (from, to, units) { + return this.isAfter(from, units) && this.isBefore(to, units); + } + + function isSame (input, units) { + var inputMs; + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + input = isMoment(input) ? input : local__createLocal(input); + return +this === +input; + } else { + inputMs = +local__createLocal(input); + return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); + } + } + + function absFloor (number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } + } + + function diff (input, units, asFloat) { + var that = cloneWithOffset(input, this), + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4, + delta, output; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + delta = this - that; + output = units === 'second' ? delta / 1e3 : // 1000 + units === 'minute' ? delta / 6e4 : // 1000 * 60 + units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + delta; + } + return asFloat ? output : absFloor(output); + } + + function monthDiff (a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; + + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } + + return -(wholeMonthDiff + adjust); + } + + utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; + + function toString () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + } + + function moment_format__toISOString () { + var m = this.clone().utc(); + if (0 < m.year() && m.year() <= 9999) { + if ('function' === typeof Date.prototype.toISOString) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } else { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } + + function format (inputString) { + var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat); + return this.localeData().postformat(output); + } + + function from (time, withoutSuffix) { + return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + } + + function fromNow (withoutSuffix) { + return this.from(local__createLocal(), withoutSuffix); + } + + function locale (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = locale_locales__getLocale(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + } + + var lang = deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ); + + function localeData () { + return this._locale; + } + + function startOf (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } + if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; + } + + function endOf (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + } + + function to_type__valueOf () { + return +this._d - ((this._offset || 0) * 60000); + } + + function unix () { + return Math.floor(+this / 1000); + } + + function toDate () { + return this._offset ? new Date(+this) : this._d; + } + + function toArray () { + var m = this; + return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; + } + + function moment_valid__isValid () { + return valid__isValid(this); + } + + function parsingFlags () { + return extend({}, this._pf); + } + + function invalidAt () { + return this._pf.overflow; + } + + addFormatToken(0, ['gg', 2], 0, function () { + return this.weekYear() % 100; + }); + + addFormatToken(0, ['GG', 2], 0, function () { + return this.isoWeekYear() % 100; + }); + + function addWeekYearFormatToken (token, getter) { + addFormatToken(0, [token, token.length], 0, getter); + } + + addWeekYearFormatToken('gggg', 'weekYear'); + addWeekYearFormatToken('ggggg', 'weekYear'); + addWeekYearFormatToken('GGGG', 'isoWeekYear'); + addWeekYearFormatToken('GGGGG', 'isoWeekYear'); + + // ALIASES + + addUnitAlias('weekYear', 'gg'); + addUnitAlias('isoWeekYear', 'GG'); + + // PARSING + + addRegexToken('G', matchSigned); + addRegexToken('g', matchSigned); + addRegexToken('GG', match1to2, match2); + addRegexToken('gg', match1to2, match2); + addRegexToken('GGGG', match1to4, match4); + addRegexToken('gggg', match1to4, match4); + addRegexToken('GGGGG', match1to6, match6); + addRegexToken('ggggg', match1to6, match6); + + addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { + week[token.substr(0, 2)] = toInt(input); + }); + + addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { + week[token] = utils_hooks__hooks.parseTwoDigitYear(input); + }); + + // HELPERS + + function weeksInYear(year, dow, doy) { + return weekOfYear(local__createLocal([year, 11, 31 + dow - doy]), dow, doy).week; + } + + // MOMENTS + + function getSetWeekYear (input) { + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return input == null ? year : this.add((input - year), 'y'); + } + + function getSetISOWeekYear (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add((input - year), 'y'); + } + + function getISOWeeksInYear () { + return weeksInYear(this.year(), 1, 4); + } + + function getWeeksInYear () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + } + + addFormatToken('Q', 0, 0, 'quarter'); + + // ALIASES + + addUnitAlias('quarter', 'Q'); + + // PARSING + + addRegexToken('Q', match1); + addParseToken('Q', function (input, array) { + array[MONTH] = (toInt(input) - 1) * 3; + }); + + // MOMENTS + + function getSetQuarter (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + } + + addFormatToken('D', ['DD', 2], 'Do', 'date'); + + // ALIASES + + addUnitAlias('date', 'D'); + + // PARSING + + addRegexToken('D', match1to2); + addRegexToken('DD', match1to2, match2); + addRegexToken('Do', function (isStrict, locale) { + return isStrict ? locale._ordinalParse : locale._ordinalParseLenient; + }); + + addParseToken(['D', 'DD'], DATE); + addParseToken('Do', function (input, array) { + array[DATE] = toInt(input.match(match1to2)[0], 10); + }); + + // MOMENTS + + var getSetDayOfMonth = makeGetSet('Date', true); + + addFormatToken('d', 0, 'do', 'day'); + + addFormatToken('dd', 0, 0, function (format) { + return this.localeData().weekdaysMin(this, format); + }); + + addFormatToken('ddd', 0, 0, function (format) { + return this.localeData().weekdaysShort(this, format); + }); + + addFormatToken('dddd', 0, 0, function (format) { + return this.localeData().weekdays(this, format); + }); + + addFormatToken('e', 0, 0, 'weekday'); + addFormatToken('E', 0, 0, 'isoWeekday'); + + // ALIASES + + addUnitAlias('day', 'd'); + addUnitAlias('weekday', 'e'); + addUnitAlias('isoWeekday', 'E'); + + // PARSING + + addRegexToken('d', match1to2); + addRegexToken('e', match1to2); + addRegexToken('E', match1to2); + addRegexToken('dd', matchWord); + addRegexToken('ddd', matchWord); + addRegexToken('dddd', matchWord); + + addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config) { + var weekday = config._locale.weekdaysParse(input); + // if we didn't get a weekday name, mark the date as invalid + if (weekday != null) { + week.d = weekday; + } else { + config._pf.invalidWeekday = input; + } + }); + + addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { + week[token] = toInt(input); + }); + + // HELPERS + + function parseWeekday(input, locale) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); + } + else { + input = locale.weekdaysParse(input); + if (typeof input !== 'number') { + return null; + } + } + } + return input; + } + + // LOCALES + + var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); + function localeWeekdays (m) { + return this._weekdays[m.day()]; + } + + var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); + function localeWeekdaysShort (m) { + return this._weekdaysShort[m.day()]; + } + + var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); + function localeWeekdaysMin (m) { + return this._weekdaysMin[m.day()]; + } + + function localeWeekdaysParse (weekdayName) { + var i, mom, regex; + + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } + + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = local__createLocal([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + } + + // MOMENTS + + function getSetDayOfWeek (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + } + + function getSetLocaleDayOfWeek (input) { + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + } + + function getSetISODayOfWeek (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + } + + addFormatToken('H', ['HH', 2], 0, 'hour'); + addFormatToken('h', ['hh', 2], 0, function () { + return this.hours() % 12 || 12; + }); + + function meridiem (token, lowercase) { + addFormatToken(token, 0, 0, function () { + return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); + }); + } + + meridiem('a', true); + meridiem('A', false); + + // ALIASES + + addUnitAlias('hour', 'h'); + + // PARSING + + function matchMeridiem (isStrict, locale) { + return locale._meridiemParse; + } + + addRegexToken('a', matchMeridiem); + addRegexToken('A', matchMeridiem); + addRegexToken('H', match1to2); + addRegexToken('h', match1to2); + addRegexToken('HH', match1to2, match2); + addRegexToken('hh', match1to2, match2); + + addParseToken(['H', 'HH'], HOUR); + addParseToken(['a', 'A'], function (input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; + }); + addParseToken(['h', 'hh'], function (input, array, config) { + array[HOUR] = toInt(input); + config._pf.bigHour = true; + }); + + // LOCALES + + function localeIsPM (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + } + + var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; + function localeMeridiem (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + } + + + // MOMENTS + + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + var getSetHour = makeGetSet('Hours', true); + + addFormatToken('m', ['mm', 2], 0, 'minute'); + + // ALIASES + + addUnitAlias('minute', 'm'); + + // PARSING + + addRegexToken('m', match1to2); + addRegexToken('mm', match1to2, match2); + addParseToken(['m', 'mm'], MINUTE); + + // MOMENTS + + var getSetMinute = makeGetSet('Minutes', false); + + addFormatToken('s', ['ss', 2], 0, 'second'); + + // ALIASES + + addUnitAlias('second', 's'); + + // PARSING + + addRegexToken('s', match1to2); + addRegexToken('ss', match1to2, match2); + addParseToken(['s', 'ss'], SECOND); + + // MOMENTS + + var getSetSecond = makeGetSet('Seconds', false); + + addFormatToken('S', 0, 0, function () { + return ~~(this.millisecond() / 100); + }); + + addFormatToken(0, ['SS', 2], 0, function () { + return ~~(this.millisecond() / 10); + }); + + function millisecond__milliseconds (token) { + addFormatToken(0, [token, 3], 0, 'millisecond'); + } + + millisecond__milliseconds('SSS'); + millisecond__milliseconds('SSSS'); + + // ALIASES + + addUnitAlias('millisecond', 'ms'); + + // PARSING + + addRegexToken('S', match1to3, match1); + addRegexToken('SS', match1to3, match2); + addRegexToken('SSS', match1to3, match3); + addRegexToken('SSSS', matchUnsigned); + addParseToken(['S', 'SS', 'SSS', 'SSSS'], function (input, array) { + array[MILLISECOND] = toInt(('0.' + input) * 1000); + }); + + // MOMENTS + + var getSetMillisecond = makeGetSet('Milliseconds', false); + + addFormatToken('z', 0, 0, 'zoneAbbr'); + addFormatToken('zz', 0, 0, 'zoneName'); + + // MOMENTS + + function getZoneAbbr () { + return this._isUTC ? 'UTC' : ''; + } + + function getZoneName () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + } + + var momentPrototype__proto = Moment.prototype; + + momentPrototype__proto.add = add_subtract__add; + momentPrototype__proto.calendar = moment_calendar__calendar; + momentPrototype__proto.clone = clone; + momentPrototype__proto.diff = diff; + momentPrototype__proto.endOf = endOf; + momentPrototype__proto.format = format; + momentPrototype__proto.from = from; + momentPrototype__proto.fromNow = fromNow; + momentPrototype__proto.get = getSet; + momentPrototype__proto.invalidAt = invalidAt; + momentPrototype__proto.isAfter = isAfter; + momentPrototype__proto.isBefore = isBefore; + momentPrototype__proto.isBetween = isBetween; + momentPrototype__proto.isSame = isSame; + momentPrototype__proto.isValid = moment_valid__isValid; + momentPrototype__proto.lang = lang; + momentPrototype__proto.locale = locale; + momentPrototype__proto.localeData = localeData; + momentPrototype__proto.max = prototypeMax; + momentPrototype__proto.min = prototypeMin; + momentPrototype__proto.parsingFlags = parsingFlags; + momentPrototype__proto.set = getSet; + momentPrototype__proto.startOf = startOf; + momentPrototype__proto.subtract = add_subtract__subtract; + momentPrototype__proto.toArray = toArray; + momentPrototype__proto.toDate = toDate; + momentPrototype__proto.toISOString = moment_format__toISOString; + momentPrototype__proto.toJSON = moment_format__toISOString; + momentPrototype__proto.toString = toString; + momentPrototype__proto.unix = unix; + momentPrototype__proto.valueOf = to_type__valueOf; + + // Year + momentPrototype__proto.year = getSetYear; + momentPrototype__proto.isLeapYear = getIsLeapYear; + + // Week Year + momentPrototype__proto.weekYear = getSetWeekYear; + momentPrototype__proto.isoWeekYear = getSetISOWeekYear; + + // Quarter + momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter; + + // Month + momentPrototype__proto.month = getSetMonth; + momentPrototype__proto.daysInMonth = getDaysInMonth; + + // Week + momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek; + momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek; + momentPrototype__proto.weeksInYear = getWeeksInYear; + momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear; + + // Day + momentPrototype__proto.date = getSetDayOfMonth; + momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek; + momentPrototype__proto.weekday = getSetLocaleDayOfWeek; + momentPrototype__proto.isoWeekday = getSetISODayOfWeek; + momentPrototype__proto.dayOfYear = getSetDayOfYear; + + // Hour + momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour; + + // Minute + momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute; + + // Second + momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond; + + // Millisecond + momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond; + + // Offset + momentPrototype__proto.utcOffset = getSetOffset; + momentPrototype__proto.utc = setOffsetToUTC; + momentPrototype__proto.local = setOffsetToLocal; + momentPrototype__proto.parseZone = setOffsetToParsedOffset; + momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset; + momentPrototype__proto.isDST = isDaylightSavingTime; + momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted; + momentPrototype__proto.isLocal = isLocal; + momentPrototype__proto.isUtcOffset = isUtcOffset; + momentPrototype__proto.isUtc = isUtc; + momentPrototype__proto.isUTC = isUtc; + + // Timezone + momentPrototype__proto.zoneAbbr = getZoneAbbr; + momentPrototype__proto.zoneName = getZoneName; + + // Deprecations + momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); + momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); + momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); + momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone); + + var momentPrototype = momentPrototype__proto; + + function moment__createUnix (input) { + return local__createLocal(input * 1000); + } + + function moment__createInZone () { + return local__createLocal.apply(null, arguments).parseZone(); + } + + var defaultCalendar = { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }; + + function locale_calendar__calendar (key, mom, now) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.call(mom, now) : output; + } + + var defaultLongDateFormat = { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY LT', + LLLL : 'dddd, MMMM D, YYYY LT' + }; + + function longDateFormat (key) { + var output = this._longDateFormat[key]; + if (!output && this._longDateFormat[key.toUpperCase()]) { + output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + this._longDateFormat[key] = output; + } + return output; + } + + var defaultInvalidDate = 'Invalid date'; + + function invalidDate () { + return this._invalidDate; + } + + var defaultOrdinal = '%d'; + var defaultOrdinalParse = /\d{1,2}/; + + function ordinal (number) { + return this._ordinal.replace('%d', number); + } + + function preParsePostFormat (string) { + return string; + } + + var defaultRelativeTime = { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }; + + function relative__relativeTime (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + } + + function pastFuture (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + } + + function locale_set__set (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _ordinalParseLenient. + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); + } + + var prototype__proto = Locale.prototype; + + prototype__proto._calendar = defaultCalendar; + prototype__proto.calendar = locale_calendar__calendar; + prototype__proto._longDateFormat = defaultLongDateFormat; + prototype__proto.longDateFormat = longDateFormat; + prototype__proto._invalidDate = defaultInvalidDate; + prototype__proto.invalidDate = invalidDate; + prototype__proto._ordinal = defaultOrdinal; + prototype__proto.ordinal = ordinal; + prototype__proto._ordinalParse = defaultOrdinalParse; + prototype__proto.preparse = preParsePostFormat; + prototype__proto.postformat = preParsePostFormat; + prototype__proto._relativeTime = defaultRelativeTime; + prototype__proto.relativeTime = relative__relativeTime; + prototype__proto.pastFuture = pastFuture; + prototype__proto.set = locale_set__set; + + // Month + prototype__proto.months = localeMonths; + prototype__proto._months = defaultLocaleMonths; + prototype__proto.monthsShort = localeMonthsShort; + prototype__proto._monthsShort = defaultLocaleMonthsShort; + prototype__proto.monthsParse = localeMonthsParse; + + // Week + prototype__proto.week = localeWeek; + prototype__proto._week = defaultLocaleWeek; + prototype__proto.firstDayOfYear = localeFirstDayOfYear; + prototype__proto.firstDayOfWeek = localeFirstDayOfWeek; + + // Day of Week + prototype__proto.weekdays = localeWeekdays; + prototype__proto._weekdays = defaultLocaleWeekdays; + prototype__proto.weekdaysMin = localeWeekdaysMin; + prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin; + prototype__proto.weekdaysShort = localeWeekdaysShort; + prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort; + prototype__proto.weekdaysParse = localeWeekdaysParse; + + // Hours + prototype__proto.isPM = localeIsPM; + prototype__proto._meridiemParse = defaultLocaleMeridiemParse; + prototype__proto.meridiem = localeMeridiem; + + function lists__get (format, index, field, setter) { + var locale = locale_locales__getLocale(); + var utc = create_utc__createUTC().set(setter, index); + return locale[field](utc, format); + } + + function list (format, index, field, count, setter) { + if (typeof format === 'number') { + index = format; + format = undefined; + } + + format = format || ''; + + if (index != null) { + return lists__get(format, index, field, setter); + } + + var i; + var out = []; + for (i = 0; i < count; i++) { + out[i] = lists__get(format, i, field, setter); + } + return out; + } + + function lists__listMonths (format, index) { + return list(format, index, 'months', 12, 'month'); + } + + function lists__listMonthsShort (format, index) { + return list(format, index, 'monthsShort', 12, 'month'); + } + + function lists__listWeekdays (format, index) { + return list(format, index, 'weekdays', 7, 'day'); + } + + function lists__listWeekdaysShort (format, index) { + return list(format, index, 'weekdaysShort', 7, 'day'); + } + + function lists__listWeekdaysMin (format, index) { + return list(format, index, 'weekdaysMin', 7, 'day'); + } + + locale_locales__getSetGlobalLocale('en', { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + + // Side effect imports + utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale); + utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale); + + var mathAbs = Math.abs; + + function duration_abs__abs () { + var data = this._data; + + this._milliseconds = mathAbs(this._milliseconds); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); + + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); + + return this; + } + + function duration_add_subtract__addSubtract (duration, input, value, direction) { + var other = create__createDuration(input, value); + + duration._milliseconds += direction * other._milliseconds; + duration._days += direction * other._days; + duration._months += direction * other._months; + + return duration._bubble(); + } + + // supports only 2.0-style add(1, 's') or add(duration) + function duration_add_subtract__add (input, value) { + return duration_add_subtract__addSubtract(this, input, value, 1); + } + + // supports only 2.0-style subtract(1, 's') or subtract(duration) + function duration_add_subtract__subtract (input, value) { + return duration_add_subtract__addSubtract(this, input, value, -1); + } + + function bubble () { + var milliseconds = this._milliseconds; + var days = this._days; + var months = this._months; + var data = this._data; + var seconds, minutes, hours, years = 0; + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; + + hours = absFloor(minutes / 60); + data.hours = hours % 24; + + days += absFloor(hours / 24); + + // Accurately convert days to years, assume start from year 0. + years = absFloor(daysToYears(days)); + days -= absFloor(yearsToDays(years)); + + // 30 days to a month + // TODO (iskren): Use anchor date (like 1st Jan) to compute this. + months += absFloor(days / 30); + days %= 30; + + // 12 months -> 1 year + years += absFloor(months / 12); + months %= 12; + + data.days = days; + data.months = months; + data.years = years; + + return this; + } + + function daysToYears (days) { + // 400 years have 146097 days (taking into account leap year rules) + return days * 400 / 146097; + } + + function yearsToDays (years) { + // years * 365 + absFloor(years / 4) - + // absFloor(years / 100) + absFloor(years / 400); + return years * 146097 / 400; + } + + function as (units) { + var days; + var months; + var milliseconds = this._milliseconds; + + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + milliseconds / 864e5; + months = this._months + daysToYears(days) * 12; + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(yearsToDays(this._months / 12)); + switch (units) { + case 'week' : return days / 7 + milliseconds / 6048e5; + case 'day' : return days + milliseconds / 864e5; + case 'hour' : return days * 24 + milliseconds / 36e5; + case 'minute' : return days * 24 * 60 + milliseconds / 6e4; + case 'second' : return days * 24 * 60 * 60 + milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } + } + + // TODO: Use this.as('ms')? + function duration_as__valueOf () { + return ( + this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6 + ); + } + + function makeAs (alias) { + return function () { + return this.as(alias); + }; + } + + var asMilliseconds = makeAs('ms'); + var asSeconds = makeAs('s'); + var asMinutes = makeAs('m'); + var asHours = makeAs('h'); + var asDays = makeAs('d'); + var asWeeks = makeAs('w'); + var asMonths = makeAs('M'); + var asYears = makeAs('y'); + + function duration_get__get (units) { + units = normalizeUnits(units); + return this[units + 's'](); + } + + function makeGetter(name) { + return function () { + return this._data[name]; + }; + } + + var duration_get__milliseconds = makeGetter('milliseconds'); + var seconds = makeGetter('seconds'); + var minutes = makeGetter('minutes'); + var hours = makeGetter('hours'); + var days = makeGetter('days'); + var months = makeGetter('months'); + var years = makeGetter('years'); + + function weeks () { + return absFloor(this.days() / 7); + } + + var round = Math.round; + var thresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year + }; + + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } + + function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) { + var duration = create__createDuration(posNegDuration).abs(); + var seconds = round(duration.as('s')); + var minutes = round(duration.as('m')); + var hours = round(duration.as('h')); + var days = round(duration.as('d')); + var months = round(duration.as('M')); + var years = round(duration.as('y')); + + var a = seconds < thresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < thresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < thresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days < thresholds.d && ['dd', days] || + months === 1 && ['M'] || + months < thresholds.M && ['MM', months] || + years === 1 && ['y'] || ['yy', years]; + + a[2] = withoutSuffix; + a[3] = +posNegDuration > 0; + a[4] = locale; + return substituteTimeAgo.apply(null, a); + } + + // This function allows you to set a threshold for relative time strings + function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) { + if (thresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return thresholds[threshold]; + } + thresholds[threshold] = limit; + return true; + } + + function humanize (withSuffix) { + var locale = this.localeData(); + var output = duration_humanize__relativeTime(this, !withSuffix, locale); + + if (withSuffix) { + output = locale.pastFuture(+this, output); + } + + return locale.postformat(output); + } + + var iso_string__abs = Math.abs; + + function iso_string__toISOString() { + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var Y = iso_string__abs(this.years()); + var M = iso_string__abs(this.months()); + var D = iso_string__abs(this.days()); + var h = iso_string__abs(this.hours()); + var m = iso_string__abs(this.minutes()); + var s = iso_string__abs(this.seconds() + this.milliseconds() / 1000); + var total = this.asSeconds(); + + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (total < 0 ? '-' : '') + + 'P' + + (Y ? Y + 'Y' : '') + + (M ? M + 'M' : '') + + (D ? D + 'D' : '') + + ((h || m || s) ? 'T' : '') + + (h ? h + 'H' : '') + + (m ? m + 'M' : '') + + (s ? s + 'S' : ''); + } + + var duration_prototype__proto = Duration.prototype; + + duration_prototype__proto.abs = duration_abs__abs; + duration_prototype__proto.add = duration_add_subtract__add; + duration_prototype__proto.subtract = duration_add_subtract__subtract; + duration_prototype__proto.as = as; + duration_prototype__proto.asMilliseconds = asMilliseconds; + duration_prototype__proto.asSeconds = asSeconds; + duration_prototype__proto.asMinutes = asMinutes; + duration_prototype__proto.asHours = asHours; + duration_prototype__proto.asDays = asDays; + duration_prototype__proto.asWeeks = asWeeks; + duration_prototype__proto.asMonths = asMonths; + duration_prototype__proto.asYears = asYears; + duration_prototype__proto.valueOf = duration_as__valueOf; + duration_prototype__proto._bubble = bubble; + duration_prototype__proto.get = duration_get__get; + duration_prototype__proto.milliseconds = duration_get__milliseconds; + duration_prototype__proto.seconds = seconds; + duration_prototype__proto.minutes = minutes; + duration_prototype__proto.hours = hours; + duration_prototype__proto.days = days; + duration_prototype__proto.weeks = weeks; + duration_prototype__proto.months = months; + duration_prototype__proto.years = years; + duration_prototype__proto.humanize = humanize; + duration_prototype__proto.toISOString = iso_string__toISOString; + duration_prototype__proto.toString = iso_string__toISOString; + duration_prototype__proto.toJSON = iso_string__toISOString; + duration_prototype__proto.locale = locale; + duration_prototype__proto.localeData = localeData; + + // Deprecations + duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString); + duration_prototype__proto.lang = lang; + + // Side effect imports + + addFormatToken('X', 0, 0, 'unix'); + addFormatToken('x', 0, 0, 'valueOf'); + + // PARSING + + addRegexToken('x', matchSigned); + addRegexToken('X', matchTimestamp); + addParseToken('X', function (input, array, config) { + config._d = new Date(parseFloat(input, 10) * 1000); + }); + addParseToken('x', function (input, array, config) { + config._d = new Date(toInt(input)); + }); + + // Side effect imports + + + utils_hooks__hooks.version = '2.10.2'; + + setHookCallback(local__createLocal); + + utils_hooks__hooks.fn = momentPrototype; + utils_hooks__hooks.min = min; + utils_hooks__hooks.max = max; + utils_hooks__hooks.utc = create_utc__createUTC; + utils_hooks__hooks.unix = moment__createUnix; + utils_hooks__hooks.months = lists__listMonths; + utils_hooks__hooks.isDate = isDate; + utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale; + utils_hooks__hooks.invalid = valid__createInvalid; + utils_hooks__hooks.duration = create__createDuration; + utils_hooks__hooks.isMoment = isMoment; + utils_hooks__hooks.weekdays = lists__listWeekdays; + utils_hooks__hooks.parseZone = moment__createInZone; + utils_hooks__hooks.localeData = locale_locales__getLocale; + utils_hooks__hooks.isDuration = isDuration; + utils_hooks__hooks.monthsShort = lists__listMonthsShort; + utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin; + utils_hooks__hooks.defineLocale = defineLocale; + utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort; + utils_hooks__hooks.normalizeUnits = normalizeUnits; + utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold; + + var _moment = utils_hooks__hooks; + + return _moment; + +})); +},{}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/persistence/MessagePersistence.coffee":[function(require,module,exports){ +var MessageActions; + +MessageActions = require('../actions/MessageActions.coffee'); + +module.exports = { + listenStation: function(station, since) { + var $this; + console.log('listen station'); + console.log(arguments); + $this = this; + return window.urb.subscribe({ + appl: "talk", + path: "/f/" + station + "/" + since + }, function(err, res) { + var ref, ref1; + if (err || !res.data) { + console.log('/f/ err!'); + console.log(err); + console.log(res); + $this.listenStation(station, since); + return; + } + console.log('/f/'); + console.log(res.data); + if (res.data.ok === true) { + MessageActions.listeningStation(station); + } + if ((ref = res.data) != null ? (ref1 = ref.grams) != null ? ref1.tele : void 0 : void 0) { + return MessageActions.loadMessages(res.data.grams); + } + }); + }, + get: function(station, start, end) { + end = window.urb.util.numDot(end); + start = window.urb.util.numDot(start); + return window.urb.subscribe({ + appl: "talk", + path: "/f/" + station + "/" + end + "/" + start + }, function(err, res) { + var ref, ref1; + if (err || !res.data) { + console.log('/f/ /e/s err'); + console.log(err); + return; + } + console.log('/f/ /e/s'); + console.log(res); + if ((ref = res.data) != null ? (ref1 = ref.grams) != null ? ref1.tele : void 0 : void 0) { + MessageActions.loadMessages(res.data.grams, true); + return window.urb.unsubscribe({ + appl: "talk", + path: "/f/" + station + "/" + end + "/" + start + }, function(err, res) { + console.log('done'); + return console.log(res); + }); + } + }); + }, + sendMessage: function(message, cb) { + return window.urb.send({ + appl: "talk", + mark: "talk-command", + data: { + publish: [message] + } + }, function(err, res) { + console.log('sent'); + console.log(arguments); + if (cb) { + return cb(err, res); + } + }); + } +}; + + + +},{"../actions/MessageActions.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/actions/MessageActions.coffee"}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/persistence/StationPersistence.coffee":[function(require,module,exports){ +var StationActions; + +StationActions = require('../actions/StationActions.coffee'); + +module.exports = { + createStation: function(name, cb) { + return window.urb.send({ + appl: "talk", + mark: "talk-command", + data: { + design: { + party: name, + config: { + sources: [], + caption: "", + cordon: { + posture: "white", + list: [] + } + } + } + } + }, cb); + }, + removeStation: function(name, cb) { + return window.urb.send({ + appl: "talk", + mark: "talk-command", + data: { + design: { + party: name, + config: null + } + } + }, cb); + }, + setSources: function(station, ship, sources) { + var send; + send = { + appl: "talk", + mark: "talk-command", + data: { + design: { + party: station, + config: { + sources: sources, + caption: "", + cordon: { + posture: "white", + list: [] + } + } + } + } + }; + return window.urb.send(send, function(err, res) { + console.log('talk-command'); + return console.log(arguments); + }); + }, + members: function() { + return window.urb.subscribe({ + appl: "talk", + path: "/a/court" + }, function(err, res) { + var ref, ref1; + if (err || !res) { + console.log('/a/ err'); + console.log(err); + return; + } + console.log('/a/'); + console.log(res.data); + if ((ref = res.data) != null ? (ref1 = ref.group) != null ? ref1.global : void 0 : void 0) { + return StationActions.loadMembers(res.data.group.global); + } + }); + }, + listen: function() { + return window.urb.subscribe({ + appl: "talk", + path: "/" + }, function(err, res) { + if (err || !res.data) { + console.log('/ err'); + console.log(err); + return; + } + console.log('/'); + console.log(res.data); + if (res.data.house) { + return StationActions.loadStations(res.data.house); + } + }); + }, + listenStation: function(station) { + return window.urb.subscribe({ + appl: "talk", + path: "/ax/" + station + }, function(err, res) { + var ref; + if (err || !res) { + console.log('/ax/ err'); + console.log(err); + return; + } + console.log('/ax/'); + console.log(res.data); + if (res.data.ok === true) { + StationActions.listeningStation(station); + } + if (res.data.group) { + res.data.group.global[window.util.mainStationPath(window.urb.user)] = res.data.group.local; + StationActions.loadMembers(res.data.group.global); + } + if ((ref = res.data.cabal) != null ? ref.loc : void 0) { + return StationActions.loadConfig(station, res.data.cabal.loc); + } + }); + } +}; + + + +},{"../actions/StationActions.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/actions/StationActions.coffee"}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/stores/MessageStore.coffee":[function(require,module,exports){ +var EventEmitter, MessageDispatcher, MessageStore, _fetching, _last, _listening, _messages, _station, _typing, moment; + +moment = require('moment-timezone'); + +EventEmitter = require('events').EventEmitter; + +MessageDispatcher = require('../dispatcher/Dispatcher.coffee'); + +_messages = {}; + +_fetching = false; + +_last = null; + +_station = null; + +_listening = []; + +_typing = false; + +MessageStore = _.merge(new EventEmitter, { + removeChangeListener: function(cb) { + return this.removeListener("change", cb); + }, + emitChange: function() { + return this.emit('change'); + }, + addChangeListener: function(cb) { + return this.on('change', cb); + }, + leadingZero: function(str) { + if (Number(str) < 10) { + return "0" + str; + } else { + return str; + } + }, + convertDate: function(time) { + var d; + time = time.substr(1).split("."); + time[1] = this.leadingZero(time[1]); + time[2] = this.leadingZero(time[2]); + d = new moment(time[0] + "-" + time[1] + "-" + time[2] + "T" + time[4] + ":" + time[5] + ":" + time[6] + "Z"); + d.tz("Europe/London"); + return d; + }, + getListening: function() { + return _listening; + }, + getTyping: function() { + return _typing; + }, + getLastAudience: function() { + var messages; + if (_.keys(_messages).length === 0) { + return []; + } + messages = _.sortBy(_messages, function(_message) { + return _message.thought.statement.time; + }); + return _.keys(messages[messages.length - 1].thought.audience); + }, + setTyping: function(state) { + return _typing = state; + }, + setListening: function(station) { + if (_listening.indexOf(station) !== -1) { + return console.log('already listening on that station (somehow).'); + } else { + return _listening.push(station); + } + }, + setStation: function(station) { + return _station = station; + }, + sendMessage: function(message) { + return _messages[message.thought.serial] = message; + }, + loadMessages: function(messages, last, get) { + var k, serial, v; + for (k in messages) { + v = messages[k]; + serial = v.thought.serial; + v.key = serial; + _messages[serial] = v; + } + if (last < _last || _last === null || get === true) { + _last = last; + } + return _fetching = false; + }, + getAll: function() { + return _.values(_messages); + }, + getFetching: function() { + return _fetching; + }, + setFetching: function(state) { + return _fetching = state; + }, + getLast: function() { + return _last; + } +}); + +MessageStore.setMaxListeners(100); + +MessageStore.dispatchToken = MessageDispatcher.register(function(payload) { + var action; + action = payload.action; + switch (action.type) { + case 'station-switch': + MessageStore.setStation(action.station); + break; + case 'messages-listen': + MessageStore.setListening(action.station); + MessageStore.emitChange(); + break; + case 'messages-typing': + MessageStore.setTyping(action.state); + MessageStore.emitChange(); + break; + case 'messages-fetch': + MessageStore.setFetching(true); + MessageStore.emitChange(); + break; + case 'messages-load': + MessageStore.loadMessages(action.messages, action.last, action.get); + MessageStore.emitChange(); + break; + case 'message-load': + MessageStore.loadMessage(action.time, action.message, action.author); + MessageStore.emitChange(); + break; + case 'message-send': + MessageStore.sendMessage(action.message); + MessageStore.emitChange(); + break; + } +}); + +module.exports = MessageStore; + + + +},{"../dispatcher/Dispatcher.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/dispatcher/Dispatcher.coffee","events":"/usr/local/lib/node_modules/watchify/node_modules/browserify/node_modules/events/events.js","moment-timezone":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/node_modules/moment-timezone/index.js"}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/stores/StationStore.coffee":[function(require,module,exports){ +var EventEmitter, StationDispatcher, StationStore, _audience, _config, _listening, _members, _station, _stations, _typing, _validAudience; + +EventEmitter = require('events').EventEmitter; + +StationDispatcher = require('../dispatcher/Dispatcher.coffee'); + +_audience = []; + +_members = {}; + +_stations = []; + +_listening = []; + +_station = null; + +_config = {}; + +_typing = {}; + +_validAudience = true; + +StationStore = _.merge(new EventEmitter, { + removeChangeListener: function(cb) { + return this.removeListener("change", cb); + }, + emitChange: function() { + return this.emit('change'); + }, + addChangeListener: function(cb) { + return this.on('change', cb); + }, + getAudience: function() { + return _audience; + }, + setAudience: function(audience) { + return _audience = audience; + }, + getValidAudience: function() { + return _validAudience; + }, + setValidAudience: function(valid) { + return _validAudience = valid; + }, + toggleAudience: function(station) { + if (_audience.indexOf(station) !== -1) { + return _audience.splice(_audience.indexOf(station), 1); + } else { + return _audience.push(station); + } + }, + loadConfig: function(station, config) { + return _config[station] = config; + }, + getConfigs: function() { + return _config; + }, + getConfig: function(station) { + return _config[station]; + }, + getMember: function(ship) { + return { + ship: ship + }; + }, + loadMembers: function(members) { + var list, member, presence, results, station; + _members = {}; + results = []; + for (station in members) { + list = members[station]; + results.push((function() { + var results1; + results1 = []; + for (member in list) { + presence = list[member]; + if (!_members[member]) { + _members[member] = {}; + } + results1.push(_members[member][station] = presence); + } + return results1; + })()); + } + return results; + }, + getMembers: function() { + return _members; + }, + getListening: function() { + return _listening; + }, + setListening: function(station) { + if (_listening.indexOf(station) !== -1) { + return console.log('already listening on that station (somehow).'); + } else { + return _listening.push(station); + } + }, + createStation: function(station) { + if (_stations.indexOf(station) === -1) { + return _stations.push(station); + } + }, + loadStations: function(stations) { + return _stations = stations; + }, + getStations: function() { + return _stations; + }, + setStation: function(station) { + return _station = station; + }, + unsetStation: function(station) { + if (_station === station) { + return _station = null; + } + }, + getStation: function() { + return _station; + }, + joinStation: function(station) { + var ref; + if (((ref = _config.court) != null ? ref.sources.indexOf(station) : void 0) === -1) { + return _config.court.sources.push(station); + } + }, + getTyping: function() { + return _typing; + }, + setTyping: function(station, state) { + var k, v; + for (k in _typing) { + v = _typing[k]; + _typing[k] = k === station; + } + return _typing[station] = state; + } +}); + +StationStore.setMaxListeners(100); + +StationStore.dispatchToken = StationDispatcher.register(function(payload) { + var action; + action = payload.action; + switch (action.type) { + case 'station-audience-toggle': + StationStore.toggleAudience(action.station); + StationStore.emitChange(); + break; + case 'station-set-audience': + StationStore.setAudience(action.audience); + StationStore.emitChange(); + break; + case 'station-set-valid-audience': + StationStore.setValidAudience(action.valid); + StationStore.emitChange(); + break; + case 'station-switch': + StationStore.setAudience([]); + StationStore.setStation(action.station); + StationStore.emitChange(); + break; + case 'station-listen': + StationStore.setListening(action.station); + StationStore.emitChange(); + break; + case "config-load": + StationStore.loadConfig(action.station, action.config); + StationStore.emitChange(); + break; + case "stations-load": + StationStore.loadStations(action.stations); + StationStore.emitChange(); + break; + case "stations-leave": + StationStore.loadStations(action.stations); + StationStore.unsetStation(action.station); + StationStore.emitChange(); + break; + case "station-create": + StationStore.createStation(action.station); + StationStore.emitChange(); + break; + case "members-load": + StationStore.loadMembers(action.members); + StationStore.emitChange(); + break; + case "typing-set": + StationStore.setTyping(action.station, action.state); + StationStore.emitChange(); + break; + } +}); + +module.exports = StationStore; + + + +},{"../dispatcher/Dispatcher.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/dispatcher/Dispatcher.coffee","events":"/usr/local/lib/node_modules/watchify/node_modules/browserify/node_modules/events/events.js"}],"/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/util.coffee":[function(require,module,exports){ +if (!window.util) { + window.util = {}; +} + +_.merge(window.util, { + mainStations: ["court", "floor", "porch"], + mainStationPath: function(user) { + return "~" + user + "/" + (window.util.mainStation(user)); + }, + mainStation: function(user) { + if (!user) { + user = window.urb.user; + } + switch (user.length) { + case 3: + return "court"; + case 6: + return "floor"; + case 13: + return "porch"; + } + }, + clipAudi: function(audi) { + var ms, regx; + audi = audi.join(" "); + ms = window.util.mainStationPath(window.urb.user); + regx = new RegExp("/" + ms, "g"); + audi = audi.replace(regx, ""); + return audi.split(" "); + }, + expandAudi: function(audi) { + var ms; + audi = audi.join(" "); + ms = window.util.mainStationPath(window.urb.user); + if (audi.indexOf(ms) === -1) { + if (audi.length > 0) { + audi += " "; + } + audi += "" + ms; + } + return audi.split(" "); + }, + create: function(name) { + return window.talk.StationPersistence.createStation(name, function(err, res) {}); + }, + subscribe: function(name) { + return window.talk.StationPersistence.addSource("main", window.urb.ship, ["~zod/" + name]); + }, + uuid32: function() { + var _str, i, j, str; + str = "0v"; + str += Math.ceil(Math.random() * 8) + "."; + for (i = j = 0; j <= 5; i = ++j) { + _str = Math.ceil(Math.random() * 10000000).toString(32); + _str = ("00000" + _str).substr(-5, 5); + str += _str + "."; + } + return str.slice(0, -1); + }, + populate: function(station, number) { + var c, send; + c = 0; + send = function() { + var _audi, _message; + if (c < number) { + c++; + } else { + console.log('done'); + return true; + } + _audi = {}; + _audi[station] = "pending"; + _message = { + serial: window.util.uuid32(), + audience: _audi, + statement: { + speech: { + say: "Message " + c + }, + time: Date.now(), + now: Date.now() + } + }; + return window.talk.MessagePersistence.sendMessage(_message, send); + }; + return send(); + }, + getScroll: function() { + return this.writingPosition = $('#c').outerHeight(true) + $('#c').offset().top - $(window).height(); + }, + setScroll: function() { + window.util.getScroll(); + return $(window).scrollTop($("#c").height()); + }, + checkScroll: function() { + if (!window.util.writingPosition) { + window.util.getScroll(); + } + if ($(window).scrollTop() < window.util.writingPosition) { + return $('body').addClass('scrolling'); + } else { + return $('body').removeClass('scrolling'); + } + } +}); + + + +},{}],"/usr/local/lib/node_modules/watchify/node_modules/browserify/node_modules/events/events.js":[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } else { + throw TypeError('Uncaught, unspecified "error" event.'); + } + return false; + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + handler.apply(this, args); + } + } else if (isObject(handler)) { + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + var m; + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.listenerCount = function(emitter, type) { + var ret; + if (!emitter._events || !emitter._events[type]) + ret = 0; + else if (isFunction(emitter._events[type])) + ret = 1; + else + ret = emitter._events[type].length; + return ret; +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + +},{}]},{},["/Users/galen/Documents/src/urbit-test/urb/zod/main/pub/talk/src/js/module.coffee"]); diff --git a/main/pub/talk/src/js/move.coffee b/main/pub/talk/src/js/move.coffee new file mode 100644 index 000000000..9443881cc --- /dev/null +++ b/main/pub/talk/src/js/move.coffee @@ -0,0 +1,66 @@ +so = {} +so.ls = $(window).scrollTop() +so.cs = $(window).scrollTop() +so.w = null +so.$d = $('#nav > div') +setSo = -> + so.$n = $('#station-container') + so.w = $(window).width() + so.h = $(window).height() + so.dh = $("#c").height() + so.nh = so.$n.outerHeight(true) +setSo() +setInterval setSo,200 + +$(window).on 'resize', (e) -> + if so.w > 1170 + so.$n.removeClass 'm-up m-down m-fixed' + +ldy = 0 + +$(window).on 'scroll', (e) -> + so.cs = $(window).scrollTop() + + if so.w > 1170 + so.$n.removeClass 'm-up m-down m-fixed' + if so.w < 1170 + dy = so.ls-so.cs + + if so.cs <= 0 + so.$n.removeClass 'm-up' + so.$n.addClass 'm-down m-fixed' + return + + if so.cs+so.h > so.dh then return + + if so.$n.hasClass 'm-fixed' and + so.w < 1024 + so.$n.css left:-1*$(window).scrollLeft() + + if dy > 0 and ldy > 0 + if not so.$n.hasClass 'm-down' + so.$n.removeClass('m-up').addClass 'm-down' + top = so.cs-so.nh + if top < 0 then top = 0 + so.$n.offset top:top + if so.$n.hasClass('m-down') and + not so.$n.hasClass('m-fixed') and + so.$n.offset().top >= so.cs + so.$n.addClass 'm-fixed' + so.$n.attr {style:''} + + if dy < 0 and ldy < 0 + if not so.$n.hasClass 'm-up' + so.$n.removeClass 'open' + so.$n.removeClass('m-down m-fixed').addClass 'm-up' + so.$n.attr {style:''} + top = so.cs + sto = so.$n.offset().top + if top < 0 then top = 0 + if top > sto and top < sto+so.nh then top = sto + so.$n.offset top:top + + ldy = dy + so.ls = so.cs + +$(window).on 'scroll', window.util.checkScroll \ No newline at end of file diff --git a/main/pub/talk/src/js/util.coffee b/main/pub/talk/src/js/util.coffee new file mode 100644 index 000000000..0016e24a1 --- /dev/null +++ b/main/pub/talk/src/js/util.coffee @@ -0,0 +1,85 @@ +if not window.util then window.util = {} +_.merge window.util, + mainStations: ["court","floor","porch"] + + mainStationPath: (user) -> "~#{user}/#{window.util.mainStation(user)}" + + mainStation: (user) -> + if not user then user = window.urb.user + switch user.length + when 3 + return "court" + when 6 + return "floor" + when 13 + return "porch" + + clipAudi: (audi) -> + audi = audi.join " " + ms = window.util.mainStationPath window.urb.user + regx = new RegExp "/#{ms}","g" + audi = audi.replace regx,"" + audi.split " " + + expandAudi: (audi) -> + audi = audi.join " " + ms = window.util.mainStationPath window.urb.user + if audi.indexOf(ms) is -1 + if audi.length > 0 + audi += " " + audi += "#{ms}" + audi.split " " + + create: (name) -> + window.talk.StationPersistence.createStation name, (err,res) -> + + subscribe: (name) -> + window.talk.StationPersistence.addSource "main",window.urb.ship,["~zod/#{name}"] + + uuid32: -> + str = "0v" + str += Math.ceil(Math.random()*8)+"." + for i in [0..5] + _str = Math.ceil(Math.random()*10000000).toString(32) + _str = ("00000"+_str).substr(-5,5) + str += _str+"." + str.slice(0,-1) + + populate: (station,number) -> + c = 0 + send = -> + if c < number + c++ + else + console.log 'done' + return true + _audi = {} + _audi[station] = "pending" + _message = + serial:window.util.uuid32() + audience:_audi + statement: + speech: + say:"Message "+c + time: Date.now() + now: Date.now() + window.talk.MessagePersistence.sendMessage _message,send + send() + + getScroll: -> + @writingPosition = $('#c').outerHeight(true)+$('#c').offset().top-$(window).height() + + setScroll: -> + window.util.getScroll() + $(window).scrollTop($("#c").height()) + + isScrolling: -> + if not window.util.writingPosition + window.util.getScroll() + return ($(window).scrollTop() < window.util.writingPosition) + + checkScroll: -> + if @isScrolling() + $('body').addClass 'scrolling' + else + $('body').removeClass 'scrolling' \ No newline at end of file From 4a3c08e8f14edc42fb8c97fd45574094f5a92a89 Mon Sep 17 00:00:00 2001 From: Anton Dyudin Date: Tue, 28 Apr 2015 13:02:32 -0700 Subject: [PATCH 74/89] gall no longer talks to clay --- main/app/talk/core.hook | 1 + main/arvo/ford.hoon | 2 + main/arvo/gall.hoon | 102 +++++++++++++++------------------------- 3 files changed, 41 insertions(+), 64 deletions(-) diff --git a/main/app/talk/core.hook b/main/app/talk/core.hook index cc3af359e..ee87df0a6 100644 --- a/main/app/talk/core.hook +++ b/main/app/talk/core.hook @@ -1832,6 +1832,7 @@ ++ prep |= old=(unit (unit house-any)) ^- [(list move) _+>] + ~& %talk-prep ?> ?=(^ old) =| moz=(list move) |- diff --git a/main/arvo/ford.hoon b/main/arvo/ford.hoon index 53e42c2e8..19fc04b0d 100644 --- a/main/arvo/ford.hoon +++ b/main/arvo/ford.hoon @@ -269,6 +269,8 @@ ++ awap :: get next revision ~% %ford-w ..is ~ |= dep=@uvH + ?~ dep + ~&(dep-empty/hen +>.$) %_ +>.$ mow %- welp :_ mow diff --git a/main/arvo/gall.hoon b/main/arvo/gall.hoon index c80c51d77..50de8692e 100644 --- a/main/arvo/gall.hoon +++ b/main/arvo/gall.hoon @@ -57,12 +57,10 @@ ++ note :: out request $-> $? $: %a :: to %ames $% [%wont p=sock q=path r=*] :: - == == :: - $: %c :: to %clay - $% [%warp p=sock q=riff] :: == == :: $: %f :: to %ford $% [%exec p=@p q=beak r=(unit silk)] :: + [%wasp p=@p q=@uvH] :: == == :: $: %g :: to %gall $% [%show p=hapt q=ship r=path] :: @@ -116,7 +114,7 @@ peq=(map bone ,@uvI) :: peekers qel=(map bone ,@ud) :: rush queue length == :: - ped=(set (pair ship desk)) :: active depends + ped=@uvH :: active depends zam=scar :: opaque ducts == :: ++ silk :: see %ford @@ -156,6 +154,7 @@ == == :: $: %f :: by %ford $% [%made p=@uvH q=(each gage tang)] :: + [%news ~] :: == == == :: ++ toil (pair duct knob) :: work in progress -- :::::::::::::::::::::::::::::::::::::::::::::::::::::: @@ -404,6 +403,8 @@ [hen %give %mean u.q.sih] :: %f + ?. ?=(%made +<.sih) + ~& [%gall-bad-gasp +<.sih] `..^$ :_ ..^$ :_ ~ :- hen @@ -438,6 +439,7 @@ [%pass [%r pax] %g %took [our imp] you] :: %f + ?< ?=(%news -.+.sih) :_ ~ :- hen ?- -.q.+.sih %| [%give %mean ~ %ford-fail p.q.+.sih] @@ -694,44 +696,16 @@ :: ~& [%deff imp cub.sat] [hon r.q.caq] :: - ++ drug :: set dependencies - |= pen=(set (pair ship desk)) - :: ~& [%drug ped=ped.sat] - :: ~& [%drug pen=pen] - ^+ +> - =+ ^= new ^- (list move) - %+ turn - %+ skip (~(tap in pen) ~) - |=(a=(pair ship desk) (~(has in ped.sat) a)) - |= a=(pair ship desk) - :* hun.mat %pass (away %w %drug (scot %p p.a) q.a ~) %c - %warp [our p.a] q.a ~ - %many %& [%da +(now)] [%da (add now ~d1000)] / - == - =+ ^= old ^- (list move) - %+ turn - %+ skip (~(tap in ped.sat) ~) - |=(a=(pair ship desk) (~(has in pen) a)) - |= a=(pair ship desk) - :- hun.mat - :^ %pass (away %w %drug (scot %p p.a) q.a ~) %c - :: ~& [%sync-unsubscribe our p.a q.a] - [%warp [our p.a] q.a ~] - %_(+>.$ ped.sat pen, mow :(weld new old mow)) - :: - ++ drum :: raw dependencies + ++ drum :: set dependencies |= dep=@uvH ^+ +> - ?> ?=(^ orm.sat) - %- drug - =+ ped=`(set (pair ship desk))`[[our %main] ~ ~] - ped - ::=+ mav=(~(tap by dep) ~) - ::|- ^+ ped - ::?~ mav ped - ::?: =(r.i.mav [%da u.orm.sat]) - :: $(mav t.mav, ped (~(put in ped) p.i.mav q.i.mav)) - ::$(mav t.mav) + ?~ dep ~&(%drum-none +>.$) + ?: =(dep ped.sat) +>.$ + =+ pax=(away %w %drum (scot %uv dep) ~) + %_ +>.$ + ped.sat dep + mow :_(mow [hun.mat %pass pax %f %wasp our dep]) :: XX cancel old + == :: ++ ford :: exec to ford |= [pax=path kas=silk] @@ -774,7 +748,7 @@ :: ++ mack :: apply standard |= sih=sign - ?> ?=(%f -.sih) + ?> ?=([%f %made *] sih) ^- [(unit (list tank)) _+>] ?- -.q.+.sih & :- ~ @@ -786,7 +760,7 @@ ++ meek :: apply peek |= sih=sign ^- [(unit cage) _+>] - ?> ?=(%f -.sih) + ?> ?=([%f %made *] sih) ?- -.q.+.sih & =+ vax=`vase`q.p.q.+.sih ?. &(?=(^ q.vax) ?=(@ -.q.vax)) @@ -799,9 +773,9 @@ :: ++ mick :: apply w/depends |= sih=sign - ?> ?=(%f -.sih) - ^- [[p=? q=@uvH] _+>] - :- [-.q.+.sih p.+.sih] + ?> ?=([%f %made *] sih) + ^- [? _+>] + :- -.q.+.sih ?- -.q.+.sih & %- obey:(morn (slot 3 q.p.q.+.sih)) (slot 2 q.p.q.+.sih) @@ -811,7 +785,7 @@ ++ muck :: apply part |= sih=sign ^- [(unit (list tank)) _+>] - ?> ?=(%f -.sih) + ?> ?=([%f %made *] sih) ?- -.q.+.sih & [~ (obey q.p.q.+.sih)] | [`p.q.+.sih (give %crud %muck-made p.q.+.sih)] @@ -819,12 +793,12 @@ :: ++ murk :: apply park |= sih=sign - ^- [(unit cage) _+>] - ?> ?=(%f -.sih) + ^- [[p=@uvH q=(unit cage)] _+>] + ?> ?=([%f %made *] sih) ?- -.q.+.sih & ?. ?=(@ p.p.q.+.sih) ~| %bad-marc !! - [`p.q.+.sih +>.$] - | [~ (give %crud %murk-made p.q.+.sih)] + [[p.+.sih `p.q.+.sih] +>.$] + | [[p.+.sih ~] (give %crud %murk-made p.q.+.sih)] == :: ++ more :: domestic take @@ -851,9 +825,9 @@ :: %park =^ gyd +>.$ (murk q.hin) - ?~ gyd - +>.$ - (quen %load u.gyd) + ?~ q.gyd (drum p.gyd) + =. +>.$ (drum p.gyd) + (quen %load u.q.gyd) :: %part =^ gud +>.$ (muck q.hin) @@ -906,8 +880,8 @@ :: %prep =^ gad +>.$ (mick q.hin) - ?. p.gad (drum q.gad) - deal:(drum q.gad) + ?. gad +>.$ + deal :: %pull =^ gud +>.$ (mack q.hin) @@ -922,15 +896,15 @@ == :: %w :: autoboot - ?> ?=([%drug @ @ ~] t.pax) - =+ :* sin=((hard ,[%c %writ p=(unit)]) q.hin) - our=(need (slaw %p i.t.t.pax)) - syd=(need ((sand %tas) i.t.t.t.pax)) - == - ::~& [%sync-notified `@p`our `@ta`syd] - =. ped.sat (~(del by ped.sat) [our syd]) - ?~ p.+.sin - +>.$ + ?> ?=([%drum @ ~] t.pax) + ?> ?=([%f %news ~] q.hin) + :: ?> ?=([%drug @ @ ~] t.pax) + :: =+ :- sin=((hard ,[%c %writ p=(unit)]) q.hin) + :: [our syd]=(raid t.t.pax %p %tas ~) + :: ::~& [%sync-notified `@p`our `@ta`syd] + :: =. ped.sat (~(del by ped.sat) [our syd]) + :: ?~ p.+.sin + :: +>.$ +>.$(vey.sat (~(put to vey.sat) hen %boot ~)) == :: From f58a43c327d8d25a0fccb60fbbaf33127208adad Mon Sep 17 00:00:00 2001 From: Galen Wolfe-Pauly Date: Tue, 28 Apr 2015 14:03:11 -0700 Subject: [PATCH 75/89] docs up to working date --- main/pub/doc/arvo.md | 2 +- main/pub/doc/arvo/ames.md | 2 +- main/pub/doc/arvo/arvo.md | 2 +- main/pub/doc/arvo/clay.md | 2 +- main/pub/doc/arvo/dill.md | 2 +- main/pub/doc/arvo/eyre.md | 2 +- main/pub/doc/arvo/ford.md | 2 +- main/pub/doc/arvo/gall.md | 2 +- main/pub/doc/arvo/ives.md | 2 +- main/pub/doc/arvo/jael.md | 2 +- main/pub/doc/arvo/kahn.md | 2 +- main/pub/doc/arvo/lunt.md | 2 +- main/pub/doc/arvo/time.md | 2 +- main/pub/doc/arvo/util.md | 2 +- main/pub/doc/hoon/library/2c.md | 2 +- main/pub/tree/src/css/main.css | 3 +++ main/pub/tree/src/css/main.styl | 3 +++ main/tree/hymn.hook | 6 +++--- main/tree/json.hook | 6 +++--- 19 files changed, 27 insertions(+), 21 deletions(-) diff --git a/main/pub/doc/arvo.md b/main/pub/doc/arvo.md index acbbc9287..961231efc 100644 --- a/main/pub/doc/arvo.md +++ b/main/pub/doc/arvo.md @@ -1,7 +1,7 @@ arvo ==== -arvo is our operating system. +Our operating system. arvo is composed of modules called vanes: diff --git a/main/pub/doc/arvo/ames.md b/main/pub/doc/arvo/ames.md index 37a656ca1..68557ef27 100644 --- a/main/pub/doc/arvo/ames.md +++ b/main/pub/doc/arvo/ames.md @@ -3,7 +3,7 @@ `%ames` ======= -`%ames` is our networking protocol. +Our networking protocol. `%ames` is the name of both our network and the vane that communicates over it. When Unix receives a packet over the correct UDP port, it pipes diff --git a/main/pub/doc/arvo/arvo.md b/main/pub/doc/arvo/arvo.md index fd614d556..263c88572 100644 --- a/main/pub/doc/arvo/arvo.md +++ b/main/pub/doc/arvo/arvo.md @@ -3,6 +3,6 @@ `%arvo` ======= -`%arvo` is our operating system. +Our operating system. diff --git a/main/pub/doc/arvo/clay.md b/main/pub/doc/arvo/clay.md index 6efd69e3c..a80fb1c7f 100644 --- a/main/pub/doc/arvo/clay.md +++ b/main/pub/doc/arvo/clay.md @@ -3,7 +3,7 @@ `%clay` ======= -`%clay` is our filesystem. +Our filesystem. `%clay` is version-controlled, referentially-transparent, and global. While this filesystem is stored in `%clay`, it is mirrored to Unix for diff --git a/main/pub/doc/arvo/dill.md b/main/pub/doc/arvo/dill.md index b386d744d..01c915a19 100644 --- a/main/pub/doc/arvo/dill.md +++ b/main/pub/doc/arvo/dill.md @@ -3,7 +3,7 @@ `%dill` ======= -`%dill` is our terminal driver. +Our terminal driver. Unix sends keyboard events to `%dill` from either the console or telnet, and `%dill` produces terminal output. The only app that should directly diff --git a/main/pub/doc/arvo/eyre.md b/main/pub/doc/arvo/eyre.md index 2a1b9d9b3..ec11c90d7 100644 --- a/main/pub/doc/arvo/eyre.md +++ b/main/pub/doc/arvo/eyre.md @@ -3,7 +3,7 @@ `%eyre` ======= -`%eyre` is our http server. +Our http server. Unix sends http messages to `%eyre`, and `%eyre` produces http messages in response. In general, apps and vanes do not call `%eyre`; rather, diff --git a/main/pub/doc/arvo/ford.md b/main/pub/doc/arvo/ford.md index be96820e0..75cf839a5 100644 --- a/main/pub/doc/arvo/ford.md +++ b/main/pub/doc/arvo/ford.md @@ -3,7 +3,7 @@ `%ford` ======= -`%ford` is our typed and marked computation engine. +Our typed and marked computation engine. A variety of different services are provided by `%ford`, but they mostly involve compiling hook files, slapping/slammming code with marked data, diff --git a/main/pub/doc/arvo/gall.md b/main/pub/doc/arvo/gall.md index 523cf2fd6..87c99a6ff 100644 --- a/main/pub/doc/arvo/gall.md +++ b/main/pub/doc/arvo/gall.md @@ -3,7 +3,7 @@ `%gall` ======= -`%gall` manages our userspace applications. +Our application server manager. It allows applications and vanes to send messages to applications and subscribe to data streams. This requires `%gall` to be a sort of a diff --git a/main/pub/doc/arvo/ives.md b/main/pub/doc/arvo/ives.md index b2249dc79..5eb8907d9 100644 --- a/main/pub/doc/arvo/ives.md +++ b/main/pub/doc/arvo/ives.md @@ -3,6 +3,6 @@ `%ives` ======= -`%ives` isn't finished yet. +Isn't finished yet. diff --git a/main/pub/doc/arvo/jael.md b/main/pub/doc/arvo/jael.md index ad497b1d4..ab06b5373 100644 --- a/main/pub/doc/arvo/jael.md +++ b/main/pub/doc/arvo/jael.md @@ -3,6 +3,6 @@ `%jael` ======= -`%jael` isn't finished yet. +Isn't finished yet. diff --git a/main/pub/doc/arvo/kahn.md b/main/pub/doc/arvo/kahn.md index b728fa02f..744ffae6d 100644 --- a/main/pub/doc/arvo/kahn.md +++ b/main/pub/doc/arvo/kahn.md @@ -3,6 +3,6 @@ `%kahn` ======= -`%kahn` isn't finished yet. +Isn't finished yet. diff --git a/main/pub/doc/arvo/lunt.md b/main/pub/doc/arvo/lunt.md index 45693ad06..46f6f60dc 100644 --- a/main/pub/doc/arvo/lunt.md +++ b/main/pub/doc/arvo/lunt.md @@ -3,6 +3,6 @@ `%lunt` ======= -`%lunt` isn't finished yet. +Isn't finished yet. diff --git a/main/pub/doc/arvo/time.md b/main/pub/doc/arvo/time.md index f0f6ffbf2..40c016c5e 100644 --- a/main/pub/doc/arvo/time.md +++ b/main/pub/doc/arvo/time.md @@ -3,7 +3,7 @@ `%time` ======= -`%time` is a simple timer. +Our simple timer. It allows vanes and applications to set and timer events, which are managed in a simple priority queue. `%time` produces effects to start diff --git a/main/pub/doc/arvo/util.md b/main/pub/doc/arvo/util.md index 0ee75bb1c..2e4f764f3 100644 --- a/main/pub/doc/arvo/util.md +++ b/main/pub/doc/arvo/util.md @@ -3,7 +3,7 @@ CLI Apps ======== -These are our simple command-line applications. +Our simple command-line applications. You can find them in `/main/app`. diff --git a/main/pub/doc/hoon/library/2c.md b/main/pub/doc/hoon/library/2c.md index 73857d8cf..5f2fa43bf 100644 --- a/main/pub/doc/hoon/library/2c.md +++ b/main/pub/doc/hoon/library/2c.md @@ -1731,7 +1731,7 @@ Produce a parsed daily time format from an atomic date. (add (lsh 4 muc i.f.rip) $(f.rip t.f.rip)) (con (lsh 6 1 sec) fac) -Accept a [`++tarp`](), a parsed daily time, and produces a time atom, +Accept a [`++tarp`](/doc/hoon/library/1#++tarp), a parsed daily time, and produces a time atom, `@d`. `rip` is a [`++tarp`](/doc/hoon/library/1#++tarp). diff --git a/main/pub/tree/src/css/main.css b/main/pub/tree/src/css/main.css index 747d08a9c..91c7739b1 100644 --- a/main/pub/tree/src/css/main.css +++ b/main/pub/tree/src/css/main.css @@ -318,8 +318,11 @@ li:before { .list li a > div p { margin: 0; } +.list li a > div, .list li a > div p { display: inline; +} +.list li a > div p { margin-left: 0.3rem; } .list li a > div p:first-child { diff --git a/main/pub/tree/src/css/main.styl b/main/pub/tree/src/css/main.styl index b32b58d38..0295d5605 100644 --- a/main/pub/tree/src/css/main.styl +++ b/main/pub/tree/src/css/main.styl @@ -243,8 +243,11 @@ li:before .list li a > div p margin 0 +.list li a > div .list li a > div p display inline + +.list li a > div p margin-left .3rem .list li a > div p:first-child diff --git a/main/tree/hymn.hook b/main/tree/hymn.hook index b64fa15b8..337bdf27a 100644 --- a/main/tree/hymn.hook +++ b/main/tree/hymn.hook @@ -1,7 +1,7 @@ :: /? 314 /= gas /$ fuel -/= ral /: /=docs=/pub /% /react-js/ +/= ral /: /=main=/pub /% /react-js/ :: :::: :: @@ -17,12 +17,12 @@ ;head ;title: urbit Tree ;meta(name "viewport", content "width=device-width, initial-scale=1"); - ;link(type "text/css", rel "stylesheet", href "/docs/pub/tree/src/css/main.css"); + ;link(type "text/css", rel "stylesheet", href "/main/pub/tree/src/css/main.css"); ::;link(type "text/css", rel "stylesheet", href "http://localhost:8000/docs/pub/tree/src/css/main.css"); ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"); ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"); ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/react/0.12.2/react.js"); - ;script(type "text/javascript", src "/docs/pub/tree/src/js/main.js"); + ;script(type "text/javascript", src "/main/pub/tree/src/js/main.js"); ::;script(type "text/javascript", src "http://localhost:8000/docs/pub/tree/src/js/main.js"); == ;body diff --git a/main/tree/json.hook b/main/tree/json.hook index 2d3e02d9b..5f78be830 100644 --- a/main/tree/json.hook +++ b/main/tree/json.hook @@ -1,13 +1,13 @@ :: /? 314 /= gas /$ fuel -/= ral /: /=docs=/pub /% /react-js/ -/= pal /: /=docs=/pub +/= ral /: /=main=/pub /% /react-js/ +/= pal /: /=main=/pub /; |= a=(map ,@ta cord) a /% 2 /_ /react-js/ :: -/= sal /: /=docs=/pub +/= sal /: /=main=/pub /; |= a=(map ,@ta json) a /% 2 /_ /react-snip-json/ From f073b515f600046b106b9286313ae86d67483ad3 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Tue, 28 Apr 2015 17:36:37 -0400 Subject: [PATCH 76/89] fixed %cy hashes and allow de-sync from unix --- main/app/helm/core.hook | 18 +++++++++-- main/arvo/clay.hoon | 66 ++++++++++++++++++++++++++++++++--------- main/arvo/ford.hoon | 1 - 3 files changed, 68 insertions(+), 17 deletions(-) diff --git a/main/app/helm/core.hook b/main/app/helm/core.hook index 0c3fec95d..da77deb97 100644 --- a/main/app/helm/core.hook +++ b/main/app/helm/core.hook @@ -62,6 +62,7 @@ ++ note-clay :: filesystem command $% [%font p=@p q=@tas r=@p s=@tas] :: [%info p=@p q=@tas r=nori] :: + [%lynx p=@p q=@tas r=(unit ,?)] :: [%merg p=@p q=@tas r=@p s=@tas t=germ] :: == :: ++ note-dill :: system command @@ -157,13 +158,21 @@ [ost %pass /reload %d %flog %veer tip pax txt] :: ++ he-wish-sync - |= [syd=@tas her=@p sud=@tas ~] + |= [syd=desk her=ship sud=desk ~] %_ . moz :_ moz [ost %pass /sync %c %font our.hid syd her sud] == :: + ++ he-wish-unix + |= [syd=desk syn=(unit ,?)] + %_ . + moz + :_ moz + [ost %pass /unix %c %lynx our.hid syd syn] + == + :: ++ he-wish-verb %_ . moz @@ -436,10 +445,15 @@ he-abet:merge-abet:(start:(he-wish-merge:(hoke ost her) syd) ali sud gem) :: ++ poke-helm-sync - |= [ost=bone her=ship all=[@tas @p @tas ~]] + |= [ost=bone her=ship all=[desk ship desk ~]] ~& %poke-helm-sync he-abet:(he-wish-sync:(hake ost her) all) :: +++ poke-helm-unix + |= [ost=bone her=ship all=[desk (unit ,?)]] + ~& %poke-helm-unix + he-abet:(he-wish-unix:(hake ost her) all) +:: ++ poke-helm-begin |= [ost=bone you=ship begs] ~& %poke-helm-begin diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index 26ced8253..e0d4f8d6d 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -15,6 +15,7 @@ dom=dome :: desk data dok=(unit dork) :: outstanding diffs mer=(map (pair ship desk) mery) :: outstanding merges + syn=? :: sync to unix == :: ++ gift :: out result <-$ $% [%ergo p=@p q=@tas r=@ud s=(list ,[path (unit mime)])] @@ -33,6 +34,7 @@ [%info p=@p q=@tas r=nori] :: internal edit [%init p=@p] :: report install [%into p=@p q=@tas r=khan] :: external edit + [%lynx p=@p q=@tas r=(unit ,?)] :: sync to unix [%merg p=@p q=@tas r=@p s=@tas t=germ] :: merge desks [%plug p=@p q=@tas r=@p s=@tas] :: unset upstream [%wart p=sock q=@tas r=path s=*] :: network request @@ -132,6 +134,7 @@ dom=dome :: revision state dok=(unit dork) :: outstanding diffs mer=(map (pair ship desk) mery) :: outstanding merges + syn=? :: sync to unix == :: ++ riff ,[p=desk q=(unit rave)] :: request/desist ++ rind :: request manager @@ -165,13 +168,13 @@ mim=(map path mime) :: mime cache == :: -- => -:::::::::::::::::::::::::::::::::::::::::::::::::::::::: -:: section 4cA, filesystem logic :: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: section 4cA, filesystem logic :: :: :: :: |% -++ de :: per desk +++ de :: per desk |= [now=@da hen=duct hun=duct hez=(unit duct)] |= [[who=@p for=@p] syd=@ta rede ran=rang] =* red +<+>- @@ -296,6 +299,11 @@ fod.u.ref (~(put by fod.u.ref) hen inx) == :: + ++ lynx + |= sun=(unit ,?) + ^+ +> + +>.$(syn ?~(sun !syn u.sun)) + :: ++ ease :: release request ^+ . ?~ ref @@ -722,6 +730,7 @@ =. ank.dom (checkout-ankh:ze (mo can)) :: ~& %checked-out ?~ hez +>.$(dok ~) + ?. syn +>.$(dok ~) =+ ^= ceq |= a=miso ?| ?=(%del -.a) @@ -758,7 +767,8 @@ yel [[hen %note '!' %rose [" " "" ""] leaf/"clay ergo failed" p.res] yel] == - ?~ hez ~& %no-sync-duct !! + ?~ hez ~|(%no-sync-duct !!) + ?. syn ~|(%sync-off !!) =+ cay=p.res ?@ p.cay ~| %patch-bad-marc !! %= +>.$ @@ -1440,16 +1450,26 @@ :^ ~ ~ %arch :- -:!>(*arch) ^- arch - :+ *@uvI - ?.((~(has by q.yak) pax) ~ `0vfak.ehash) :: XX hash of lobes + =+ ^- descendants=(list (pair path lobe)) + %+ turn + %+ skim (~(tap by (~(del by q.yak) pax))) + |= [paf=path lob=lobe] + =(pax (scag len paf)) + |= [paf=path lob=lobe] + [(slag len paf) lob] + =+ us=(~(get by q.yak) pax) + :+ ?: &(?=(~ descendants) ?=(~ us)) + *@uvI + %+ roll + ^- (list (pair path lobe)) + [[~ ?~(us *lobe u.us)] descendants] + |=([[path lobe] @uvI] (shax (jam +<))) + us ^- (map span ,~) %- mo ^- (list (pair span ,~)) - %+ turn - %+ skim (~(tap by (~(del by q.yak) pax))) - |= [paf=path lob=lobe] - =(pax (scag len paf)) + %+ turn descendants |= [paf=path lob=lobe] - [(snag len paf) ~] + [?>(?=(^ paf) i.paf) ~] :: ++ read-at-aeon :: read-at-aeon:ze |= [yon=aeon mun=mood] :: seek and read @@ -2132,6 +2152,8 @@ =. ank.dom ank.dat ?~ hez (done:he ~) + ?. syn + (done:he ~) ergo :: ++ ergo @@ -2185,6 +2207,8 @@ == ?~ hez (error:he %ergo-no-hez ~) + ?. syn + (error:he %ergo-sync-off ~) ?: ?=(%| -.gon.dat) +>.$ %= +>.$ @@ -2270,7 +2294,7 @@ ?^(rug u.rug *rung) =+ ^= red ^- rede =+ yit=(~(get by rus.rug) syd) - ?^(yit u.yit `rede`[~2000.1.1 ~ [~ *rind] *dome ~ ~]) + ?^(yit u.yit `rede`[~2000.1.1 ~ [~ *rind] *dome ~ ~ %|]) ((de now hen ~ ~) [who him] syd red ran.ruf) :: ++ posh @@ -2293,7 +2317,7 @@ %_ +> ran.ruf run dos.yar - (~(put by dos.yar) syd [qyx.red dom.red dok.red mer.red]) + (~(put by dos.yar) syd [qyx.red dom.red dok.red mer.red syn.red]) == :: ++ wake @@ -2313,7 +2337,7 @@ %^ (de now hen hun.yar hez.yar) [who who] syd - [[now qyx.saq ~ dom.saq dok.saq mer.saq] ran.ruf] + [[now qyx.saq ~ dom.saq dok.saq mer.saq syn.saq] ran.ruf] -- -- :::::::::::::::::::::::::::::::::::::::::::::::::::::::: @@ -2406,6 +2430,19 @@ :~ [hen %slip %c %info p.q.hic q.q.hic %& p.cos one] [hen %slip %c %info p.q.hic q.q.hic %& p.cos two] == + :: + %lynx + ?: =(%$ q.q.hic) + [~ ..^$] + =^ mos ruf + =+ une=(un p.q.hic now hen ruf) + =+ ^= zat + (lynx:(di:wake:une q.q.hic) r.q.hic) + =+ zot=abet.zat + :- -.zot + =. une (pish:une q.q.hic +.zot ran.zat) + abet:une + [mos ..^$] :: %merg :: direct state up ?: =(%$ q.q.hic) @@ -2474,6 +2511,7 @@ ++ scry :: inspect |= [fur=(unit (set monk)) ren=@tas his=ship syd=desk lot=coin tyl=path] ^- (unit (unit cage)) + ~& > [%scrying ren=ren his=his syd=syd lot=lot tyl=tyl] =+ got=(~(has by fat.ruf) his) =+ luk=?.(?=(%$ -.lot) ~ ((soft case) p.lot)) ?~ luk [~ ~] diff --git a/main/arvo/ford.hoon b/main/arvo/ford.hoon index 53e42c2e8..e930ba042 100644 --- a/main/arvo/ford.hoon +++ b/main/arvo/ford.hoon @@ -331,7 +331,6 @@ :^ %pass [(scot %p our) (scot %ud num) (scot %ud p.kig) (tope bek ~)] %c - ~& >> [%camping bem] [%warp [our p.bem] q.bem [~ %sing ren r.bem (flop s.bem)]] == :: From 7718f4e32ff061cbe7b1d94217dae44434cb028e Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Tue, 28 Apr 2015 18:11:53 -0400 Subject: [PATCH 77/89] fix %tabl cache handling --- main/arvo/ford.hoon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/arvo/ford.hoon b/main/arvo/ford.hoon index bc97c7097..9f7435233 100644 --- a/main/arvo/ford.hoon +++ b/main/arvo/ford.hoon @@ -1184,7 +1184,7 @@ |= [cof=cafe key=gage] %+ cope (make cof q.i.p.kas) |= [cof=cafe val=gage] - %+ cope ^^$(p.kas t.p.kas) + %+ cope ^^$(p.kas t.p.kas, cof cof) |= [cof=cafe rex=(list (pair marc marc)) rey=vase] (fine cof [[p.key p.val] rex] (slop (slop q.key q.val) rey)) |= [cof=cafe rex=(list (pair marc marc)) rey=vase] From 7c932f455e6ad7a210f4220c0d0a5907abc4ae0b Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Tue, 28 Apr 2015 18:28:02 -0400 Subject: [PATCH 78/89] removed %scrying printf --- main/arvo/clay.hoon | 1 - 1 file changed, 1 deletion(-) diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index e0d4f8d6d..8e66075e5 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -2511,7 +2511,6 @@ ++ scry :: inspect |= [fur=(unit (set monk)) ren=@tas his=ship syd=desk lot=coin tyl=path] ^- (unit (unit cage)) - ~& > [%scrying ren=ren his=his syd=syd lot=lot tyl=tyl] =+ got=(~(has by fat.ruf) his) =+ luk=?.(?=(%$ -.lot) ~ ((soft case) p.lot)) ?~ luk [~ ~] From c362047b748ba55cfc4159e1f713d01977316210 Mon Sep 17 00:00:00 2001 From: Anton Dyudin Date: Tue, 28 Apr 2015 17:43:23 -0700 Subject: [PATCH 79/89] somewhat broken --- main/arvo/ford.hoon | 103 +++++++++++++++++++++++++++++++------------- main/arvo/gall.hoon | 2 +- 2 files changed, 74 insertions(+), 31 deletions(-) diff --git a/main/arvo/ford.hoon b/main/arvo/ford.hoon index 19fc04b0d..82f4cff8d 100644 --- a/main/arvo/ford.hoon +++ b/main/arvo/ford.hoon @@ -95,7 +95,7 @@ ++ baby :: state by ship $: tad=[p=@ud q=(map ,@ud task)] :: tasks by number dym=(map duct ,@ud) :: duct to task number - deh=deps :: depends by hash + deh=(map ,@uvH deps) :: depends by hash jav=(map ,* calx) :: cache == :: ++ bolt :: gonadic edge @@ -115,7 +115,6 @@ ++ cafe :: live cache $: p=(set calx) :: used q=(map ,* calx) :: cache - r=deps :: dependencies == :: :: :: ++ calm :: cache metadata @@ -130,7 +129,11 @@ [%slap p=calm q=[p=vase q=twig] r=vase] :: compute [%slam p=calm q=[p=vase q=vase] r=vase] :: compute == :: -++ deps (map ,@uvH (set beam)) :: hashed depends +++ deps :: depend state + $% [%init p=(set beam)] :: given out + [%sent p=(set duct) q=(map beam $?(~ @uv))] :: listener exists + [%done ~] :: change seen + == :: ++ task :: problem in progress $: nah=duct :: cause kas=silk :: problem @@ -167,9 +170,9 @@ ++ chub :: cache merge |= [a=cafe b=cafe] :: ^- cafe :: - [(grom p.a p.b) (grum q.a q.b) (grum r.a r.b)] :: + [(grom p.a p.b) (grum q.a q.b)] :: :: :: -++ faun |=([a=cafe b=vase] (fine a `gage`noun/b)) :: vase to cage +++ faun |=([a=cafe b=vase] (fine a `gage`[%noun b])) :: vase to cage ++ feel |=([a=cafe b=gage] (fine a q.b)) :: cage to vase ++ fest :: bolt to success |= a=beam :: @@ -228,7 +231,7 @@ ++ abet :: resolve ^- [(list move) baby] [(flop mow) bay] - :: + ::x ++ apex :: call |= kus=(unit silk) ^+ +> @@ -259,11 +262,37 @@ == :: ++ axun :: take rev update - |= [dep=@uvH sih=sign] + |= [tea=wire dep=@uvH sih=sign] ^+ +> ?- -.+.sih %writ - +>.$(mow :_(mow [hen %give %news ~])) + ?~ p.sih +>.$ + =+ ark=;;(arch |2.r.u.p.sih) + =+ [dap=(~(got by deh.bay) dep) bem=`beam`[bek q.u.p.sih] new=p.ark] + ~& got-writ/[new bem dap] + =- ?~(dop con con(deh.bay (~(put by deh.bay) dep dop))) + ^- [dop=$|(~ _dap) con=_+>.$] + ?- -.dap + %done + ~&(%writ-redundant `+>.$) + %init ~|(never-subscribed/dep !!) + %sent + =+ old=(~(got by q.dap) bem) + ?: |(=(old new) =(old ~)) + :- dap(q (~(put by q.dap) bem new)) + =. r.bem q.p.u.p.sih + ?> ?=(%ud -.r.bem) + =- +>.$(mow :_(mow [hen %pass tea noe])) + ^- noe=note + [%c [%warp [our p.bem] q.bem ~ [%sing %y ud/+(p.r.bem) s.bem]]] + =- [[%done ~] +>.$(mow (weld - mow))] + ^- (list move) + %+ weld (turn (~(tap in p.dap)) |=(hen=duct [hen %give %news ~])) + %+ turn (~(tap by q.dap)) :: cancel outstanding + |= [bem=beam @] + =. tea [(scot %p our) (scot %uv dep) (tope bem)] + [hen %pass tea %c %warp [our p.bem] q.bem ~] + == == :: ++ awap :: get next revision @@ -271,19 +300,29 @@ |= dep=@uvH ?~ dep ~&(dep-empty/hen +>.$) - %_ +>.$ - mow - %- welp :_ mow - %+ turn ~|(dep-missed/dep (~(tap in (~(got by deh.bay) dep)))) - |= a=beam - :^ hen %pass [(scot %p our) (scot %uv dep) ~] - =- [%c [%warp [our p.a] q.a ~ [%sing %y ud/+(`@ud`-) s.a]]] - ?. ?=(%ud -.r.a) - ;;(@ q.q:(need (need (ska ~ %cw -.a /)))) - ?: =(0 p.r.a) - ;;(@ q.q:(need (need (ska ~ %cw -.a(r da/now) /)))) - p.r.a - == + =+ dap=~|(dep-missed/dep (~(got by deh.bay) dep)) + ?- -.dap + %done +>.$(mow :_(mow [hen %give %news ~])) + %sent + =. p.dap (~(put in p.dap) hen) + +>.$(deh.bay (~(put by deh.bay) dep dap)) + %init + %_ +>.$ + deh.bay + =+ (turn (~(tap in p.dap)) |=(a=beam [a ~])) + (~(put by deh.bay) dep [%sent [hen ~ ~] (mo `(list ,[beam ~])`-)]) + :: + mow + =< (welp :_(mow (turn (~(tap in p.dap)) .))) + |= bem=beam + :^ hen %pass [(scot %p our) (scot %uv dep) (tope bem)] + =- [%c [%warp [our p.bem] q.bem ~ [%sing %y ud/- s.bem]]] + ?. ?=(%ud -.r.bem) + ;;(@ q.q:(need (need (ska ~ %cw -.bem /)))) + ?: =(0 p.r.bem) + ;;(@ q.q:(need (need (ska ~ %cw -.bem(r da/now) /)))) + p.r.bem + == == :: ++ zo ~% %ford-z @@ -449,7 +488,7 @@ ++ dash :: process cache |= cof=cafe ^+ +> - %_(+> jav.bay q.cof, deh.bay r.cof) + %_(+> jav.bay q.cof) :: ++ diff :: diff |= [cof=cafe kas=silk kos=silk] @@ -502,12 +541,14 @@ ^+ [*@uvH deh.bay] ?~ dep [0v0 deh.bay] =+ hap=(sham dep) - [hap (~(put by deh.bay) hap dep)] + ?: (~(has by deh.bay) hap) + [hap deh.bay] + [hap (~(put by deh.bay) hap [%init dep])] :: ++ exec :: execute app ^+ ..zo ?: !=(~ q.kig) ..zo - =+ bot=(make [~ jav.bay deh.bay] kas) + =+ bot=(make [~ jav.bay] kas) =. ..exec (dash p.bot) ?- -.q.bot %0 =^ dep deh.bay (daze p.q.bot) @@ -1670,15 +1711,17 @@ |= [tea=wire hen=duct hin=(hypo sign)] ^- [p=(list move) q=_..^$] ?> ?=([@ @ *] tea) - =+ our=(need (slaw %p i.tea)) + =+ our=(slav %p i.tea) =+ bay=(~(got by pol.lex) our) =^ mos bay - ?~ t.t.tea - abet:(~(axun za [[our *beak hen] [now eny ski] ~] bay) (slav %uv i.t.tea) q.hin) + =+ dep=(slaw %uv i.t.tea) + ?^ dep + =+ bek=-:(need (tome t.t.tea)) + abet:(~(axun za [[our bek hen] [now eny ski] ~] bay) [tea u.dep q.hin]) ?> ?=([@ @ @ @ ~] t.t.tea) - =+ :* num=(need (slaw %ud i.t.tea)) - tik=(need (slaw %ud i.t.t.tea)) - bek=-:(need (tome t.t.t.tea)) + =+ :* num=(slav %ud i.t.tea) + tik=(slav %ud i.t.t.tea) + bek=-:(need (tome t.t.t.tea)) == abet:(~(axon za [[our bek hen] [now eny ski] ~] bay) num tik q.hin) [mos ..^$(pol (~(put by pol) our bay))] diff --git a/main/arvo/gall.hoon b/main/arvo/gall.hoon index 50de8692e..81775711a 100644 --- a/main/arvo/gall.hoon +++ b/main/arvo/gall.hoon @@ -699,7 +699,7 @@ ++ drum :: set dependencies |= dep=@uvH ^+ +> - ?~ dep ~&(%drum-none +>.$) + ?~ dep ~&(%drum-none +>.$) ?: =(dep ped.sat) +>.$ =+ pax=(away %w %drum (scot %uv dep) ~) %_ +>.$ From 171a42cf5b63bf6d15b017c40569022f58a69164 Mon Sep 17 00:00:00 2001 From: Anton Dyudin Date: Wed, 29 Apr 2015 11:57:48 -0700 Subject: [PATCH 80/89] Init ease tracking --- main/arvo/clay.hoon | 6 ++++-- main/arvo/ford.hoon | 20 ++++++++++++-------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index 8e66075e5..586c6345e 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -306,10 +306,12 @@ :: ++ ease :: release request ^+ . + ~& ease/hen ?~ ref - =+ rov=(~(got by qyx) hen) + =+ rov=(~(get by qyx) hen) + ?~ rov ~&(ease-lost/(~(run by qyx) ,~) +) =. qyx (~(del by qyx) hen) - (mabe rov (cury best hen)) + (mabe u.rov (cury best hen)) =. qyx (~(del by qyx) hen) |- ^+ +.$ =+ nux=(~(get by fod.u.ref) hen) diff --git a/main/arvo/ford.hoon b/main/arvo/ford.hoon index 1091cd347..448b3cf4c 100644 --- a/main/arvo/ford.hoon +++ b/main/arvo/ford.hoon @@ -262,14 +262,14 @@ == :: ++ axun :: take rev update - |= [tea=wire dep=@uvH sih=sign] + |= [tea=wire dep=@uvH sup=spur sih=sign] ^+ +> ?- -.+.sih %writ ?~ p.sih +>.$ =+ ark=;;(arch |2.r.u.p.sih) - =+ [dap=(~(got by deh.bay) dep) bem=`beam`[bek q.u.p.sih] new=p.ark] - ~& got-writ/[(tope bem) ark u.p.sih(r ~) dap] + =+ [dap=(~(got by deh.bay) dep) bem=`beam`[bek sup] new=p.ark] + ~& got-writ/[dep (tope bem) ark u.p.sih(r ~) -.dap] =- ?~(dop con con(deh.bay (~(put by deh.bay) dep dop))) ^- [dop=$|(~ _dap) con=_+>.$] ?- -.dap @@ -282,14 +282,17 @@ :- dap(q (~(put by q.dap) bem `new)) =. r.bem q.p.u.p.sih ?> ?=(%ud -.r.bem) + ~& hey/[(tope bem(p.r +(p.r.bem))) hen] =- +>.$(mow :_(mow [hen %pass tea noe])) ^- noe=note - [%c [%warp [our p.bem] q.bem ~ [%sing %y ud/+(p.r.bem) s.bem]]] + [%c [%warp [our p.bem] q.bem ~ [%sing %y ud/+(p.r.bem) (flop s.bem)]]] =- [[%done ~] +>.$(mow (weld - mow))] ^- (list move) %+ weld (turn (~(tap in p.dap)) |=(hen=duct [hen %give %news ~])) + =. q.dap (~(del by q.dap) bem) %+ turn (~(tap by q.dap)) :: cancel outstanding - |= [bem=beam @] + |= [bem=beam *] + ~& bye/[(tope bem) hen] =. tea [(scot %p our) (scot %uv dep) (tope bem)] [hen %pass tea %c %warp [our p.bem] q.bem ~] == @@ -315,8 +318,9 @@ mow =< (welp :_(mow (turn (~(tap in p.dap)) .))) |= bem=beam + ~& hi/[(tope bem) hen] :^ hen %pass [(scot %p our) (scot %uv dep) (tope bem)] - =- [%c [%warp [our p.bem] q.bem ~ [%sing %y ud/- s.bem]]] + =- [%c [%warp [our p.bem] q.bem ~ [%sing %y ud/- (flop s.bem)]]] ?. ?=(%ud -.r.bem) ;;(@ q.q:(need (need (ska ~ %cw -.bem /)))) ?: =(0 p.r.bem) @@ -1716,8 +1720,8 @@ =^ mos bay =+ dep=(slaw %uv i.t.tea) ?^ dep - =+ bek=-:(need (tome t.t.tea)) - abet:(~(axun za [[our bek hen] [now eny ski] ~] bay) [tea u.dep q.hin]) + =+ [bek sup]=(need (tome t.t.tea)) + abet:(~(axun za [[our bek hen] [now eny ski] ~] bay) tea u.dep sup q.hin) ?> ?=([@ @ @ @ ~] t.t.tea) =+ :* num=(slav %ud i.t.tea) tik=(slav %ud i.t.t.tea) From d6f18401c6d16f4f293e22378f93b29198f23988 Mon Sep 17 00:00:00 2001 From: Anton Dyudin Date: Wed, 29 Apr 2015 12:43:14 -0700 Subject: [PATCH 81/89] stub out unsubscription checking --- main/arvo/clay.hoon | 3 +-- main/arvo/ford.hoon | 11 +++-------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon index 586c6345e..6bc88ec77 100644 --- a/main/arvo/clay.hoon +++ b/main/arvo/clay.hoon @@ -306,10 +306,9 @@ :: ++ ease :: release request ^+ . - ~& ease/hen ?~ ref =+ rov=(~(get by qyx) hen) - ?~ rov ~&(ease-lost/(~(run by qyx) ,~) +) + ?~ rov + :: XX handle? =. qyx (~(del by qyx) hen) (mabe u.rov (cury best hen)) =. qyx (~(del by qyx) hen) diff --git a/main/arvo/ford.hoon b/main/arvo/ford.hoon index 448b3cf4c..8444bf6dd 100644 --- a/main/arvo/ford.hoon +++ b/main/arvo/ford.hoon @@ -269,12 +269,10 @@ ?~ p.sih +>.$ =+ ark=;;(arch |2.r.u.p.sih) =+ [dap=(~(got by deh.bay) dep) bem=`beam`[bek sup] new=p.ark] - ~& got-writ/[dep (tope bem) ark u.p.sih(r ~) -.dap] =- ?~(dop con con(deh.bay (~(put by deh.bay) dep dop))) ^- [dop=$|(~ _dap) con=_+>.$] ?- -.dap - %done - ~&(%writ-redundant `+>.$) + %done `+>.$ :: writ redundant %init ~|(never-subscribed/dep !!) %sent =+ old=(~(got by q.dap) bem) @@ -282,7 +280,6 @@ :- dap(q (~(put by q.dap) bem `new)) =. r.bem q.p.u.p.sih ?> ?=(%ud -.r.bem) - ~& hey/[(tope bem(p.r +(p.r.bem))) hen] =- +>.$(mow :_(mow [hen %pass tea noe])) ^- noe=note [%c [%warp [our p.bem] q.bem ~ [%sing %y ud/+(p.r.bem) (flop s.bem)]]] @@ -292,7 +289,6 @@ =. q.dap (~(del by q.dap) bem) %+ turn (~(tap by q.dap)) :: cancel outstanding |= [bem=beam *] - ~& bye/[(tope bem) hen] =. tea [(scot %p our) (scot %uv dep) (tope bem)] [hen %pass tea %c %warp [our p.bem] q.bem ~] == @@ -311,14 +307,13 @@ +>.$(deh.bay (~(put by deh.bay) dep dap)) %init %_ +>.$ - deh.bay + deh.bay =+ (turn (~(tap in p.dap)) |=(a=beam [a ~])) (~(put by deh.bay) dep [%sent [hen ~ ~] (mo `(list ,[beam ~])`-)]) :: mow =< (welp :_(mow (turn (~(tap in p.dap)) .))) |= bem=beam - ~& hi/[(tope bem) hen] :^ hen %pass [(scot %p our) (scot %uv dep) (tope bem)] =- [%c [%warp [our p.bem] q.bem ~ [%sing %y ud/- (flop s.bem)]]] ?. ?=(%ud -.r.bem) @@ -329,7 +324,7 @@ == == :: ++ zo - ~% %ford-z + ~% %ford-z ..is == %fade fade From f03263852c2398797502c18a4f7b792da08a228d Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Wed, 29 Apr 2015 18:48:45 -0400 Subject: [PATCH 82/89] main->base, arvo events depth-first --- {main => base}/app/bang/core.hook | 0 {main => base}/app/began/core.hook | 0 {main => base}/app/begin/core.hook | 0 {main => base}/app/cat/core.hook | 0 {main => base}/app/chat/core.hook | 0 {main => base}/app/code/core.hook | 0 {main => base}/app/cp/core.hook | 0 {main => base}/app/curl/core.hook | 0 {main => base}/app/dojo/core.hook | 6 ++-- {main => base}/app/gnab/core.hook | 0 {main => base}/app/grep/core.hook | 0 {main => base}/app/helm/core.hook | 17 +++++---- {main => base}/app/into/core.hook | 0 {main => base}/app/label/core.hook | 0 {main => base}/app/ls/core.hook | 0 {main => base}/app/ls/subdir.hoon | 0 {main => base}/app/matrix/hymn.hook | 2 +- {main => base}/app/mv/core.hook | 0 {main => base}/app/nop/core.hook | 0 {main => base}/app/peek/core.hook | 0 {main => base}/app/poke/core.hook | 0 {main => base}/app/pope/core.hook | 0 {main => base}/app/reboot/core.hook | 0 {main => base}/app/reload/core.hook | 0 {main => base}/app/reset/core.hook | 0 {main => base}/app/rm/core.hook | 0 {main => base}/app/shell/core.hook | 0 {main => base}/app/sole/core.hook | 0 {main => base}/app/solid/core.hook | 0 {main => base}/app/sync/core.hook | 0 {main => base}/app/talk/core.hook | 4 +-- {main => base}/app/tease/core.hook | 0 {main => base}/app/terminal/core.hook | 0 {main => base}/app/terminal/hymn.hook | 0 {main => base}/app/terminal/hymn/script.js | 0 {main => base}/app/terminal/hymn/style.css | 0 {main => base}/app/test/app.js | 0 {main => base}/app/test/core.hook | 0 {main => base}/app/test/front/hymn.hook | 0 {main => base}/app/test/style.css | 0 {main => base}/app/ticket/core.hook | 0 {main => base}/app/time/core.hook | 0 {main => base}/app/tree/core.hook | 0 {main => base}/app/tweet/core.hook | 0 {main => base}/app/twit/core.hook | 0 {main => base}/app/twit/hoontap-keys.hoon | 0 {main => base}/app/twitter-auth/core.hook | 0 .../app/twitter-auth/hoontap-keys.txt | 0 {main => base}/app/twitter-feed/core.hook | 0 {main => base}/app/type/core.hook | 0 {main => base}/app/unsync/core.hook | 0 {main => base}/app/verb/core.hook | 0 {main => base}/app/wipe/core.hook | 0 {main => base}/app/ye/core.hook | 0 {main => base}/arvo/ames.hoon | 0 {main => base}/arvo/clay.hoon | 33 ++++++++++++------ {main => base}/arvo/dill.hoon | 29 ++++++++++----- {main => base}/arvo/eyre.hoon | 8 ++--- {main => base}/arvo/ford.hoon | 2 +- {main => base}/arvo/gall.hoon | 8 ++--- {main => base}/arvo/hoon.hoon | 11 +++++- {main => base}/arvo/jael.hoon | 0 {main => base}/arvo/kahn.hoon | 0 {main => base}/arvo/lunt.hoon | 0 {main => base}/arvo/musk.hoon | 0 {main => base}/arvo/time.hoon | 0 {main => base}/arvo/zuse.hoon | 0 {main => base}/cat/hello/gate.hook | 0 {main => base}/cat/helm/init/gate.hook | 0 {main => base}/cat/helm/merge/gate.hook | 0 {main => base}/cat/helm/reload/.gate.hook.swp | Bin {main => base}/cat/helm/reload/gate.hook | 0 {main => base}/cat/helm/sync/gate.hook | 0 {main => base}/cat/ticket/gate.hook | 0 {main => base}/dog/helm/begin/gate.hook | 0 {main => base}/dog/helm/reload/gate.hook | 0 {main => base}/dog/helm/reset/gate.hook | 0 {main => base}/dog/helm/verb/gate.hook | 0 {main => base}/dog/solid/gate.hook | 2 +- {main => base}/lib/base.css | 0 {main => base}/lib/sh-utils/core.hook | 0 {main => base}/lib/shu/core.hook | 0 {main => base}/lib/sole/core.hook | 0 {main => base}/lib/sqar/core.hook | 0 {main => base}/lib/talk/core.hook | 0 {main => base}/lib/twitter/core.hook | 0 {main => base}/lib/urb.js | 0 {main => base}/mar/cat-args/door.hook | 0 {main => base}/mar/coffee/door.hook | 0 {main => base}/mar/console-action/door.hook | 0 {main => base}/mar/console-effect/door.hook | 0 {main => base}/mar/cp-args/door.hook | 0 {main => base}/mar/css/door.hook | 0 {main => base}/mar/demo-args/door.hook | 0 {main => base}/mar/dill-belt/door.hook | 0 {main => base}/mar/dill-blit/door.hook | 0 {main => base}/mar/down/door.hook | 0 {main => base}/mar/down/html5-entities.json | 0 {main => base}/mar/down/parse.hoon | 0 {main => base}/mar/down/rend.hoon | 0 {main => base}/mar/eot/door.hook | 0 {main => base}/mar/grep-args/door.hook | 0 {main => base}/mar/hi-args/door.hook | 0 {main => base}/mar/hook/door.hook | 0 {main => base}/mar/hoon/door.hook | 0 {main => base}/mar/html/door.hook | 0 {main => base}/mar/hymn/door.hook | 0 {main => base}/mar/into-args/door.hook | 0 {main => base}/mar/js/door.hook | 0 {main => base}/mar/json/door.hook | 0 {main => base}/mar/ls-args/door.hook | 0 {main => base}/mar/md/door.hook | 0 {main => base}/mar/mess/door.hook | 0 {main => base}/mar/mime/door.hook | 0 {main => base}/mar/mv-args/door.hook | 0 {main => base}/mar/otf/door.hook | 0 {main => base}/mar/psal/door.hook | 0 {main => base}/mar/react-snip/door.hook | 0 {main => base}/mar/react/door.hook | 0 {main => base}/mar/reload-args/door.hook | 0 {main => base}/mar/rm-args/door.hook | 0 {main => base}/mar/snip/door.hook | 0 {main => base}/mar/sole-action/door.hook | 0 {main => base}/mar/sole-effect/door.hook | 0 {main => base}/mar/solid-args/door.hook | 0 {main => base}/mar/styl/door.hook | 0 {main => base}/mar/sync-args/door.hook | 0 {main => base}/mar/talk-command/door.hook | 0 {main => base}/mar/talk-report/door.hook | 0 {main => base}/mar/tang/door.hook | 0 {main => base}/mar/term-in/door.hook | 0 {main => base}/mar/term-line/door.hook | 0 {main => base}/mar/ticket-args/door.hook | 0 {main => base}/mar/txt-diff/door.hook | 0 {main => base}/mar/txt/door.hook | 0 {main => base}/mar/unsync-args/door.hook | 0 {main => base}/mar/urb/door.hook | 0 {main => base}/mar/user/door.hook | 0 {main => base}/mar/users/door.hook | 0 {main => base}/mar/verb-args/door.hook | 0 {main => base}/mar/will/door.hook | 0 {main => base}/mar/woff/door.hook | 0 {main => base}/mar/write-args/door.hook | 0 {main => base}/mar/zing/door.hook | 0 {main => base}/mar/zong/door.hook | 0 {main => base}/mar/zongs/door.hook | 0 {main => base}/mar/zung/door.hook | 0 {main => base}/psal.hook | 0 {main => base}/pub/doc.md | 0 {main => base}/pub/doc/arvo.md | 0 {main => base}/pub/doc/arvo/ames.md | 0 .../pub/doc/arvo/ames/commentary.md | 0 {main => base}/pub/doc/arvo/arvo.md | 0 .../pub/doc/arvo/arvo/commentary.md | 0 {main => base}/pub/doc/arvo/clay.md | 0 .../pub/doc/arvo/clay/commentary.md | 0 {main => base}/pub/doc/arvo/dill.md | 0 .../pub/doc/arvo/dill/commentary.md | 0 {main => base}/pub/doc/arvo/eyre.md | 0 .../pub/doc/arvo/eyre/commentary.md | 0 {main => base}/pub/doc/arvo/ford.md | 0 .../pub/doc/arvo/ford/commentary.md | 0 {main => base}/pub/doc/arvo/gall.md | 0 {main => base}/pub/doc/arvo/gall/gall.md | 0 {main => base}/pub/doc/arvo/ives.md | 0 {main => base}/pub/doc/arvo/ives/ives.md | 0 {main => base}/pub/doc/arvo/jael.md | 0 {main => base}/pub/doc/arvo/jael/jael.md | 0 {main => base}/pub/doc/arvo/kahn.md | 0 {main => base}/pub/doc/arvo/kahn/kahn.md | 0 {main => base}/pub/doc/arvo/lunt.md | 0 {main => base}/pub/doc/arvo/lunt/lunt.md | 0 {main => base}/pub/doc/arvo/time.md | 0 {main => base}/pub/doc/arvo/util.md | 0 {main => base}/pub/doc/guide.md | 0 {main => base}/pub/doc/guide/a-ford.md | 0 {main => base}/pub/doc/guide/b-cli.md | 0 {main => base}/pub/doc/guide/c-gall.md | 0 {main => base}/pub/doc/guide/d-app.md | 0 {main => base}/pub/doc/guide/e-dev.md | 0 {main => base}/pub/doc/hoon.md | 0 {main => base}/pub/doc/hoon/library.md | 0 {main => base}/pub/doc/hoon/library/0.md | 0 {main => base}/pub/doc/hoon/library/1.md | 0 {main => base}/pub/doc/hoon/library/2a.md | 0 {main => base}/pub/doc/hoon/library/2b.md | 0 {main => base}/pub/doc/hoon/library/2c.md | 0 {main => base}/pub/doc/hoon/library/2da.md | 0 {main => base}/pub/doc/hoon/library/2db.md | 0 {main => base}/pub/doc/hoon/library/2dc.md | 0 {main => base}/pub/doc/hoon/library/2dd.md | 0 {main => base}/pub/doc/hoon/library/2ea.md | 0 {main => base}/pub/doc/hoon/library/2eb.md | 0 {main => base}/pub/doc/hoon/library/2ec.md | 0 {main => base}/pub/doc/hoon/library/2ed.md | 0 {main => base}/pub/doc/hoon/library/2ee.md | 0 {main => base}/pub/doc/hoon/library/2ef.md | 0 {main => base}/pub/doc/hoon/library/2eg.md | 0 {main => base}/pub/doc/hoon/library/2eh.md | 0 {main => base}/pub/doc/hoon/library/2ei.md | 0 {main => base}/pub/doc/hoon/library/2ej.md | 0 {main => base}/pub/doc/hoon/library/2ek.md | 0 {main => base}/pub/doc/hoon/library/2el.md | 0 {main => base}/pub/doc/hoon/library/2em.md | 0 {main => base}/pub/doc/hoon/library/2en.md | 0 {main => base}/pub/doc/hoon/library/2eo.md | 0 {main => base}/pub/doc/hoon/library/2ep.md | 0 {main => base}/pub/doc/hoon/library/2ew.md | 0 {main => base}/pub/doc/hoon/library/2ex.md | 0 {main => base}/pub/doc/hoon/library/2ey.md | 0 {main => base}/pub/doc/hoon/library/2ez.md | 0 {main => base}/pub/doc/hoon/library/3ba.md | 0 {main => base}/pub/doc/hoon/library/3bb.md | 0 {main => base}/pub/doc/hoon/library/3bc.md | 0 {main => base}/pub/doc/hoon/library/3bd.md | 0 {main => base}/pub/doc/hoon/library/3be.md | 0 {main => base}/pub/doc/hoon/library/3bf.md | 0 {main => base}/pub/doc/hoon/library/3bg.md | 0 {main => base}/pub/doc/hoon/library/3bh.md | 0 {main => base}/pub/doc/hoon/library/3bi.md | 0 {main => base}/pub/doc/hoon/reference.md | 0 .../pub/doc/hoon/reference/odors.md | 0 {main => base}/pub/doc/hoon/runes.md | 0 {main => base}/pub/doc/hoon/runes/bc.md | 0 {main => base}/pub/doc/hoon/runes/bc/bcbr.md | 0 {main => base}/pub/doc/hoon/runes/bc/bccb.md | 0 {main => base}/pub/doc/hoon/runes/bc/bccl.md | 0 {main => base}/pub/doc/hoon/runes/bc/bccm.md | 0 {main => base}/pub/doc/hoon/runes/bc/bccn.md | 0 {main => base}/pub/doc/hoon/runes/bc/bckt.md | 0 {main => base}/pub/doc/hoon/runes/bc/bcls.md | 0 {main => base}/pub/doc/hoon/runes/bc/bcpm.md | 0 {main => base}/pub/doc/hoon/runes/bc/bcpt.md | 0 {main => base}/pub/doc/hoon/runes/bc/bctr.md | 0 {main => base}/pub/doc/hoon/runes/bc/bcts.md | 0 {main => base}/pub/doc/hoon/runes/bc/bcwt.md | 0 {main => base}/pub/doc/hoon/runes/bc/bczp.md | 0 {main => base}/pub/doc/hoon/runes/br.md | 0 {main => base}/pub/doc/hoon/runes/br/brcb.md | 0 {main => base}/pub/doc/hoon/runes/br/brcn.md | 0 {main => base}/pub/doc/hoon/runes/br/brdt.md | 0 {main => base}/pub/doc/hoon/runes/br/brfs.md | 0 {main => base}/pub/doc/hoon/runes/br/brhp.md | 0 {main => base}/pub/doc/hoon/runes/br/brkt.md | 0 {main => base}/pub/doc/hoon/runes/br/brls.md | 0 {main => base}/pub/doc/hoon/runes/br/brtr.md | 0 {main => base}/pub/doc/hoon/runes/br/brts.md | 0 {main => base}/pub/doc/hoon/runes/br/brwt.md | 0 {main => base}/pub/doc/hoon/runes/cl.md | 0 {main => base}/pub/doc/hoon/runes/cl/clcb.md | 0 {main => base}/pub/doc/hoon/runes/cl/clfs.md | 0 {main => base}/pub/doc/hoon/runes/cl/clhp.md | 0 {main => base}/pub/doc/hoon/runes/cl/clkt.md | 0 {main => base}/pub/doc/hoon/runes/cl/clls.md | 0 {main => base}/pub/doc/hoon/runes/cl/clsg.md | 0 {main => base}/pub/doc/hoon/runes/cl/cltr.md | 0 {main => base}/pub/doc/hoon/runes/cn.md | 0 {main => base}/pub/doc/hoon/runes/cn/cncb.md | 0 {main => base}/pub/doc/hoon/runes/cn/cncl.md | 0 {main => base}/pub/doc/hoon/runes/cn/cndt.md | 0 {main => base}/pub/doc/hoon/runes/cn/cnhp.md | 0 {main => base}/pub/doc/hoon/runes/cn/cnkt.md | 0 {main => base}/pub/doc/hoon/runes/cn/cnls.md | 0 {main => base}/pub/doc/hoon/runes/cn/cnsg.md | 0 {main => base}/pub/doc/hoon/runes/cn/cntr.md | 0 {main => base}/pub/doc/hoon/runes/cn/cnts.md | 0 {main => base}/pub/doc/hoon/runes/cn/cnzy.md | 0 {main => base}/pub/doc/hoon/runes/cn/cnzz.md | 0 {main => base}/pub/doc/hoon/runes/dt.md | 0 {main => base}/pub/doc/hoon/runes/dt/dtkt.md | 0 {main => base}/pub/doc/hoon/runes/dt/dtls.md | 0 {main => base}/pub/doc/hoon/runes/dt/dttr.md | 0 {main => base}/pub/doc/hoon/runes/dt/dtts.md | 0 {main => base}/pub/doc/hoon/runes/dt/dtwt.md | 0 {main => base}/pub/doc/hoon/runes/dt/dtzy.md | 0 {main => base}/pub/doc/hoon/runes/dt/dtzz.md | 0 {main => base}/pub/doc/hoon/runes/hx.md | 0 {main => base}/pub/doc/hoon/runes/hx/hxgl.md | 0 {main => base}/pub/doc/hoon/runes/hx/hxgr.md | 0 {main => base}/pub/doc/hoon/runes/kt.md | 0 {main => base}/pub/doc/hoon/runes/kt/ktbr.md | 0 {main => base}/pub/doc/hoon/runes/kt/ktdt.md | 0 {main => base}/pub/doc/hoon/runes/kt/kthp.md | 0 {main => base}/pub/doc/hoon/runes/kt/ktls.md | 0 {main => base}/pub/doc/hoon/runes/kt/ktpm.md | 0 {main => base}/pub/doc/hoon/runes/kt/ktsg.md | 0 {main => base}/pub/doc/hoon/runes/kt/ktts.md | 0 {main => base}/pub/doc/hoon/runes/kt/ktwt.md | 0 {main => base}/pub/doc/hoon/runes/sg.md | 0 {main => base}/pub/doc/hoon/runes/sg/sgbc.md | 0 {main => base}/pub/doc/hoon/runes/sg/sgbr.md | 0 {main => base}/pub/doc/hoon/runes/sg/sgcb.md | 0 {main => base}/pub/doc/hoon/runes/sg/sgcn.md | 0 {main => base}/pub/doc/hoon/runes/sg/sgfs.md | 0 {main => base}/pub/doc/hoon/runes/sg/sggl.md | 0 {main => base}/pub/doc/hoon/runes/sg/sggr.md | 0 {main => base}/pub/doc/hoon/runes/sg/sgls.md | 0 {main => base}/pub/doc/hoon/runes/sg/sgpm.md | 0 {main => base}/pub/doc/hoon/runes/sg/sgts.md | 0 {main => base}/pub/doc/hoon/runes/sg/sgwt.md | 0 {main => base}/pub/doc/hoon/runes/sg/sgzp.md | 0 {main => base}/pub/doc/hoon/runes/sm.md | 0 {main => base}/pub/doc/hoon/runes/sm/smcl.md | 0 {main => base}/pub/doc/hoon/runes/sm/smcn.md | 0 {main => base}/pub/doc/hoon/runes/sm/smdq.md | 0 {main => base}/pub/doc/hoon/runes/sm/smhp.md | 0 {main => base}/pub/doc/hoon/runes/sm/smls.md | 0 {main => base}/pub/doc/hoon/runes/sm/smsg.md | 0 {main => base}/pub/doc/hoon/runes/sm/smsm.md | 0 {main => base}/pub/doc/hoon/runes/sm/smtr.md | 0 {main => base}/pub/doc/hoon/runes/sm/smzz.md | 0 {main => base}/pub/doc/hoon/runes/ts.md | 0 {main => base}/pub/doc/hoon/runes/ts/tsbr.md | 0 {main => base}/pub/doc/hoon/runes/ts/tscl.md | 0 {main => base}/pub/doc/hoon/runes/ts/tsdt.md | 0 {main => base}/pub/doc/hoon/runes/ts/tsgl.md | 0 {main => base}/pub/doc/hoon/runes/ts/tsgr.md | 0 {main => base}/pub/doc/hoon/runes/ts/tshp.md | 0 {main => base}/pub/doc/hoon/runes/ts/tskt.md | 0 {main => base}/pub/doc/hoon/runes/ts/tsls.md | 0 {main => base}/pub/doc/hoon/runes/ts/tssg.md | 0 {main => base}/pub/doc/hoon/runes/ts/tstr.md | 0 {main => base}/pub/doc/hoon/runes/wt.md | 0 {main => base}/pub/doc/hoon/runes/wt/wtbr.md | 0 {main => base}/pub/doc/hoon/runes/wt/wtcl.md | 0 {main => base}/pub/doc/hoon/runes/wt/wtdt.md | 0 {main => base}/pub/doc/hoon/runes/wt/wtgl.md | 0 {main => base}/pub/doc/hoon/runes/wt/wtgr.md | 0 {main => base}/pub/doc/hoon/runes/wt/wthp.md | 0 {main => base}/pub/doc/hoon/runes/wt/wthz.md | 0 {main => base}/pub/doc/hoon/runes/wt/wtkt.md | 0 {main => base}/pub/doc/hoon/runes/wt/wtkz.md | 0 {main => base}/pub/doc/hoon/runes/wt/wtls.md | 0 {main => base}/pub/doc/hoon/runes/wt/wtlz.md | 0 {main => base}/pub/doc/hoon/runes/wt/wtpm.md | 0 {main => base}/pub/doc/hoon/runes/wt/wtpt.md | 0 {main => base}/pub/doc/hoon/runes/wt/wtpz.md | 0 {main => base}/pub/doc/hoon/runes/wt/wtsg.md | 0 {main => base}/pub/doc/hoon/runes/wt/wtsz.md | 0 {main => base}/pub/doc/hoon/runes/wt/wtts.md | 0 {main => base}/pub/doc/hoon/runes/wt/wttz.md | 0 {main => base}/pub/doc/hoon/runes/wt/wtzp.md | 0 {main => base}/pub/doc/hoon/runes/zp.md | 0 {main => base}/pub/doc/hoon/runes/zp/zpcb.md | 0 {main => base}/pub/doc/hoon/runes/zp/zpcm.md | 0 {main => base}/pub/doc/hoon/runes/zp/zpfs.md | 0 {main => base}/pub/doc/hoon/runes/zp/zpgr.md | 0 {main => base}/pub/doc/hoon/runes/zp/zpsm.md | 0 {main => base}/pub/doc/hoon/runes/zp/zpts.md | 0 {main => base}/pub/doc/hoon/runes/zp/zpwt.md | 0 {main => base}/pub/doc/hoon/runes/zp/zpzp.md | 0 {main => base}/pub/doc/nock.md | 0 {main => base}/pub/doc/nock/reference.md | 0 {main => base}/pub/doc/reference.md | 0 {main => base}/pub/doc/reference/glossary.md | 0 {main => base}/pub/doc/reference/vere.md | 0 {main => base}/pub/fab/readme.md | 0 {main => base}/pub/fab/sqar/hymn.hook | 0 {main => base}/pub/radio/fab/hymn.hook | 0 {main => base}/pub/radio/src/main.css | 0 {main => base}/pub/radio/src/main.js | 0 {main => base}/pub/sole/fab/hymn.hook | 0 {main => base}/pub/sole/src/main.coffee | 0 {main => base}/pub/sole/src/share.coffee | 0 {main => base}/pub/src/doc/chat/help.txt | 0 {main => base}/pub/src/radio/hymn.hook | 0 {main => base}/pub/src/radio/main.js | 0 {main => base}/pub/src/readme.md | 0 {main => base}/pub/talk/fab/hymn.hook | 0 {main => base}/pub/talk/src/css/fonts.styl | 0 {main => base}/pub/talk/src/css/main.css | 0 {main => base}/pub/talk/src/css/main.styl | 0 {main => base}/pub/talk/src/css/mobile.styl | 0 .../talk/src/js/actions/MessageActions.coffee | 0 .../talk/src/js/actions/StationActions.coffee | 0 .../src/js/components/MemberComponent.coffee | 0 .../js/components/MessagesComponent.coffee | 0 .../src/js/components/StationComponent.coffee | 0 .../js/components/StationsComponent.coffee | 0 .../src/js/components/TalkComponent.coffee | 0 .../src/js/components/WritingComponent.coffee | 0 .../pub/talk/src/js/dep/director.js | 0 .../talk/src/js/dispatcher/Dispatcher.coffee | 0 {main => base}/pub/talk/src/js/main.coffee | 0 {main => base}/pub/talk/src/js/main.js | 0 {main => base}/pub/talk/src/js/module.coffee | 0 {main => base}/pub/talk/src/js/module.js | 0 {main => base}/pub/talk/src/js/move.coffee | 0 {main => base}/pub/talk/src/js/package.json | 0 .../js/persistence/MessagePersistence.coffee | 0 .../js/persistence/StationPersistence.coffee | 0 .../talk/src/js/stores/MessageStore.coffee | 0 .../talk/src/js/stores/StationStore.coffee | 0 {main => base}/pub/talk/src/js/test.js | 0 {main => base}/pub/talk/src/js/util.coffee | 0 {main => base}/pub/tree/src/css/fonts.styl | 0 {main => base}/pub/tree/src/css/main.css | 0 {main => base}/pub/tree/src/css/main.styl | 0 {main => base}/pub/tree/src/css/mobile.styl | 0 .../tree/src/js/actions/TreeActions.coffee | 0 .../src/js/components/AnchorComponent.coffee | 0 .../src/js/components/BodyComponent.coffee | 0 .../src/js/components/KidsComponent.coffee | 0 .../src/js/components/ListComponent.coffee | 0 .../src/js/components/LoadComponent.coffee | 0 .../tree/src/js/dispatcher/Dispatcher.coffee | 0 {main => base}/pub/tree/src/js/main.coffee | 0 {main => base}/pub/tree/src/js/main.js | 0 {main => base}/pub/tree/src/js/package.json | 0 .../src/js/persistence/TreePersistence.coffee | 0 .../pub/tree/src/js/stores/TreeStore.coffee | 0 {main => base}/pub/tree/src/readme.md | 0 {main => base}/spec/nock/5.txt | 0 {main => base}/sur/bang-args/gate.hook | 0 {main => base}/sur/cp-args/gate.hook | 0 {main => base}/sur/demo-args/gate.hook | 0 {main => base}/sur/down/gate.hook | 0 {main => base}/sur/foobar/gate.hook | 0 {main => base}/sur/hi-args/gate.hook | 0 {main => base}/sur/into-args/gate.hook | 0 {main => base}/sur/kyev/gate.hook | 0 {main => base}/sur/markdown/core.hook | 0 {main => base}/sur/mess/gate.hook | 0 {main => base}/sur/mv-args/gate.hook | 0 {main => base}/sur/reload-args/gate.hook | 0 {main => base}/sur/rm-args/gate.hook | 0 {main => base}/sur/sole/core.hook | 0 {main => base}/sur/sync-args/gate.hook | 0 {main => base}/sur/talk/core.hook | 0 {main => base}/sur/term-ctrl/gate.hook | 0 {main => base}/sur/term-in/gate.hook | 0 {main => base}/sur/term-line/gate.hook | 0 {main => base}/sur/ticket-args/gate.hook | 0 {main => base}/sur/twitter/core.hook | 0 {main => base}/sur/unsync-args/gate.hook | 0 {main => base}/sur/user/gate.hook | 0 {main => base}/sur/users/gate.hook | 0 {main => base}/sur/verb-args/gate.hook | 0 {main => base}/sur/wand/gate.hook | 0 {main => base}/sur/zing/gate.hook | 0 {main => base}/sur/zong/gate.hook | 0 {main => base}/sur/zung/gate.hook | 0 {main => base}/tree/hymn.hook | 0 {main => base}/tree/json.hook | 0 {main => base}/tree/util.hoon | 0 {main => base}/try/readme.md | 0 446 files changed, 80 insertions(+), 42 deletions(-) rename {main => base}/app/bang/core.hook (100%) rename {main => base}/app/began/core.hook (100%) rename {main => base}/app/begin/core.hook (100%) rename {main => base}/app/cat/core.hook (100%) rename {main => base}/app/chat/core.hook (100%) rename {main => base}/app/code/core.hook (100%) rename {main => base}/app/cp/core.hook (100%) rename {main => base}/app/curl/core.hook (100%) rename {main => base}/app/dojo/core.hook (99%) rename {main => base}/app/gnab/core.hook (100%) rename {main => base}/app/grep/core.hook (100%) rename {main => base}/app/helm/core.hook (97%) rename {main => base}/app/into/core.hook (100%) rename {main => base}/app/label/core.hook (100%) rename {main => base}/app/ls/core.hook (100%) rename {main => base}/app/ls/subdir.hoon (100%) rename {main => base}/app/matrix/hymn.hook (99%) rename {main => base}/app/mv/core.hook (100%) rename {main => base}/app/nop/core.hook (100%) rename {main => base}/app/peek/core.hook (100%) rename {main => base}/app/poke/core.hook (100%) rename {main => base}/app/pope/core.hook (100%) rename {main => base}/app/reboot/core.hook (100%) rename {main => base}/app/reload/core.hook (100%) rename {main => base}/app/reset/core.hook (100%) rename {main => base}/app/rm/core.hook (100%) rename {main => base}/app/shell/core.hook (100%) rename {main => base}/app/sole/core.hook (100%) rename {main => base}/app/solid/core.hook (100%) rename {main => base}/app/sync/core.hook (100%) rename {main => base}/app/talk/core.hook (99%) rename {main => base}/app/tease/core.hook (100%) rename {main => base}/app/terminal/core.hook (100%) rename {main => base}/app/terminal/hymn.hook (100%) rename {main => base}/app/terminal/hymn/script.js (100%) rename {main => base}/app/terminal/hymn/style.css (100%) rename {main => base}/app/test/app.js (100%) rename {main => base}/app/test/core.hook (100%) rename {main => base}/app/test/front/hymn.hook (100%) rename {main => base}/app/test/style.css (100%) rename {main => base}/app/ticket/core.hook (100%) rename {main => base}/app/time/core.hook (100%) rename {main => base}/app/tree/core.hook (100%) rename {main => base}/app/tweet/core.hook (100%) rename {main => base}/app/twit/core.hook (100%) rename {main => base}/app/twit/hoontap-keys.hoon (100%) rename {main => base}/app/twitter-auth/core.hook (100%) rename {main => base}/app/twitter-auth/hoontap-keys.txt (100%) rename {main => base}/app/twitter-feed/core.hook (100%) rename {main => base}/app/type/core.hook (100%) rename {main => base}/app/unsync/core.hook (100%) rename {main => base}/app/verb/core.hook (100%) rename {main => base}/app/wipe/core.hook (100%) rename {main => base}/app/ye/core.hook (100%) rename {main => base}/arvo/ames.hoon (100%) rename {main => base}/arvo/clay.hoon (99%) rename {main => base}/arvo/dill.hoon (95%) rename {main => base}/arvo/eyre.hoon (99%) rename {main => base}/arvo/ford.hoon (99%) rename {main => base}/arvo/gall.hoon (99%) rename {main => base}/arvo/hoon.hoon (99%) rename {main => base}/arvo/jael.hoon (100%) rename {main => base}/arvo/kahn.hoon (100%) rename {main => base}/arvo/lunt.hoon (100%) rename {main => base}/arvo/musk.hoon (100%) rename {main => base}/arvo/time.hoon (100%) rename {main => base}/arvo/zuse.hoon (100%) rename {main => base}/cat/hello/gate.hook (100%) rename {main => base}/cat/helm/init/gate.hook (100%) rename {main => base}/cat/helm/merge/gate.hook (100%) rename {main => base}/cat/helm/reload/.gate.hook.swp (100%) rename {main => base}/cat/helm/reload/gate.hook (100%) rename {main => base}/cat/helm/sync/gate.hook (100%) rename {main => base}/cat/ticket/gate.hook (100%) rename {main => base}/dog/helm/begin/gate.hook (100%) rename {main => base}/dog/helm/reload/gate.hook (100%) rename {main => base}/dog/helm/reset/gate.hook (100%) rename {main => base}/dog/helm/verb/gate.hook (100%) rename {main => base}/dog/solid/gate.hook (93%) rename {main => base}/lib/base.css (100%) rename {main => base}/lib/sh-utils/core.hook (100%) rename {main => base}/lib/shu/core.hook (100%) rename {main => base}/lib/sole/core.hook (100%) rename {main => base}/lib/sqar/core.hook (100%) rename {main => base}/lib/talk/core.hook (100%) rename {main => base}/lib/twitter/core.hook (100%) rename {main => base}/lib/urb.js (100%) rename {main => base}/mar/cat-args/door.hook (100%) rename {main => base}/mar/coffee/door.hook (100%) rename {main => base}/mar/console-action/door.hook (100%) rename {main => base}/mar/console-effect/door.hook (100%) rename {main => base}/mar/cp-args/door.hook (100%) rename {main => base}/mar/css/door.hook (100%) rename {main => base}/mar/demo-args/door.hook (100%) rename {main => base}/mar/dill-belt/door.hook (100%) rename {main => base}/mar/dill-blit/door.hook (100%) rename {main => base}/mar/down/door.hook (100%) rename {main => base}/mar/down/html5-entities.json (100%) rename {main => base}/mar/down/parse.hoon (100%) rename {main => base}/mar/down/rend.hoon (100%) rename {main => base}/mar/eot/door.hook (100%) rename {main => base}/mar/grep-args/door.hook (100%) rename {main => base}/mar/hi-args/door.hook (100%) rename {main => base}/mar/hook/door.hook (100%) rename {main => base}/mar/hoon/door.hook (100%) rename {main => base}/mar/html/door.hook (100%) rename {main => base}/mar/hymn/door.hook (100%) rename {main => base}/mar/into-args/door.hook (100%) rename {main => base}/mar/js/door.hook (100%) rename {main => base}/mar/json/door.hook (100%) rename {main => base}/mar/ls-args/door.hook (100%) rename {main => base}/mar/md/door.hook (100%) rename {main => base}/mar/mess/door.hook (100%) rename {main => base}/mar/mime/door.hook (100%) rename {main => base}/mar/mv-args/door.hook (100%) rename {main => base}/mar/otf/door.hook (100%) rename {main => base}/mar/psal/door.hook (100%) rename {main => base}/mar/react-snip/door.hook (100%) rename {main => base}/mar/react/door.hook (100%) rename {main => base}/mar/reload-args/door.hook (100%) rename {main => base}/mar/rm-args/door.hook (100%) rename {main => base}/mar/snip/door.hook (100%) rename {main => base}/mar/sole-action/door.hook (100%) rename {main => base}/mar/sole-effect/door.hook (100%) rename {main => base}/mar/solid-args/door.hook (100%) rename {main => base}/mar/styl/door.hook (100%) rename {main => base}/mar/sync-args/door.hook (100%) rename {main => base}/mar/talk-command/door.hook (100%) rename {main => base}/mar/talk-report/door.hook (100%) rename {main => base}/mar/tang/door.hook (100%) rename {main => base}/mar/term-in/door.hook (100%) rename {main => base}/mar/term-line/door.hook (100%) rename {main => base}/mar/ticket-args/door.hook (100%) rename {main => base}/mar/txt-diff/door.hook (100%) rename {main => base}/mar/txt/door.hook (100%) rename {main => base}/mar/unsync-args/door.hook (100%) rename {main => base}/mar/urb/door.hook (100%) rename {main => base}/mar/user/door.hook (100%) rename {main => base}/mar/users/door.hook (100%) rename {main => base}/mar/verb-args/door.hook (100%) rename {main => base}/mar/will/door.hook (100%) rename {main => base}/mar/woff/door.hook (100%) rename {main => base}/mar/write-args/door.hook (100%) rename {main => base}/mar/zing/door.hook (100%) rename {main => base}/mar/zong/door.hook (100%) rename {main => base}/mar/zongs/door.hook (100%) rename {main => base}/mar/zung/door.hook (100%) rename {main => base}/psal.hook (100%) rename {main => base}/pub/doc.md (100%) rename {main => base}/pub/doc/arvo.md (100%) rename {main => base}/pub/doc/arvo/ames.md (100%) rename {main => base}/pub/doc/arvo/ames/commentary.md (100%) rename {main => base}/pub/doc/arvo/arvo.md (100%) rename {main => base}/pub/doc/arvo/arvo/commentary.md (100%) rename {main => base}/pub/doc/arvo/clay.md (100%) rename {main => base}/pub/doc/arvo/clay/commentary.md (100%) rename {main => base}/pub/doc/arvo/dill.md (100%) rename {main => base}/pub/doc/arvo/dill/commentary.md (100%) rename {main => base}/pub/doc/arvo/eyre.md (100%) rename {main => base}/pub/doc/arvo/eyre/commentary.md (100%) rename {main => base}/pub/doc/arvo/ford.md (100%) rename {main => base}/pub/doc/arvo/ford/commentary.md (100%) rename {main => base}/pub/doc/arvo/gall.md (100%) rename {main => base}/pub/doc/arvo/gall/gall.md (100%) rename {main => base}/pub/doc/arvo/ives.md (100%) rename {main => base}/pub/doc/arvo/ives/ives.md (100%) rename {main => base}/pub/doc/arvo/jael.md (100%) rename {main => base}/pub/doc/arvo/jael/jael.md (100%) rename {main => base}/pub/doc/arvo/kahn.md (100%) rename {main => base}/pub/doc/arvo/kahn/kahn.md (100%) rename {main => base}/pub/doc/arvo/lunt.md (100%) rename {main => base}/pub/doc/arvo/lunt/lunt.md (100%) rename {main => base}/pub/doc/arvo/time.md (100%) rename {main => base}/pub/doc/arvo/util.md (100%) rename {main => base}/pub/doc/guide.md (100%) rename {main => base}/pub/doc/guide/a-ford.md (100%) rename {main => base}/pub/doc/guide/b-cli.md (100%) rename {main => base}/pub/doc/guide/c-gall.md (100%) rename {main => base}/pub/doc/guide/d-app.md (100%) rename {main => base}/pub/doc/guide/e-dev.md (100%) rename {main => base}/pub/doc/hoon.md (100%) rename {main => base}/pub/doc/hoon/library.md (100%) rename {main => base}/pub/doc/hoon/library/0.md (100%) rename {main => base}/pub/doc/hoon/library/1.md (100%) rename {main => base}/pub/doc/hoon/library/2a.md (100%) rename {main => base}/pub/doc/hoon/library/2b.md (100%) rename {main => base}/pub/doc/hoon/library/2c.md (100%) rename {main => base}/pub/doc/hoon/library/2da.md (100%) rename {main => base}/pub/doc/hoon/library/2db.md (100%) rename {main => base}/pub/doc/hoon/library/2dc.md (100%) rename {main => base}/pub/doc/hoon/library/2dd.md (100%) rename {main => base}/pub/doc/hoon/library/2ea.md (100%) rename {main => base}/pub/doc/hoon/library/2eb.md (100%) rename {main => base}/pub/doc/hoon/library/2ec.md (100%) rename {main => base}/pub/doc/hoon/library/2ed.md (100%) rename {main => base}/pub/doc/hoon/library/2ee.md (100%) rename {main => base}/pub/doc/hoon/library/2ef.md (100%) rename {main => base}/pub/doc/hoon/library/2eg.md (100%) rename {main => base}/pub/doc/hoon/library/2eh.md (100%) rename {main => base}/pub/doc/hoon/library/2ei.md (100%) rename {main => base}/pub/doc/hoon/library/2ej.md (100%) rename {main => base}/pub/doc/hoon/library/2ek.md (100%) rename {main => base}/pub/doc/hoon/library/2el.md (100%) rename {main => base}/pub/doc/hoon/library/2em.md (100%) rename {main => base}/pub/doc/hoon/library/2en.md (100%) rename {main => base}/pub/doc/hoon/library/2eo.md (100%) rename {main => base}/pub/doc/hoon/library/2ep.md (100%) rename {main => base}/pub/doc/hoon/library/2ew.md (100%) rename {main => base}/pub/doc/hoon/library/2ex.md (100%) rename {main => base}/pub/doc/hoon/library/2ey.md (100%) rename {main => base}/pub/doc/hoon/library/2ez.md (100%) rename {main => base}/pub/doc/hoon/library/3ba.md (100%) rename {main => base}/pub/doc/hoon/library/3bb.md (100%) rename {main => base}/pub/doc/hoon/library/3bc.md (100%) rename {main => base}/pub/doc/hoon/library/3bd.md (100%) rename {main => base}/pub/doc/hoon/library/3be.md (100%) rename {main => base}/pub/doc/hoon/library/3bf.md (100%) rename {main => base}/pub/doc/hoon/library/3bg.md (100%) rename {main => base}/pub/doc/hoon/library/3bh.md (100%) rename {main => base}/pub/doc/hoon/library/3bi.md (100%) rename {main => base}/pub/doc/hoon/reference.md (100%) rename {main => base}/pub/doc/hoon/reference/odors.md (100%) rename {main => base}/pub/doc/hoon/runes.md (100%) rename {main => base}/pub/doc/hoon/runes/bc.md (100%) rename {main => base}/pub/doc/hoon/runes/bc/bcbr.md (100%) rename {main => base}/pub/doc/hoon/runes/bc/bccb.md (100%) rename {main => base}/pub/doc/hoon/runes/bc/bccl.md (100%) rename {main => base}/pub/doc/hoon/runes/bc/bccm.md (100%) rename {main => base}/pub/doc/hoon/runes/bc/bccn.md (100%) rename {main => base}/pub/doc/hoon/runes/bc/bckt.md (100%) rename {main => base}/pub/doc/hoon/runes/bc/bcls.md (100%) rename {main => base}/pub/doc/hoon/runes/bc/bcpm.md (100%) rename {main => base}/pub/doc/hoon/runes/bc/bcpt.md (100%) rename {main => base}/pub/doc/hoon/runes/bc/bctr.md (100%) rename {main => base}/pub/doc/hoon/runes/bc/bcts.md (100%) rename {main => base}/pub/doc/hoon/runes/bc/bcwt.md (100%) rename {main => base}/pub/doc/hoon/runes/bc/bczp.md (100%) rename {main => base}/pub/doc/hoon/runes/br.md (100%) rename {main => base}/pub/doc/hoon/runes/br/brcb.md (100%) rename {main => base}/pub/doc/hoon/runes/br/brcn.md (100%) rename {main => base}/pub/doc/hoon/runes/br/brdt.md (100%) rename {main => base}/pub/doc/hoon/runes/br/brfs.md (100%) rename {main => base}/pub/doc/hoon/runes/br/brhp.md (100%) rename {main => base}/pub/doc/hoon/runes/br/brkt.md (100%) rename {main => base}/pub/doc/hoon/runes/br/brls.md (100%) rename {main => base}/pub/doc/hoon/runes/br/brtr.md (100%) rename {main => base}/pub/doc/hoon/runes/br/brts.md (100%) rename {main => base}/pub/doc/hoon/runes/br/brwt.md (100%) rename {main => base}/pub/doc/hoon/runes/cl.md (100%) rename {main => base}/pub/doc/hoon/runes/cl/clcb.md (100%) rename {main => base}/pub/doc/hoon/runes/cl/clfs.md (100%) rename {main => base}/pub/doc/hoon/runes/cl/clhp.md (100%) rename {main => base}/pub/doc/hoon/runes/cl/clkt.md (100%) rename {main => base}/pub/doc/hoon/runes/cl/clls.md (100%) rename {main => base}/pub/doc/hoon/runes/cl/clsg.md (100%) rename {main => base}/pub/doc/hoon/runes/cl/cltr.md (100%) rename {main => base}/pub/doc/hoon/runes/cn.md (100%) rename {main => base}/pub/doc/hoon/runes/cn/cncb.md (100%) rename {main => base}/pub/doc/hoon/runes/cn/cncl.md (100%) rename {main => base}/pub/doc/hoon/runes/cn/cndt.md (100%) rename {main => base}/pub/doc/hoon/runes/cn/cnhp.md (100%) rename {main => base}/pub/doc/hoon/runes/cn/cnkt.md (100%) rename {main => base}/pub/doc/hoon/runes/cn/cnls.md (100%) rename {main => base}/pub/doc/hoon/runes/cn/cnsg.md (100%) rename {main => base}/pub/doc/hoon/runes/cn/cntr.md (100%) rename {main => base}/pub/doc/hoon/runes/cn/cnts.md (100%) rename {main => base}/pub/doc/hoon/runes/cn/cnzy.md (100%) rename {main => base}/pub/doc/hoon/runes/cn/cnzz.md (100%) rename {main => base}/pub/doc/hoon/runes/dt.md (100%) rename {main => base}/pub/doc/hoon/runes/dt/dtkt.md (100%) rename {main => base}/pub/doc/hoon/runes/dt/dtls.md (100%) rename {main => base}/pub/doc/hoon/runes/dt/dttr.md (100%) rename {main => base}/pub/doc/hoon/runes/dt/dtts.md (100%) rename {main => base}/pub/doc/hoon/runes/dt/dtwt.md (100%) rename {main => base}/pub/doc/hoon/runes/dt/dtzy.md (100%) rename {main => base}/pub/doc/hoon/runes/dt/dtzz.md (100%) rename {main => base}/pub/doc/hoon/runes/hx.md (100%) rename {main => base}/pub/doc/hoon/runes/hx/hxgl.md (100%) rename {main => base}/pub/doc/hoon/runes/hx/hxgr.md (100%) rename {main => base}/pub/doc/hoon/runes/kt.md (100%) rename {main => base}/pub/doc/hoon/runes/kt/ktbr.md (100%) rename {main => base}/pub/doc/hoon/runes/kt/ktdt.md (100%) rename {main => base}/pub/doc/hoon/runes/kt/kthp.md (100%) rename {main => base}/pub/doc/hoon/runes/kt/ktls.md (100%) rename {main => base}/pub/doc/hoon/runes/kt/ktpm.md (100%) rename {main => base}/pub/doc/hoon/runes/kt/ktsg.md (100%) rename {main => base}/pub/doc/hoon/runes/kt/ktts.md (100%) rename {main => base}/pub/doc/hoon/runes/kt/ktwt.md (100%) rename {main => base}/pub/doc/hoon/runes/sg.md (100%) rename {main => base}/pub/doc/hoon/runes/sg/sgbc.md (100%) rename {main => base}/pub/doc/hoon/runes/sg/sgbr.md (100%) rename {main => base}/pub/doc/hoon/runes/sg/sgcb.md (100%) rename {main => base}/pub/doc/hoon/runes/sg/sgcn.md (100%) rename {main => base}/pub/doc/hoon/runes/sg/sgfs.md (100%) rename {main => base}/pub/doc/hoon/runes/sg/sggl.md (100%) rename {main => base}/pub/doc/hoon/runes/sg/sggr.md (100%) rename {main => base}/pub/doc/hoon/runes/sg/sgls.md (100%) rename {main => base}/pub/doc/hoon/runes/sg/sgpm.md (100%) rename {main => base}/pub/doc/hoon/runes/sg/sgts.md (100%) rename {main => base}/pub/doc/hoon/runes/sg/sgwt.md (100%) rename {main => base}/pub/doc/hoon/runes/sg/sgzp.md (100%) rename {main => base}/pub/doc/hoon/runes/sm.md (100%) rename {main => base}/pub/doc/hoon/runes/sm/smcl.md (100%) rename {main => base}/pub/doc/hoon/runes/sm/smcn.md (100%) rename {main => base}/pub/doc/hoon/runes/sm/smdq.md (100%) rename {main => base}/pub/doc/hoon/runes/sm/smhp.md (100%) rename {main => base}/pub/doc/hoon/runes/sm/smls.md (100%) rename {main => base}/pub/doc/hoon/runes/sm/smsg.md (100%) rename {main => base}/pub/doc/hoon/runes/sm/smsm.md (100%) rename {main => base}/pub/doc/hoon/runes/sm/smtr.md (100%) rename {main => base}/pub/doc/hoon/runes/sm/smzz.md (100%) rename {main => base}/pub/doc/hoon/runes/ts.md (100%) rename {main => base}/pub/doc/hoon/runes/ts/tsbr.md (100%) rename {main => base}/pub/doc/hoon/runes/ts/tscl.md (100%) rename {main => base}/pub/doc/hoon/runes/ts/tsdt.md (100%) rename {main => base}/pub/doc/hoon/runes/ts/tsgl.md (100%) rename {main => base}/pub/doc/hoon/runes/ts/tsgr.md (100%) rename {main => base}/pub/doc/hoon/runes/ts/tshp.md (100%) rename {main => base}/pub/doc/hoon/runes/ts/tskt.md (100%) rename {main => base}/pub/doc/hoon/runes/ts/tsls.md (100%) rename {main => base}/pub/doc/hoon/runes/ts/tssg.md (100%) rename {main => base}/pub/doc/hoon/runes/ts/tstr.md (100%) rename {main => base}/pub/doc/hoon/runes/wt.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wtbr.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wtcl.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wtdt.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wtgl.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wtgr.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wthp.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wthz.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wtkt.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wtkz.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wtls.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wtlz.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wtpm.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wtpt.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wtpz.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wtsg.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wtsz.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wtts.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wttz.md (100%) rename {main => base}/pub/doc/hoon/runes/wt/wtzp.md (100%) rename {main => base}/pub/doc/hoon/runes/zp.md (100%) rename {main => base}/pub/doc/hoon/runes/zp/zpcb.md (100%) rename {main => base}/pub/doc/hoon/runes/zp/zpcm.md (100%) rename {main => base}/pub/doc/hoon/runes/zp/zpfs.md (100%) rename {main => base}/pub/doc/hoon/runes/zp/zpgr.md (100%) rename {main => base}/pub/doc/hoon/runes/zp/zpsm.md (100%) rename {main => base}/pub/doc/hoon/runes/zp/zpts.md (100%) rename {main => base}/pub/doc/hoon/runes/zp/zpwt.md (100%) rename {main => base}/pub/doc/hoon/runes/zp/zpzp.md (100%) rename {main => base}/pub/doc/nock.md (100%) rename {main => base}/pub/doc/nock/reference.md (100%) rename {main => base}/pub/doc/reference.md (100%) rename {main => base}/pub/doc/reference/glossary.md (100%) rename {main => base}/pub/doc/reference/vere.md (100%) rename {main => base}/pub/fab/readme.md (100%) rename {main => base}/pub/fab/sqar/hymn.hook (100%) rename {main => base}/pub/radio/fab/hymn.hook (100%) rename {main => base}/pub/radio/src/main.css (100%) rename {main => base}/pub/radio/src/main.js (100%) rename {main => base}/pub/sole/fab/hymn.hook (100%) rename {main => base}/pub/sole/src/main.coffee (100%) rename {main => base}/pub/sole/src/share.coffee (100%) rename {main => base}/pub/src/doc/chat/help.txt (100%) rename {main => base}/pub/src/radio/hymn.hook (100%) rename {main => base}/pub/src/radio/main.js (100%) rename {main => base}/pub/src/readme.md (100%) rename {main => base}/pub/talk/fab/hymn.hook (100%) rename {main => base}/pub/talk/src/css/fonts.styl (100%) rename {main => base}/pub/talk/src/css/main.css (100%) rename {main => base}/pub/talk/src/css/main.styl (100%) rename {main => base}/pub/talk/src/css/mobile.styl (100%) rename {main => base}/pub/talk/src/js/actions/MessageActions.coffee (100%) rename {main => base}/pub/talk/src/js/actions/StationActions.coffee (100%) rename {main => base}/pub/talk/src/js/components/MemberComponent.coffee (100%) rename {main => base}/pub/talk/src/js/components/MessagesComponent.coffee (100%) rename {main => base}/pub/talk/src/js/components/StationComponent.coffee (100%) rename {main => base}/pub/talk/src/js/components/StationsComponent.coffee (100%) rename {main => base}/pub/talk/src/js/components/TalkComponent.coffee (100%) rename {main => base}/pub/talk/src/js/components/WritingComponent.coffee (100%) rename {main => base}/pub/talk/src/js/dep/director.js (100%) rename {main => base}/pub/talk/src/js/dispatcher/Dispatcher.coffee (100%) rename {main => base}/pub/talk/src/js/main.coffee (100%) rename {main => base}/pub/talk/src/js/main.js (100%) rename {main => base}/pub/talk/src/js/module.coffee (100%) rename {main => base}/pub/talk/src/js/module.js (100%) rename {main => base}/pub/talk/src/js/move.coffee (100%) rename {main => base}/pub/talk/src/js/package.json (100%) rename {main => base}/pub/talk/src/js/persistence/MessagePersistence.coffee (100%) rename {main => base}/pub/talk/src/js/persistence/StationPersistence.coffee (100%) rename {main => base}/pub/talk/src/js/stores/MessageStore.coffee (100%) rename {main => base}/pub/talk/src/js/stores/StationStore.coffee (100%) rename {main => base}/pub/talk/src/js/test.js (100%) rename {main => base}/pub/talk/src/js/util.coffee (100%) rename {main => base}/pub/tree/src/css/fonts.styl (100%) rename {main => base}/pub/tree/src/css/main.css (100%) rename {main => base}/pub/tree/src/css/main.styl (100%) rename {main => base}/pub/tree/src/css/mobile.styl (100%) rename {main => base}/pub/tree/src/js/actions/TreeActions.coffee (100%) rename {main => base}/pub/tree/src/js/components/AnchorComponent.coffee (100%) rename {main => base}/pub/tree/src/js/components/BodyComponent.coffee (100%) rename {main => base}/pub/tree/src/js/components/KidsComponent.coffee (100%) rename {main => base}/pub/tree/src/js/components/ListComponent.coffee (100%) rename {main => base}/pub/tree/src/js/components/LoadComponent.coffee (100%) rename {main => base}/pub/tree/src/js/dispatcher/Dispatcher.coffee (100%) rename {main => base}/pub/tree/src/js/main.coffee (100%) rename {main => base}/pub/tree/src/js/main.js (100%) rename {main => base}/pub/tree/src/js/package.json (100%) rename {main => base}/pub/tree/src/js/persistence/TreePersistence.coffee (100%) rename {main => base}/pub/tree/src/js/stores/TreeStore.coffee (100%) rename {main => base}/pub/tree/src/readme.md (100%) rename {main => base}/spec/nock/5.txt (100%) rename {main => base}/sur/bang-args/gate.hook (100%) rename {main => base}/sur/cp-args/gate.hook (100%) rename {main => base}/sur/demo-args/gate.hook (100%) rename {main => base}/sur/down/gate.hook (100%) rename {main => base}/sur/foobar/gate.hook (100%) rename {main => base}/sur/hi-args/gate.hook (100%) rename {main => base}/sur/into-args/gate.hook (100%) rename {main => base}/sur/kyev/gate.hook (100%) rename {main => base}/sur/markdown/core.hook (100%) rename {main => base}/sur/mess/gate.hook (100%) rename {main => base}/sur/mv-args/gate.hook (100%) rename {main => base}/sur/reload-args/gate.hook (100%) rename {main => base}/sur/rm-args/gate.hook (100%) rename {main => base}/sur/sole/core.hook (100%) rename {main => base}/sur/sync-args/gate.hook (100%) rename {main => base}/sur/talk/core.hook (100%) rename {main => base}/sur/term-ctrl/gate.hook (100%) rename {main => base}/sur/term-in/gate.hook (100%) rename {main => base}/sur/term-line/gate.hook (100%) rename {main => base}/sur/ticket-args/gate.hook (100%) rename {main => base}/sur/twitter/core.hook (100%) rename {main => base}/sur/unsync-args/gate.hook (100%) rename {main => base}/sur/user/gate.hook (100%) rename {main => base}/sur/users/gate.hook (100%) rename {main => base}/sur/verb-args/gate.hook (100%) rename {main => base}/sur/wand/gate.hook (100%) rename {main => base}/sur/zing/gate.hook (100%) rename {main => base}/sur/zong/gate.hook (100%) rename {main => base}/sur/zung/gate.hook (100%) rename {main => base}/tree/hymn.hook (100%) rename {main => base}/tree/json.hook (100%) rename {main => base}/tree/util.hoon (100%) rename {main => base}/try/readme.md (100%) diff --git a/main/app/bang/core.hook b/base/app/bang/core.hook similarity index 100% rename from main/app/bang/core.hook rename to base/app/bang/core.hook diff --git a/main/app/began/core.hook b/base/app/began/core.hook similarity index 100% rename from main/app/began/core.hook rename to base/app/began/core.hook diff --git a/main/app/begin/core.hook b/base/app/begin/core.hook similarity index 100% rename from main/app/begin/core.hook rename to base/app/begin/core.hook diff --git a/main/app/cat/core.hook b/base/app/cat/core.hook similarity index 100% rename from main/app/cat/core.hook rename to base/app/cat/core.hook diff --git a/main/app/chat/core.hook b/base/app/chat/core.hook similarity index 100% rename from main/app/chat/core.hook rename to base/app/chat/core.hook diff --git a/main/app/code/core.hook b/base/app/code/core.hook similarity index 100% rename from main/app/code/core.hook rename to base/app/code/core.hook diff --git a/main/app/cp/core.hook b/base/app/cp/core.hook similarity index 100% rename from main/app/cp/core.hook rename to base/app/cp/core.hook diff --git a/main/app/curl/core.hook b/base/app/curl/core.hook similarity index 100% rename from main/app/curl/core.hook rename to base/app/curl/core.hook diff --git a/main/app/dojo/core.hook b/base/app/dojo/core.hook similarity index 99% rename from main/app/dojo/core.hook rename to base/app/dojo/core.hook index f0a69a926..344159781 100644 --- a/main/app/dojo/core.hook +++ b/base/app/dojo/core.hook @@ -270,13 +270,13 @@ |= [pax=path kas=silk] ^+ +>+> ?> ?=(~ pux) - =+ bek=[our.hid %main %da lat.hid] + =+ bek=[our.hid %home %da lat.hid] (he-pass(poy `+>+<.$(pux `pax)) pax %f %exec our.hid bek `kas) :: ++ dy-stop :: stop work ^+ +> ?~ pux +> - =+ bek=[our.hid %main %da lat.hid] + =+ bek=[our.hid %home %da lat.hid] (he-pass(poy ~) u.pux %f %exec our.hid bek ~) :: ++ dy-slam :: call by ford @@ -702,7 +702,7 @@ :- [ost ~] ^- session :* *sole-share :: say=sole-share - %main :: syd=desk + %home :: syd=desk ~ :: luc=(unit case) ~ :: poy=(unit dojo-project) ~ :: var=(map term cage) diff --git a/main/app/gnab/core.hook b/base/app/gnab/core.hook similarity index 100% rename from main/app/gnab/core.hook rename to base/app/gnab/core.hook diff --git a/main/app/grep/core.hook b/base/app/grep/core.hook similarity index 100% rename from main/app/grep/core.hook rename to base/app/grep/core.hook diff --git a/main/app/helm/core.hook b/base/app/helm/core.hook similarity index 97% rename from main/app/helm/core.hook rename to base/app/helm/core.hook index da77deb97..910a8441c 100644 --- a/main/app/helm/core.hook +++ b/base/app/helm/core.hook @@ -117,7 +117,7 @@ ^+ . =- %_(+ moz (weld (flop zum) moz)) ^- zum=(list move) - =+ top=`path`/(scot %p our.hid)/main/(scot %da lat.hid)/arvo + =+ top=`path`/(scot %p our.hid)/home/(scot %da lat.hid)/arvo :- [ost %pass /reset %d %flog %vega (weld top `path`/hoon)] %+ turn ^- (list ,[p=@tas q=@tas]) @@ -139,9 +139,9 @@ |= all=(list term) =- %_(+ moz (weld (flop zum) moz)) ^- zum=(list move) - =+ top=`path`/(scot %p our.hid)/main/(scot %da lat.hid)/arvo + =+ top=`path`/(scot %p our.hid)/home/(scot %da lat.hid)/arvo %+ turn all - =+ ark=(arch .^(%cy /(scot %p our.hid)/main/(scot %da lat.hid)/arvo)) + =+ ark=(arch .^(%cy /(scot %p our.hid)/home/(scot %da lat.hid)/arvo)) =+ van=(~(tap by r.ark)) |= nam=@tas =. nam @@ -474,16 +474,19 @@ ?~ wil [ost %give %mean ~ %rejected ~]~ :~ [ost %pass / %a %cash p.u.bur q.u.bur u.wil] - [ost %pass / %c %plug our.hid %main (sein our.hid) %main-away] + [ost %pass / %c %plug our.hid %home (sein our.hid) %kids] [ost %give %nice ~] == :: ++ pour - |= [ost=bone pax=path sih=sign] - ?+ pax ~| %helm-strange-path !! + |= [ost=bone pax=path sih=*] + ^- [(list move) _+>] + =+ sih=((soft sign) sih) + ?~ sih [~ +>.$] + ?+ pax [~ +>.$] [%merge @tas @ ~] ?: ?=(%spam i.t.t.pax) [~ +>.$] - he-abet:merge-abet:(work:(he-wish-merge:(hoke ost our.hid) i.t.pax) sih) + he-abet:merge-abet:(work:(he-wish-merge:(hoke ost our.hid) i.t.pax) u.sih) == -- diff --git a/main/app/into/core.hook b/base/app/into/core.hook similarity index 100% rename from main/app/into/core.hook rename to base/app/into/core.hook diff --git a/main/app/label/core.hook b/base/app/label/core.hook similarity index 100% rename from main/app/label/core.hook rename to base/app/label/core.hook diff --git a/main/app/ls/core.hook b/base/app/ls/core.hook similarity index 100% rename from main/app/ls/core.hook rename to base/app/ls/core.hook diff --git a/main/app/ls/subdir.hoon b/base/app/ls/subdir.hoon similarity index 100% rename from main/app/ls/subdir.hoon rename to base/app/ls/subdir.hoon diff --git a/main/app/matrix/hymn.hook b/base/app/matrix/hymn.hook similarity index 99% rename from main/app/matrix/hymn.hook rename to base/app/matrix/hymn.hook index 317482d6b..d301f0719 100644 --- a/main/app/matrix/hymn.hook +++ b/base/app/matrix/hymn.hook @@ -18,7 +18,7 @@ "mousetrap/1.4.6/mousetrap.js" "react/0.11.0/react.js" == - ;script(src "/~/at/main/lib/urb.js"); + ;script(src "/~/at/home/lib/urb.js"); ;script: urb.appl = 'sole' ;style:''' #term { diff --git a/main/app/mv/core.hook b/base/app/mv/core.hook similarity index 100% rename from main/app/mv/core.hook rename to base/app/mv/core.hook diff --git a/main/app/nop/core.hook b/base/app/nop/core.hook similarity index 100% rename from main/app/nop/core.hook rename to base/app/nop/core.hook diff --git a/main/app/peek/core.hook b/base/app/peek/core.hook similarity index 100% rename from main/app/peek/core.hook rename to base/app/peek/core.hook diff --git a/main/app/poke/core.hook b/base/app/poke/core.hook similarity index 100% rename from main/app/poke/core.hook rename to base/app/poke/core.hook diff --git a/main/app/pope/core.hook b/base/app/pope/core.hook similarity index 100% rename from main/app/pope/core.hook rename to base/app/pope/core.hook diff --git a/main/app/reboot/core.hook b/base/app/reboot/core.hook similarity index 100% rename from main/app/reboot/core.hook rename to base/app/reboot/core.hook diff --git a/main/app/reload/core.hook b/base/app/reload/core.hook similarity index 100% rename from main/app/reload/core.hook rename to base/app/reload/core.hook diff --git a/main/app/reset/core.hook b/base/app/reset/core.hook similarity index 100% rename from main/app/reset/core.hook rename to base/app/reset/core.hook diff --git a/main/app/rm/core.hook b/base/app/rm/core.hook similarity index 100% rename from main/app/rm/core.hook rename to base/app/rm/core.hook diff --git a/main/app/shell/core.hook b/base/app/shell/core.hook similarity index 100% rename from main/app/shell/core.hook rename to base/app/shell/core.hook diff --git a/main/app/sole/core.hook b/base/app/sole/core.hook similarity index 100% rename from main/app/sole/core.hook rename to base/app/sole/core.hook diff --git a/main/app/solid/core.hook b/base/app/solid/core.hook similarity index 100% rename from main/app/solid/core.hook rename to base/app/solid/core.hook diff --git a/main/app/sync/core.hook b/base/app/sync/core.hook similarity index 100% rename from main/app/sync/core.hook rename to base/app/sync/core.hook diff --git a/main/app/talk/core.hook b/base/app/talk/core.hook similarity index 99% rename from main/app/talk/core.hook rename to base/app/talk/core.hook index ee87df0a6..708cd7d93 100644 --- a/main/app/talk/core.hook +++ b/base/app/talk/core.hook @@ -1823,7 +1823,7 @@ |= [ost=bone you=ship ~] ^- [(list move) _+>] :_ +>.$ - =+ paf=/(scot %p our.hid)/main/(scot %da lat.hid)/talk/backlog/mime + =+ paf=/(scot %p our.hid)/home/(scot %da lat.hid)/talk/backlog/mime :_ ~ :* ost %pass /jamfile %c %info our.hid (foal paf %mime !>([/mime/jam (taco (jam +<+.+>.$))])) @@ -1837,7 +1837,7 @@ =| moz=(list move) |- ?~ u.old - =+ paf=/(scot %p our.hid)/main/(scot %da lat.hid)/talk/backlog/mime + =+ paf=/(scot %p our.hid)/home/(scot %da lat.hid)/talk/backlog/mime ?. ?=([%0 %0 %0] [.^(%cy paf)]) ~& %talk-prep-restore $(u.old (some ((hard house-any) (cue ((hard ,@) .^(%cx paf)))))) diff --git a/main/app/tease/core.hook b/base/app/tease/core.hook similarity index 100% rename from main/app/tease/core.hook rename to base/app/tease/core.hook diff --git a/main/app/terminal/core.hook b/base/app/terminal/core.hook similarity index 100% rename from main/app/terminal/core.hook rename to base/app/terminal/core.hook diff --git a/main/app/terminal/hymn.hook b/base/app/terminal/hymn.hook similarity index 100% rename from main/app/terminal/hymn.hook rename to base/app/terminal/hymn.hook diff --git a/main/app/terminal/hymn/script.js b/base/app/terminal/hymn/script.js similarity index 100% rename from main/app/terminal/hymn/script.js rename to base/app/terminal/hymn/script.js diff --git a/main/app/terminal/hymn/style.css b/base/app/terminal/hymn/style.css similarity index 100% rename from main/app/terminal/hymn/style.css rename to base/app/terminal/hymn/style.css diff --git a/main/app/test/app.js b/base/app/test/app.js similarity index 100% rename from main/app/test/app.js rename to base/app/test/app.js diff --git a/main/app/test/core.hook b/base/app/test/core.hook similarity index 100% rename from main/app/test/core.hook rename to base/app/test/core.hook diff --git a/main/app/test/front/hymn.hook b/base/app/test/front/hymn.hook similarity index 100% rename from main/app/test/front/hymn.hook rename to base/app/test/front/hymn.hook diff --git a/main/app/test/style.css b/base/app/test/style.css similarity index 100% rename from main/app/test/style.css rename to base/app/test/style.css diff --git a/main/app/ticket/core.hook b/base/app/ticket/core.hook similarity index 100% rename from main/app/ticket/core.hook rename to base/app/ticket/core.hook diff --git a/main/app/time/core.hook b/base/app/time/core.hook similarity index 100% rename from main/app/time/core.hook rename to base/app/time/core.hook diff --git a/main/app/tree/core.hook b/base/app/tree/core.hook similarity index 100% rename from main/app/tree/core.hook rename to base/app/tree/core.hook diff --git a/main/app/tweet/core.hook b/base/app/tweet/core.hook similarity index 100% rename from main/app/tweet/core.hook rename to base/app/tweet/core.hook diff --git a/main/app/twit/core.hook b/base/app/twit/core.hook similarity index 100% rename from main/app/twit/core.hook rename to base/app/twit/core.hook diff --git a/main/app/twit/hoontap-keys.hoon b/base/app/twit/hoontap-keys.hoon similarity index 100% rename from main/app/twit/hoontap-keys.hoon rename to base/app/twit/hoontap-keys.hoon diff --git a/main/app/twitter-auth/core.hook b/base/app/twitter-auth/core.hook similarity index 100% rename from main/app/twitter-auth/core.hook rename to base/app/twitter-auth/core.hook diff --git a/main/app/twitter-auth/hoontap-keys.txt b/base/app/twitter-auth/hoontap-keys.txt similarity index 100% rename from main/app/twitter-auth/hoontap-keys.txt rename to base/app/twitter-auth/hoontap-keys.txt diff --git a/main/app/twitter-feed/core.hook b/base/app/twitter-feed/core.hook similarity index 100% rename from main/app/twitter-feed/core.hook rename to base/app/twitter-feed/core.hook diff --git a/main/app/type/core.hook b/base/app/type/core.hook similarity index 100% rename from main/app/type/core.hook rename to base/app/type/core.hook diff --git a/main/app/unsync/core.hook b/base/app/unsync/core.hook similarity index 100% rename from main/app/unsync/core.hook rename to base/app/unsync/core.hook diff --git a/main/app/verb/core.hook b/base/app/verb/core.hook similarity index 100% rename from main/app/verb/core.hook rename to base/app/verb/core.hook diff --git a/main/app/wipe/core.hook b/base/app/wipe/core.hook similarity index 100% rename from main/app/wipe/core.hook rename to base/app/wipe/core.hook diff --git a/main/app/ye/core.hook b/base/app/ye/core.hook similarity index 100% rename from main/app/ye/core.hook rename to base/app/ye/core.hook diff --git a/main/arvo/ames.hoon b/base/arvo/ames.hoon similarity index 100% rename from main/arvo/ames.hoon rename to base/arvo/ames.hoon diff --git a/main/arvo/clay.hoon b/base/arvo/clay.hoon similarity index 99% rename from main/arvo/clay.hoon rename to base/arvo/clay.hoon index 8e66075e5..752521b9b 100644 --- a/main/arvo/clay.hoon +++ b/base/arvo/clay.hoon @@ -88,7 +88,8 @@ [%went p=ship q=cape] :: == == :: $: %c :: by %clay - $% [%mere p=(each (set path) (pair term (list tank)))] + $% [%note p=@tD q=tank] :: + [%mere p=(each (set path) (pair term tang))] [%writ p=riot] :: == == :: $: %f :: @@ -1561,7 +1562,7 @@ ^+ +> ?: (~(has by mer) ali) (error:he %already-merging ~) - ?: &(=(0 let.dom) !?=(?(%init %auto) gem)) + ?: &(=(0 let.dom) !?=(?(%init %that) gem)) (error:he %no-bob-desk ~) =. gem.dat gem =. cas.dat [%da now] @@ -2372,7 +2373,6 @@ %font ?: (~(has by sor.ruf) +.q.hic) `..^$ :_ ..^$(sor.ruf (~(put by sor.ruf) +.q.hic [0 hen])) - :: XX pass %merg and handle response :~ ^- move :* hen %pass /auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic] @@ -2385,10 +2385,7 @@ =+ bos=(sein p.q.hic) ~& [%bos bos p.q.hic] ?: =(bos p.q.hic) ~ - ^- (list move) - %+ turn (limo ~[%main]) - |= syd=@tas - [hen %pass / %c %font p.q.hic syd bos (cat 3 syd '-away')] + [hen %pass / %c %font p.q.hic %base bos %kids]~ :: %info ?: =(%$ q.q.hic) @@ -2401,6 +2398,21 @@ :- -.zot =. une (pish:une q.q.hic +.zot ran.zat) abet:une + :: ~& :+ %infoed + :: len=(lent mos) + :: %+ turn mos + :: |= move + :: ^- [duct (unit path) term term] + :: :- p + :: ^- [(unit path) term term] + :: ?+ -.q [~ *term *term] + :: %pass + :: ^- [(unit path) term term] + :: [`p.q [- +<]:q.q] + :: %give + :: ^- [(unit path) term term] + :: [~ %give -.p.q] + :: == [mos ..^$] :: %into @@ -2414,7 +2426,7 @@ ?: =(ank.dom.u.dos q.q.hic) ~ :_ ~ - :* hen %slip %c %info p.q.hic q.q.hic %& + :* hen %pass / %c %info p.q.hic q.q.hic %& (khan-to-soba `ank.dom.u.dos `r.q.hic) == =+ cos=(khan-to-soba ~ `r.q.hic) @@ -2427,8 +2439,8 @@ ?| =([%hook ~] -) =([%hoon ~] -) == == - :~ [hen %slip %c %info p.q.hic q.q.hic %& p.cos one] - [hen %slip %c %info p.q.hic q.q.hic %& p.cos two] + :~ [hen %pass /one %c %info p.q.hic q.q.hic %& p.cos one] + [hen %pass /two %c %info p.q.hic q.q.hic %& p.cos two] == :: %lynx @@ -2690,6 +2702,7 @@ == :: %mere !! + %note [[hen %give +.q.hin]~ ..^$] %waft ?> ?=([@ @ ~] tea) =+ syd=(slav %tas i.tea) diff --git a/main/arvo/dill.hoon b/base/arvo/dill.hoon similarity index 95% rename from main/arvo/dill.hoon rename to base/arvo/dill.hoon index eb021e6a9..57d47abba 100644 --- a/main/arvo/dill.hoon +++ b/base/arvo/dill.hoon @@ -137,8 +137,9 @@ $% [%make p=(unit ,@t) q=@ud r=@ s=?] :: [%sith p=@p q=@uw r=?] :: == :: -++ note-clay :: wait for clay, hack - $% [%warp p=sock q=riff] :: +++ note-clay :: + $% [%font p=@p q=@tas r=@p s=@tas] :: + [%warp p=sock q=riff] :: wait for clay, hack == :: ++ note-dill :: note to self, odd $% [%crud p=@tas q=(list tank)] :: @@ -166,7 +167,8 @@ [%init p=ship] :: == :: ++ sign-clay :: - $% [%note p=@tD q=tank] :: + $% [%mere p=(each (set path) (pair term tang))] :: + [%note p=@tD q=tank] :: [%writ p=riot] :: == :: ++ sign-dill :: @@ -262,7 +264,8 @@ ~& [%dill-init our] =+ myt=(flop (need tem)) =. tem ~ - =. moz :_(moz [hen %pass ~ %g %show [our [ram ~]] our ~]) + =. moz :_(moz [hen %pass / %c %font our %home our %base]) + =. moz :_(moz [hen %pass / %g %show [our [ram ~]] our ~]) |- ^+ +> ?~ myt +> $(myt t.myt, +> (send i.myt)) @@ -274,10 +277,10 @@ moz :_ moz :* hen - %pass - / - %c - [%warp [our our] %main `[%sing %y [%ud 1] /]] + %pass + / + %c + [%warp [our our] %base `[%sing %y [%ud 1] /]] == == :: @@ -307,6 +310,16 @@ :: [%a %init *] +>(moz :_(moz [hen %give +.sih])) + :: + [%c %mere *] + ?: ?=(%& -.p.sih) + +>.$ + ~| %dill-mere-fail + ~| p.p.p.sih + |- + ?~ q.p.p.sih !! + ~> %mean.|.(i.q.p.p.sih) :: interpolate ford fail into stack trace + $(q.p.p.sih t.q.p.p.sih) :: [%c %note *] (from %out (tuba ~(ram re q.+.sih))) diff --git a/main/arvo/eyre.hoon b/base/arvo/eyre.hoon similarity index 99% rename from main/arvo/eyre.hoon rename to base/arvo/eyre.hoon index f790d7e82..df5048efb 100644 --- a/main/arvo/eyre.hoon +++ b/base/arvo/eyre.hoon @@ -252,7 +252,7 @@ ;html ;head ;meta(charset "utf-8"); - ;link(rel "stylesheet", href "/main/lib/base.css"); + ;link(rel "stylesheet", href "/home/lib/base.css"); ;title: server error == ;body:div#c.err:pre:code:"{(wush 80 tan)}" @@ -334,7 +334,7 @@ ;pre:code#err; ;script@"/~/at/~/auth.js"; == - ;link(rel "stylesheet", href "/main/lib/base.css"); + ;link(rel "stylesheet", href "/home/lib/base.css"); == :: ++ logout-page @@ -345,7 +345,7 @@ ;pre:code#err; ;script@"/~/at/~/auth.js"; == - ;link(rel "stylesheet", href "/main/lib/base.css"); + ;link(rel "stylesheet", href "/home/lib/base.css"); == :: ++ poke-test @@ -568,7 +568,7 @@ == == :: - ++ root-beak `beak`[our %main da/now] :: XX + ++ root-beak `beak`[our %home da/now] :: XX ++ emule |= a=_|?(..emule) ^+ ..emule =+ mul=(mule a) diff --git a/main/arvo/ford.hoon b/base/arvo/ford.hoon similarity index 99% rename from main/arvo/ford.hoon rename to base/arvo/ford.hoon index 9f7435233..ceb9bc599 100644 --- a/main/arvo/ford.hoon +++ b/base/arvo/ford.hoon @@ -1456,7 +1456,7 @@ ^- beam ?~ q.huf how(s ~[for p.huf way]) - [[q.u.q.huf %main p.u.q.huf] ~[for p.huf way]] + [[q.u.q.huf q.how p.u.q.huf] ~[for p.huf way]] :: ++ neck :: consume libraries |= [cof=cafe bir=(list hoof)] diff --git a/main/arvo/gall.hoon b/base/arvo/gall.hoon similarity index 99% rename from main/arvo/gall.hoon rename to base/arvo/gall.hoon index 50de8692e..7b2197fb6 100644 --- a/main/arvo/gall.hoon +++ b/base/arvo/gall.hoon @@ -332,7 +332,7 @@ -- |% :: inner core :: -++ leak |=(our=ship `beak`[our %main %da now]) :: default beak +++ leak |=(our=ship `beak`[our %home %da now]) :: default beak ++ best :: cage to gift |= [sem=?(%rush %rust) cay=cage] ^- gift @@ -730,8 +730,8 @@ :: ++ home :: load application ^- silk - =+ let=((hard ,@) q.q:(need (need (ska ~ %cw [our %main %da now] /)))) - [%boil %core [[our %main %ud ?:(=(let 0) 1 let)] app.sat %app ~] ~] + =+ let=((hard ,@) q.q:(need (need (ska ~ %cw [our %home %da now] /)))) + [%boil %core [[our %home %ud ?:(=(let 0) 1 let)] app.sat %app ~] ~] :: ++ leav %_ . @@ -1165,7 +1165,7 @@ |= [a=term b=(list term)] [(cat 3 'pock-' a) (cat 3 'poke-' a) b] =+ ofs=(met 3 app.sat) - ?. .= (cat 3 app.sat '-') :: XX temporary, until /=main=/bin + ?. .= (cat 3 app.sat '-') :: XX temporary, until /=home=/bin (end 3 +(ofs) p.q.kon) (goc p.q.kon /pock) :(goc p.q.kon (rsh 3 ofs p.q.kon) /pock) diff --git a/main/arvo/hoon.hoon b/base/arvo/hoon.hoon similarity index 99% rename from main/arvo/hoon.hoon rename to base/arvo/hoon.hoon index 1a1289aa3..81d69c456 100644 --- a/main/arvo/hoon.hoon +++ b/base/arvo/hoon.hoon @@ -9837,8 +9837,17 @@ =| ova=(list ovum) |- ^- [p=(list ovum) q=(pair worm (list ,[p=@tas q=vase]))] ?~ mor [(flop ova) niz] + ~? &(!lac =(%c p.i.mor)) + :+ q.i.mor -.r.i.mor + ^- (unit (pair path term)) + ?+ -.r.i.mor ~ + %pass + `[p p.q]:r.i.mor + %give + ~ + == =^ nyx niz (jack lac i.mor) - $(ova (weld p.nyx ova), mor (weld t.mor q.nyx)) + $(ova (weld p.nyx ova), mor (weld q.nyx t.mor)) -- -- :::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::: diff --git a/main/arvo/jael.hoon b/base/arvo/jael.hoon similarity index 100% rename from main/arvo/jael.hoon rename to base/arvo/jael.hoon diff --git a/main/arvo/kahn.hoon b/base/arvo/kahn.hoon similarity index 100% rename from main/arvo/kahn.hoon rename to base/arvo/kahn.hoon diff --git a/main/arvo/lunt.hoon b/base/arvo/lunt.hoon similarity index 100% rename from main/arvo/lunt.hoon rename to base/arvo/lunt.hoon diff --git a/main/arvo/musk.hoon b/base/arvo/musk.hoon similarity index 100% rename from main/arvo/musk.hoon rename to base/arvo/musk.hoon diff --git a/main/arvo/time.hoon b/base/arvo/time.hoon similarity index 100% rename from main/arvo/time.hoon rename to base/arvo/time.hoon diff --git a/main/arvo/zuse.hoon b/base/arvo/zuse.hoon similarity index 100% rename from main/arvo/zuse.hoon rename to base/arvo/zuse.hoon diff --git a/main/cat/hello/gate.hook b/base/cat/hello/gate.hook similarity index 100% rename from main/cat/hello/gate.hook rename to base/cat/hello/gate.hook diff --git a/main/cat/helm/init/gate.hook b/base/cat/helm/init/gate.hook similarity index 100% rename from main/cat/helm/init/gate.hook rename to base/cat/helm/init/gate.hook diff --git a/main/cat/helm/merge/gate.hook b/base/cat/helm/merge/gate.hook similarity index 100% rename from main/cat/helm/merge/gate.hook rename to base/cat/helm/merge/gate.hook diff --git a/main/cat/helm/reload/.gate.hook.swp b/base/cat/helm/reload/.gate.hook.swp similarity index 100% rename from main/cat/helm/reload/.gate.hook.swp rename to base/cat/helm/reload/.gate.hook.swp diff --git a/main/cat/helm/reload/gate.hook b/base/cat/helm/reload/gate.hook similarity index 100% rename from main/cat/helm/reload/gate.hook rename to base/cat/helm/reload/gate.hook diff --git a/main/cat/helm/sync/gate.hook b/base/cat/helm/sync/gate.hook similarity index 100% rename from main/cat/helm/sync/gate.hook rename to base/cat/helm/sync/gate.hook diff --git a/main/cat/ticket/gate.hook b/base/cat/ticket/gate.hook similarity index 100% rename from main/cat/ticket/gate.hook rename to base/cat/ticket/gate.hook diff --git a/main/dog/helm/begin/gate.hook b/base/dog/helm/begin/gate.hook similarity index 100% rename from main/dog/helm/begin/gate.hook rename to base/dog/helm/begin/gate.hook diff --git a/main/dog/helm/reload/gate.hook b/base/dog/helm/reload/gate.hook similarity index 100% rename from main/dog/helm/reload/gate.hook rename to base/dog/helm/reload/gate.hook diff --git a/main/dog/helm/reset/gate.hook b/base/dog/helm/reset/gate.hook similarity index 100% rename from main/dog/helm/reset/gate.hook rename to base/dog/helm/reset/gate.hook diff --git a/main/dog/helm/verb/gate.hook b/base/dog/helm/verb/gate.hook similarity index 100% rename from main/dog/helm/verb/gate.hook rename to base/dog/helm/verb/gate.hook diff --git a/main/dog/solid/gate.hook b/base/dog/solid/gate.hook similarity index 93% rename from main/dog/solid/gate.hook rename to base/dog/solid/gate.hook index 7f4bb3d38..37f65e490 100644 --- a/main/dog/solid/gate.hook +++ b/base/dog/solid/gate.hook @@ -10,7 +10,7 @@ [~ ~] == %+ sole-so %noun -=+ top=`path`/(scot %p p.bec)/main/(scot %da now)/arvo +=+ top=`path`/(scot %p p.bec)/home/(scot %da now)/arvo =+ pax=`path`(weld top `path`[%hoon ~]) ~& %solid-start =+ gen=(reck pax) diff --git a/main/lib/base.css b/base/lib/base.css similarity index 100% rename from main/lib/base.css rename to base/lib/base.css diff --git a/main/lib/sh-utils/core.hook b/base/lib/sh-utils/core.hook similarity index 100% rename from main/lib/sh-utils/core.hook rename to base/lib/sh-utils/core.hook diff --git a/main/lib/shu/core.hook b/base/lib/shu/core.hook similarity index 100% rename from main/lib/shu/core.hook rename to base/lib/shu/core.hook diff --git a/main/lib/sole/core.hook b/base/lib/sole/core.hook similarity index 100% rename from main/lib/sole/core.hook rename to base/lib/sole/core.hook diff --git a/main/lib/sqar/core.hook b/base/lib/sqar/core.hook similarity index 100% rename from main/lib/sqar/core.hook rename to base/lib/sqar/core.hook diff --git a/main/lib/talk/core.hook b/base/lib/talk/core.hook similarity index 100% rename from main/lib/talk/core.hook rename to base/lib/talk/core.hook diff --git a/main/lib/twitter/core.hook b/base/lib/twitter/core.hook similarity index 100% rename from main/lib/twitter/core.hook rename to base/lib/twitter/core.hook diff --git a/main/lib/urb.js b/base/lib/urb.js similarity index 100% rename from main/lib/urb.js rename to base/lib/urb.js diff --git a/main/mar/cat-args/door.hook b/base/mar/cat-args/door.hook similarity index 100% rename from main/mar/cat-args/door.hook rename to base/mar/cat-args/door.hook diff --git a/main/mar/coffee/door.hook b/base/mar/coffee/door.hook similarity index 100% rename from main/mar/coffee/door.hook rename to base/mar/coffee/door.hook diff --git a/main/mar/console-action/door.hook b/base/mar/console-action/door.hook similarity index 100% rename from main/mar/console-action/door.hook rename to base/mar/console-action/door.hook diff --git a/main/mar/console-effect/door.hook b/base/mar/console-effect/door.hook similarity index 100% rename from main/mar/console-effect/door.hook rename to base/mar/console-effect/door.hook diff --git a/main/mar/cp-args/door.hook b/base/mar/cp-args/door.hook similarity index 100% rename from main/mar/cp-args/door.hook rename to base/mar/cp-args/door.hook diff --git a/main/mar/css/door.hook b/base/mar/css/door.hook similarity index 100% rename from main/mar/css/door.hook rename to base/mar/css/door.hook diff --git a/main/mar/demo-args/door.hook b/base/mar/demo-args/door.hook similarity index 100% rename from main/mar/demo-args/door.hook rename to base/mar/demo-args/door.hook diff --git a/main/mar/dill-belt/door.hook b/base/mar/dill-belt/door.hook similarity index 100% rename from main/mar/dill-belt/door.hook rename to base/mar/dill-belt/door.hook diff --git a/main/mar/dill-blit/door.hook b/base/mar/dill-blit/door.hook similarity index 100% rename from main/mar/dill-blit/door.hook rename to base/mar/dill-blit/door.hook diff --git a/main/mar/down/door.hook b/base/mar/down/door.hook similarity index 100% rename from main/mar/down/door.hook rename to base/mar/down/door.hook diff --git a/main/mar/down/html5-entities.json b/base/mar/down/html5-entities.json similarity index 100% rename from main/mar/down/html5-entities.json rename to base/mar/down/html5-entities.json diff --git a/main/mar/down/parse.hoon b/base/mar/down/parse.hoon similarity index 100% rename from main/mar/down/parse.hoon rename to base/mar/down/parse.hoon diff --git a/main/mar/down/rend.hoon b/base/mar/down/rend.hoon similarity index 100% rename from main/mar/down/rend.hoon rename to base/mar/down/rend.hoon diff --git a/main/mar/eot/door.hook b/base/mar/eot/door.hook similarity index 100% rename from main/mar/eot/door.hook rename to base/mar/eot/door.hook diff --git a/main/mar/grep-args/door.hook b/base/mar/grep-args/door.hook similarity index 100% rename from main/mar/grep-args/door.hook rename to base/mar/grep-args/door.hook diff --git a/main/mar/hi-args/door.hook b/base/mar/hi-args/door.hook similarity index 100% rename from main/mar/hi-args/door.hook rename to base/mar/hi-args/door.hook diff --git a/main/mar/hook/door.hook b/base/mar/hook/door.hook similarity index 100% rename from main/mar/hook/door.hook rename to base/mar/hook/door.hook diff --git a/main/mar/hoon/door.hook b/base/mar/hoon/door.hook similarity index 100% rename from main/mar/hoon/door.hook rename to base/mar/hoon/door.hook diff --git a/main/mar/html/door.hook b/base/mar/html/door.hook similarity index 100% rename from main/mar/html/door.hook rename to base/mar/html/door.hook diff --git a/main/mar/hymn/door.hook b/base/mar/hymn/door.hook similarity index 100% rename from main/mar/hymn/door.hook rename to base/mar/hymn/door.hook diff --git a/main/mar/into-args/door.hook b/base/mar/into-args/door.hook similarity index 100% rename from main/mar/into-args/door.hook rename to base/mar/into-args/door.hook diff --git a/main/mar/js/door.hook b/base/mar/js/door.hook similarity index 100% rename from main/mar/js/door.hook rename to base/mar/js/door.hook diff --git a/main/mar/json/door.hook b/base/mar/json/door.hook similarity index 100% rename from main/mar/json/door.hook rename to base/mar/json/door.hook diff --git a/main/mar/ls-args/door.hook b/base/mar/ls-args/door.hook similarity index 100% rename from main/mar/ls-args/door.hook rename to base/mar/ls-args/door.hook diff --git a/main/mar/md/door.hook b/base/mar/md/door.hook similarity index 100% rename from main/mar/md/door.hook rename to base/mar/md/door.hook diff --git a/main/mar/mess/door.hook b/base/mar/mess/door.hook similarity index 100% rename from main/mar/mess/door.hook rename to base/mar/mess/door.hook diff --git a/main/mar/mime/door.hook b/base/mar/mime/door.hook similarity index 100% rename from main/mar/mime/door.hook rename to base/mar/mime/door.hook diff --git a/main/mar/mv-args/door.hook b/base/mar/mv-args/door.hook similarity index 100% rename from main/mar/mv-args/door.hook rename to base/mar/mv-args/door.hook diff --git a/main/mar/otf/door.hook b/base/mar/otf/door.hook similarity index 100% rename from main/mar/otf/door.hook rename to base/mar/otf/door.hook diff --git a/main/mar/psal/door.hook b/base/mar/psal/door.hook similarity index 100% rename from main/mar/psal/door.hook rename to base/mar/psal/door.hook diff --git a/main/mar/react-snip/door.hook b/base/mar/react-snip/door.hook similarity index 100% rename from main/mar/react-snip/door.hook rename to base/mar/react-snip/door.hook diff --git a/main/mar/react/door.hook b/base/mar/react/door.hook similarity index 100% rename from main/mar/react/door.hook rename to base/mar/react/door.hook diff --git a/main/mar/reload-args/door.hook b/base/mar/reload-args/door.hook similarity index 100% rename from main/mar/reload-args/door.hook rename to base/mar/reload-args/door.hook diff --git a/main/mar/rm-args/door.hook b/base/mar/rm-args/door.hook similarity index 100% rename from main/mar/rm-args/door.hook rename to base/mar/rm-args/door.hook diff --git a/main/mar/snip/door.hook b/base/mar/snip/door.hook similarity index 100% rename from main/mar/snip/door.hook rename to base/mar/snip/door.hook diff --git a/main/mar/sole-action/door.hook b/base/mar/sole-action/door.hook similarity index 100% rename from main/mar/sole-action/door.hook rename to base/mar/sole-action/door.hook diff --git a/main/mar/sole-effect/door.hook b/base/mar/sole-effect/door.hook similarity index 100% rename from main/mar/sole-effect/door.hook rename to base/mar/sole-effect/door.hook diff --git a/main/mar/solid-args/door.hook b/base/mar/solid-args/door.hook similarity index 100% rename from main/mar/solid-args/door.hook rename to base/mar/solid-args/door.hook diff --git a/main/mar/styl/door.hook b/base/mar/styl/door.hook similarity index 100% rename from main/mar/styl/door.hook rename to base/mar/styl/door.hook diff --git a/main/mar/sync-args/door.hook b/base/mar/sync-args/door.hook similarity index 100% rename from main/mar/sync-args/door.hook rename to base/mar/sync-args/door.hook diff --git a/main/mar/talk-command/door.hook b/base/mar/talk-command/door.hook similarity index 100% rename from main/mar/talk-command/door.hook rename to base/mar/talk-command/door.hook diff --git a/main/mar/talk-report/door.hook b/base/mar/talk-report/door.hook similarity index 100% rename from main/mar/talk-report/door.hook rename to base/mar/talk-report/door.hook diff --git a/main/mar/tang/door.hook b/base/mar/tang/door.hook similarity index 100% rename from main/mar/tang/door.hook rename to base/mar/tang/door.hook diff --git a/main/mar/term-in/door.hook b/base/mar/term-in/door.hook similarity index 100% rename from main/mar/term-in/door.hook rename to base/mar/term-in/door.hook diff --git a/main/mar/term-line/door.hook b/base/mar/term-line/door.hook similarity index 100% rename from main/mar/term-line/door.hook rename to base/mar/term-line/door.hook diff --git a/main/mar/ticket-args/door.hook b/base/mar/ticket-args/door.hook similarity index 100% rename from main/mar/ticket-args/door.hook rename to base/mar/ticket-args/door.hook diff --git a/main/mar/txt-diff/door.hook b/base/mar/txt-diff/door.hook similarity index 100% rename from main/mar/txt-diff/door.hook rename to base/mar/txt-diff/door.hook diff --git a/main/mar/txt/door.hook b/base/mar/txt/door.hook similarity index 100% rename from main/mar/txt/door.hook rename to base/mar/txt/door.hook diff --git a/main/mar/unsync-args/door.hook b/base/mar/unsync-args/door.hook similarity index 100% rename from main/mar/unsync-args/door.hook rename to base/mar/unsync-args/door.hook diff --git a/main/mar/urb/door.hook b/base/mar/urb/door.hook similarity index 100% rename from main/mar/urb/door.hook rename to base/mar/urb/door.hook diff --git a/main/mar/user/door.hook b/base/mar/user/door.hook similarity index 100% rename from main/mar/user/door.hook rename to base/mar/user/door.hook diff --git a/main/mar/users/door.hook b/base/mar/users/door.hook similarity index 100% rename from main/mar/users/door.hook rename to base/mar/users/door.hook diff --git a/main/mar/verb-args/door.hook b/base/mar/verb-args/door.hook similarity index 100% rename from main/mar/verb-args/door.hook rename to base/mar/verb-args/door.hook diff --git a/main/mar/will/door.hook b/base/mar/will/door.hook similarity index 100% rename from main/mar/will/door.hook rename to base/mar/will/door.hook diff --git a/main/mar/woff/door.hook b/base/mar/woff/door.hook similarity index 100% rename from main/mar/woff/door.hook rename to base/mar/woff/door.hook diff --git a/main/mar/write-args/door.hook b/base/mar/write-args/door.hook similarity index 100% rename from main/mar/write-args/door.hook rename to base/mar/write-args/door.hook diff --git a/main/mar/zing/door.hook b/base/mar/zing/door.hook similarity index 100% rename from main/mar/zing/door.hook rename to base/mar/zing/door.hook diff --git a/main/mar/zong/door.hook b/base/mar/zong/door.hook similarity index 100% rename from main/mar/zong/door.hook rename to base/mar/zong/door.hook diff --git a/main/mar/zongs/door.hook b/base/mar/zongs/door.hook similarity index 100% rename from main/mar/zongs/door.hook rename to base/mar/zongs/door.hook diff --git a/main/mar/zung/door.hook b/base/mar/zung/door.hook similarity index 100% rename from main/mar/zung/door.hook rename to base/mar/zung/door.hook diff --git a/main/psal.hook b/base/psal.hook similarity index 100% rename from main/psal.hook rename to base/psal.hook diff --git a/main/pub/doc.md b/base/pub/doc.md similarity index 100% rename from main/pub/doc.md rename to base/pub/doc.md diff --git a/main/pub/doc/arvo.md b/base/pub/doc/arvo.md similarity index 100% rename from main/pub/doc/arvo.md rename to base/pub/doc/arvo.md diff --git a/main/pub/doc/arvo/ames.md b/base/pub/doc/arvo/ames.md similarity index 100% rename from main/pub/doc/arvo/ames.md rename to base/pub/doc/arvo/ames.md diff --git a/main/pub/doc/arvo/ames/commentary.md b/base/pub/doc/arvo/ames/commentary.md similarity index 100% rename from main/pub/doc/arvo/ames/commentary.md rename to base/pub/doc/arvo/ames/commentary.md diff --git a/main/pub/doc/arvo/arvo.md b/base/pub/doc/arvo/arvo.md similarity index 100% rename from main/pub/doc/arvo/arvo.md rename to base/pub/doc/arvo/arvo.md diff --git a/main/pub/doc/arvo/arvo/commentary.md b/base/pub/doc/arvo/arvo/commentary.md similarity index 100% rename from main/pub/doc/arvo/arvo/commentary.md rename to base/pub/doc/arvo/arvo/commentary.md diff --git a/main/pub/doc/arvo/clay.md b/base/pub/doc/arvo/clay.md similarity index 100% rename from main/pub/doc/arvo/clay.md rename to base/pub/doc/arvo/clay.md diff --git a/main/pub/doc/arvo/clay/commentary.md b/base/pub/doc/arvo/clay/commentary.md similarity index 100% rename from main/pub/doc/arvo/clay/commentary.md rename to base/pub/doc/arvo/clay/commentary.md diff --git a/main/pub/doc/arvo/dill.md b/base/pub/doc/arvo/dill.md similarity index 100% rename from main/pub/doc/arvo/dill.md rename to base/pub/doc/arvo/dill.md diff --git a/main/pub/doc/arvo/dill/commentary.md b/base/pub/doc/arvo/dill/commentary.md similarity index 100% rename from main/pub/doc/arvo/dill/commentary.md rename to base/pub/doc/arvo/dill/commentary.md diff --git a/main/pub/doc/arvo/eyre.md b/base/pub/doc/arvo/eyre.md similarity index 100% rename from main/pub/doc/arvo/eyre.md rename to base/pub/doc/arvo/eyre.md diff --git a/main/pub/doc/arvo/eyre/commentary.md b/base/pub/doc/arvo/eyre/commentary.md similarity index 100% rename from main/pub/doc/arvo/eyre/commentary.md rename to base/pub/doc/arvo/eyre/commentary.md diff --git a/main/pub/doc/arvo/ford.md b/base/pub/doc/arvo/ford.md similarity index 100% rename from main/pub/doc/arvo/ford.md rename to base/pub/doc/arvo/ford.md diff --git a/main/pub/doc/arvo/ford/commentary.md b/base/pub/doc/arvo/ford/commentary.md similarity index 100% rename from main/pub/doc/arvo/ford/commentary.md rename to base/pub/doc/arvo/ford/commentary.md diff --git a/main/pub/doc/arvo/gall.md b/base/pub/doc/arvo/gall.md similarity index 100% rename from main/pub/doc/arvo/gall.md rename to base/pub/doc/arvo/gall.md diff --git a/main/pub/doc/arvo/gall/gall.md b/base/pub/doc/arvo/gall/gall.md similarity index 100% rename from main/pub/doc/arvo/gall/gall.md rename to base/pub/doc/arvo/gall/gall.md diff --git a/main/pub/doc/arvo/ives.md b/base/pub/doc/arvo/ives.md similarity index 100% rename from main/pub/doc/arvo/ives.md rename to base/pub/doc/arvo/ives.md diff --git a/main/pub/doc/arvo/ives/ives.md b/base/pub/doc/arvo/ives/ives.md similarity index 100% rename from main/pub/doc/arvo/ives/ives.md rename to base/pub/doc/arvo/ives/ives.md diff --git a/main/pub/doc/arvo/jael.md b/base/pub/doc/arvo/jael.md similarity index 100% rename from main/pub/doc/arvo/jael.md rename to base/pub/doc/arvo/jael.md diff --git a/main/pub/doc/arvo/jael/jael.md b/base/pub/doc/arvo/jael/jael.md similarity index 100% rename from main/pub/doc/arvo/jael/jael.md rename to base/pub/doc/arvo/jael/jael.md diff --git a/main/pub/doc/arvo/kahn.md b/base/pub/doc/arvo/kahn.md similarity index 100% rename from main/pub/doc/arvo/kahn.md rename to base/pub/doc/arvo/kahn.md diff --git a/main/pub/doc/arvo/kahn/kahn.md b/base/pub/doc/arvo/kahn/kahn.md similarity index 100% rename from main/pub/doc/arvo/kahn/kahn.md rename to base/pub/doc/arvo/kahn/kahn.md diff --git a/main/pub/doc/arvo/lunt.md b/base/pub/doc/arvo/lunt.md similarity index 100% rename from main/pub/doc/arvo/lunt.md rename to base/pub/doc/arvo/lunt.md diff --git a/main/pub/doc/arvo/lunt/lunt.md b/base/pub/doc/arvo/lunt/lunt.md similarity index 100% rename from main/pub/doc/arvo/lunt/lunt.md rename to base/pub/doc/arvo/lunt/lunt.md diff --git a/main/pub/doc/arvo/time.md b/base/pub/doc/arvo/time.md similarity index 100% rename from main/pub/doc/arvo/time.md rename to base/pub/doc/arvo/time.md diff --git a/main/pub/doc/arvo/util.md b/base/pub/doc/arvo/util.md similarity index 100% rename from main/pub/doc/arvo/util.md rename to base/pub/doc/arvo/util.md diff --git a/main/pub/doc/guide.md b/base/pub/doc/guide.md similarity index 100% rename from main/pub/doc/guide.md rename to base/pub/doc/guide.md diff --git a/main/pub/doc/guide/a-ford.md b/base/pub/doc/guide/a-ford.md similarity index 100% rename from main/pub/doc/guide/a-ford.md rename to base/pub/doc/guide/a-ford.md diff --git a/main/pub/doc/guide/b-cli.md b/base/pub/doc/guide/b-cli.md similarity index 100% rename from main/pub/doc/guide/b-cli.md rename to base/pub/doc/guide/b-cli.md diff --git a/main/pub/doc/guide/c-gall.md b/base/pub/doc/guide/c-gall.md similarity index 100% rename from main/pub/doc/guide/c-gall.md rename to base/pub/doc/guide/c-gall.md diff --git a/main/pub/doc/guide/d-app.md b/base/pub/doc/guide/d-app.md similarity index 100% rename from main/pub/doc/guide/d-app.md rename to base/pub/doc/guide/d-app.md diff --git a/main/pub/doc/guide/e-dev.md b/base/pub/doc/guide/e-dev.md similarity index 100% rename from main/pub/doc/guide/e-dev.md rename to base/pub/doc/guide/e-dev.md diff --git a/main/pub/doc/hoon.md b/base/pub/doc/hoon.md similarity index 100% rename from main/pub/doc/hoon.md rename to base/pub/doc/hoon.md diff --git a/main/pub/doc/hoon/library.md b/base/pub/doc/hoon/library.md similarity index 100% rename from main/pub/doc/hoon/library.md rename to base/pub/doc/hoon/library.md diff --git a/main/pub/doc/hoon/library/0.md b/base/pub/doc/hoon/library/0.md similarity index 100% rename from main/pub/doc/hoon/library/0.md rename to base/pub/doc/hoon/library/0.md diff --git a/main/pub/doc/hoon/library/1.md b/base/pub/doc/hoon/library/1.md similarity index 100% rename from main/pub/doc/hoon/library/1.md rename to base/pub/doc/hoon/library/1.md diff --git a/main/pub/doc/hoon/library/2a.md b/base/pub/doc/hoon/library/2a.md similarity index 100% rename from main/pub/doc/hoon/library/2a.md rename to base/pub/doc/hoon/library/2a.md diff --git a/main/pub/doc/hoon/library/2b.md b/base/pub/doc/hoon/library/2b.md similarity index 100% rename from main/pub/doc/hoon/library/2b.md rename to base/pub/doc/hoon/library/2b.md diff --git a/main/pub/doc/hoon/library/2c.md b/base/pub/doc/hoon/library/2c.md similarity index 100% rename from main/pub/doc/hoon/library/2c.md rename to base/pub/doc/hoon/library/2c.md diff --git a/main/pub/doc/hoon/library/2da.md b/base/pub/doc/hoon/library/2da.md similarity index 100% rename from main/pub/doc/hoon/library/2da.md rename to base/pub/doc/hoon/library/2da.md diff --git a/main/pub/doc/hoon/library/2db.md b/base/pub/doc/hoon/library/2db.md similarity index 100% rename from main/pub/doc/hoon/library/2db.md rename to base/pub/doc/hoon/library/2db.md diff --git a/main/pub/doc/hoon/library/2dc.md b/base/pub/doc/hoon/library/2dc.md similarity index 100% rename from main/pub/doc/hoon/library/2dc.md rename to base/pub/doc/hoon/library/2dc.md diff --git a/main/pub/doc/hoon/library/2dd.md b/base/pub/doc/hoon/library/2dd.md similarity index 100% rename from main/pub/doc/hoon/library/2dd.md rename to base/pub/doc/hoon/library/2dd.md diff --git a/main/pub/doc/hoon/library/2ea.md b/base/pub/doc/hoon/library/2ea.md similarity index 100% rename from main/pub/doc/hoon/library/2ea.md rename to base/pub/doc/hoon/library/2ea.md diff --git a/main/pub/doc/hoon/library/2eb.md b/base/pub/doc/hoon/library/2eb.md similarity index 100% rename from main/pub/doc/hoon/library/2eb.md rename to base/pub/doc/hoon/library/2eb.md diff --git a/main/pub/doc/hoon/library/2ec.md b/base/pub/doc/hoon/library/2ec.md similarity index 100% rename from main/pub/doc/hoon/library/2ec.md rename to base/pub/doc/hoon/library/2ec.md diff --git a/main/pub/doc/hoon/library/2ed.md b/base/pub/doc/hoon/library/2ed.md similarity index 100% rename from main/pub/doc/hoon/library/2ed.md rename to base/pub/doc/hoon/library/2ed.md diff --git a/main/pub/doc/hoon/library/2ee.md b/base/pub/doc/hoon/library/2ee.md similarity index 100% rename from main/pub/doc/hoon/library/2ee.md rename to base/pub/doc/hoon/library/2ee.md diff --git a/main/pub/doc/hoon/library/2ef.md b/base/pub/doc/hoon/library/2ef.md similarity index 100% rename from main/pub/doc/hoon/library/2ef.md rename to base/pub/doc/hoon/library/2ef.md diff --git a/main/pub/doc/hoon/library/2eg.md b/base/pub/doc/hoon/library/2eg.md similarity index 100% rename from main/pub/doc/hoon/library/2eg.md rename to base/pub/doc/hoon/library/2eg.md diff --git a/main/pub/doc/hoon/library/2eh.md b/base/pub/doc/hoon/library/2eh.md similarity index 100% rename from main/pub/doc/hoon/library/2eh.md rename to base/pub/doc/hoon/library/2eh.md diff --git a/main/pub/doc/hoon/library/2ei.md b/base/pub/doc/hoon/library/2ei.md similarity index 100% rename from main/pub/doc/hoon/library/2ei.md rename to base/pub/doc/hoon/library/2ei.md diff --git a/main/pub/doc/hoon/library/2ej.md b/base/pub/doc/hoon/library/2ej.md similarity index 100% rename from main/pub/doc/hoon/library/2ej.md rename to base/pub/doc/hoon/library/2ej.md diff --git a/main/pub/doc/hoon/library/2ek.md b/base/pub/doc/hoon/library/2ek.md similarity index 100% rename from main/pub/doc/hoon/library/2ek.md rename to base/pub/doc/hoon/library/2ek.md diff --git a/main/pub/doc/hoon/library/2el.md b/base/pub/doc/hoon/library/2el.md similarity index 100% rename from main/pub/doc/hoon/library/2el.md rename to base/pub/doc/hoon/library/2el.md diff --git a/main/pub/doc/hoon/library/2em.md b/base/pub/doc/hoon/library/2em.md similarity index 100% rename from main/pub/doc/hoon/library/2em.md rename to base/pub/doc/hoon/library/2em.md diff --git a/main/pub/doc/hoon/library/2en.md b/base/pub/doc/hoon/library/2en.md similarity index 100% rename from main/pub/doc/hoon/library/2en.md rename to base/pub/doc/hoon/library/2en.md diff --git a/main/pub/doc/hoon/library/2eo.md b/base/pub/doc/hoon/library/2eo.md similarity index 100% rename from main/pub/doc/hoon/library/2eo.md rename to base/pub/doc/hoon/library/2eo.md diff --git a/main/pub/doc/hoon/library/2ep.md b/base/pub/doc/hoon/library/2ep.md similarity index 100% rename from main/pub/doc/hoon/library/2ep.md rename to base/pub/doc/hoon/library/2ep.md diff --git a/main/pub/doc/hoon/library/2ew.md b/base/pub/doc/hoon/library/2ew.md similarity index 100% rename from main/pub/doc/hoon/library/2ew.md rename to base/pub/doc/hoon/library/2ew.md diff --git a/main/pub/doc/hoon/library/2ex.md b/base/pub/doc/hoon/library/2ex.md similarity index 100% rename from main/pub/doc/hoon/library/2ex.md rename to base/pub/doc/hoon/library/2ex.md diff --git a/main/pub/doc/hoon/library/2ey.md b/base/pub/doc/hoon/library/2ey.md similarity index 100% rename from main/pub/doc/hoon/library/2ey.md rename to base/pub/doc/hoon/library/2ey.md diff --git a/main/pub/doc/hoon/library/2ez.md b/base/pub/doc/hoon/library/2ez.md similarity index 100% rename from main/pub/doc/hoon/library/2ez.md rename to base/pub/doc/hoon/library/2ez.md diff --git a/main/pub/doc/hoon/library/3ba.md b/base/pub/doc/hoon/library/3ba.md similarity index 100% rename from main/pub/doc/hoon/library/3ba.md rename to base/pub/doc/hoon/library/3ba.md diff --git a/main/pub/doc/hoon/library/3bb.md b/base/pub/doc/hoon/library/3bb.md similarity index 100% rename from main/pub/doc/hoon/library/3bb.md rename to base/pub/doc/hoon/library/3bb.md diff --git a/main/pub/doc/hoon/library/3bc.md b/base/pub/doc/hoon/library/3bc.md similarity index 100% rename from main/pub/doc/hoon/library/3bc.md rename to base/pub/doc/hoon/library/3bc.md diff --git a/main/pub/doc/hoon/library/3bd.md b/base/pub/doc/hoon/library/3bd.md similarity index 100% rename from main/pub/doc/hoon/library/3bd.md rename to base/pub/doc/hoon/library/3bd.md diff --git a/main/pub/doc/hoon/library/3be.md b/base/pub/doc/hoon/library/3be.md similarity index 100% rename from main/pub/doc/hoon/library/3be.md rename to base/pub/doc/hoon/library/3be.md diff --git a/main/pub/doc/hoon/library/3bf.md b/base/pub/doc/hoon/library/3bf.md similarity index 100% rename from main/pub/doc/hoon/library/3bf.md rename to base/pub/doc/hoon/library/3bf.md diff --git a/main/pub/doc/hoon/library/3bg.md b/base/pub/doc/hoon/library/3bg.md similarity index 100% rename from main/pub/doc/hoon/library/3bg.md rename to base/pub/doc/hoon/library/3bg.md diff --git a/main/pub/doc/hoon/library/3bh.md b/base/pub/doc/hoon/library/3bh.md similarity index 100% rename from main/pub/doc/hoon/library/3bh.md rename to base/pub/doc/hoon/library/3bh.md diff --git a/main/pub/doc/hoon/library/3bi.md b/base/pub/doc/hoon/library/3bi.md similarity index 100% rename from main/pub/doc/hoon/library/3bi.md rename to base/pub/doc/hoon/library/3bi.md diff --git a/main/pub/doc/hoon/reference.md b/base/pub/doc/hoon/reference.md similarity index 100% rename from main/pub/doc/hoon/reference.md rename to base/pub/doc/hoon/reference.md diff --git a/main/pub/doc/hoon/reference/odors.md b/base/pub/doc/hoon/reference/odors.md similarity index 100% rename from main/pub/doc/hoon/reference/odors.md rename to base/pub/doc/hoon/reference/odors.md diff --git a/main/pub/doc/hoon/runes.md b/base/pub/doc/hoon/runes.md similarity index 100% rename from main/pub/doc/hoon/runes.md rename to base/pub/doc/hoon/runes.md diff --git a/main/pub/doc/hoon/runes/bc.md b/base/pub/doc/hoon/runes/bc.md similarity index 100% rename from main/pub/doc/hoon/runes/bc.md rename to base/pub/doc/hoon/runes/bc.md diff --git a/main/pub/doc/hoon/runes/bc/bcbr.md b/base/pub/doc/hoon/runes/bc/bcbr.md similarity index 100% rename from main/pub/doc/hoon/runes/bc/bcbr.md rename to base/pub/doc/hoon/runes/bc/bcbr.md diff --git a/main/pub/doc/hoon/runes/bc/bccb.md b/base/pub/doc/hoon/runes/bc/bccb.md similarity index 100% rename from main/pub/doc/hoon/runes/bc/bccb.md rename to base/pub/doc/hoon/runes/bc/bccb.md diff --git a/main/pub/doc/hoon/runes/bc/bccl.md b/base/pub/doc/hoon/runes/bc/bccl.md similarity index 100% rename from main/pub/doc/hoon/runes/bc/bccl.md rename to base/pub/doc/hoon/runes/bc/bccl.md diff --git a/main/pub/doc/hoon/runes/bc/bccm.md b/base/pub/doc/hoon/runes/bc/bccm.md similarity index 100% rename from main/pub/doc/hoon/runes/bc/bccm.md rename to base/pub/doc/hoon/runes/bc/bccm.md diff --git a/main/pub/doc/hoon/runes/bc/bccn.md b/base/pub/doc/hoon/runes/bc/bccn.md similarity index 100% rename from main/pub/doc/hoon/runes/bc/bccn.md rename to base/pub/doc/hoon/runes/bc/bccn.md diff --git a/main/pub/doc/hoon/runes/bc/bckt.md b/base/pub/doc/hoon/runes/bc/bckt.md similarity index 100% rename from main/pub/doc/hoon/runes/bc/bckt.md rename to base/pub/doc/hoon/runes/bc/bckt.md diff --git a/main/pub/doc/hoon/runes/bc/bcls.md b/base/pub/doc/hoon/runes/bc/bcls.md similarity index 100% rename from main/pub/doc/hoon/runes/bc/bcls.md rename to base/pub/doc/hoon/runes/bc/bcls.md diff --git a/main/pub/doc/hoon/runes/bc/bcpm.md b/base/pub/doc/hoon/runes/bc/bcpm.md similarity index 100% rename from main/pub/doc/hoon/runes/bc/bcpm.md rename to base/pub/doc/hoon/runes/bc/bcpm.md diff --git a/main/pub/doc/hoon/runes/bc/bcpt.md b/base/pub/doc/hoon/runes/bc/bcpt.md similarity index 100% rename from main/pub/doc/hoon/runes/bc/bcpt.md rename to base/pub/doc/hoon/runes/bc/bcpt.md diff --git a/main/pub/doc/hoon/runes/bc/bctr.md b/base/pub/doc/hoon/runes/bc/bctr.md similarity index 100% rename from main/pub/doc/hoon/runes/bc/bctr.md rename to base/pub/doc/hoon/runes/bc/bctr.md diff --git a/main/pub/doc/hoon/runes/bc/bcts.md b/base/pub/doc/hoon/runes/bc/bcts.md similarity index 100% rename from main/pub/doc/hoon/runes/bc/bcts.md rename to base/pub/doc/hoon/runes/bc/bcts.md diff --git a/main/pub/doc/hoon/runes/bc/bcwt.md b/base/pub/doc/hoon/runes/bc/bcwt.md similarity index 100% rename from main/pub/doc/hoon/runes/bc/bcwt.md rename to base/pub/doc/hoon/runes/bc/bcwt.md diff --git a/main/pub/doc/hoon/runes/bc/bczp.md b/base/pub/doc/hoon/runes/bc/bczp.md similarity index 100% rename from main/pub/doc/hoon/runes/bc/bczp.md rename to base/pub/doc/hoon/runes/bc/bczp.md diff --git a/main/pub/doc/hoon/runes/br.md b/base/pub/doc/hoon/runes/br.md similarity index 100% rename from main/pub/doc/hoon/runes/br.md rename to base/pub/doc/hoon/runes/br.md diff --git a/main/pub/doc/hoon/runes/br/brcb.md b/base/pub/doc/hoon/runes/br/brcb.md similarity index 100% rename from main/pub/doc/hoon/runes/br/brcb.md rename to base/pub/doc/hoon/runes/br/brcb.md diff --git a/main/pub/doc/hoon/runes/br/brcn.md b/base/pub/doc/hoon/runes/br/brcn.md similarity index 100% rename from main/pub/doc/hoon/runes/br/brcn.md rename to base/pub/doc/hoon/runes/br/brcn.md diff --git a/main/pub/doc/hoon/runes/br/brdt.md b/base/pub/doc/hoon/runes/br/brdt.md similarity index 100% rename from main/pub/doc/hoon/runes/br/brdt.md rename to base/pub/doc/hoon/runes/br/brdt.md diff --git a/main/pub/doc/hoon/runes/br/brfs.md b/base/pub/doc/hoon/runes/br/brfs.md similarity index 100% rename from main/pub/doc/hoon/runes/br/brfs.md rename to base/pub/doc/hoon/runes/br/brfs.md diff --git a/main/pub/doc/hoon/runes/br/brhp.md b/base/pub/doc/hoon/runes/br/brhp.md similarity index 100% rename from main/pub/doc/hoon/runes/br/brhp.md rename to base/pub/doc/hoon/runes/br/brhp.md diff --git a/main/pub/doc/hoon/runes/br/brkt.md b/base/pub/doc/hoon/runes/br/brkt.md similarity index 100% rename from main/pub/doc/hoon/runes/br/brkt.md rename to base/pub/doc/hoon/runes/br/brkt.md diff --git a/main/pub/doc/hoon/runes/br/brls.md b/base/pub/doc/hoon/runes/br/brls.md similarity index 100% rename from main/pub/doc/hoon/runes/br/brls.md rename to base/pub/doc/hoon/runes/br/brls.md diff --git a/main/pub/doc/hoon/runes/br/brtr.md b/base/pub/doc/hoon/runes/br/brtr.md similarity index 100% rename from main/pub/doc/hoon/runes/br/brtr.md rename to base/pub/doc/hoon/runes/br/brtr.md diff --git a/main/pub/doc/hoon/runes/br/brts.md b/base/pub/doc/hoon/runes/br/brts.md similarity index 100% rename from main/pub/doc/hoon/runes/br/brts.md rename to base/pub/doc/hoon/runes/br/brts.md diff --git a/main/pub/doc/hoon/runes/br/brwt.md b/base/pub/doc/hoon/runes/br/brwt.md similarity index 100% rename from main/pub/doc/hoon/runes/br/brwt.md rename to base/pub/doc/hoon/runes/br/brwt.md diff --git a/main/pub/doc/hoon/runes/cl.md b/base/pub/doc/hoon/runes/cl.md similarity index 100% rename from main/pub/doc/hoon/runes/cl.md rename to base/pub/doc/hoon/runes/cl.md diff --git a/main/pub/doc/hoon/runes/cl/clcb.md b/base/pub/doc/hoon/runes/cl/clcb.md similarity index 100% rename from main/pub/doc/hoon/runes/cl/clcb.md rename to base/pub/doc/hoon/runes/cl/clcb.md diff --git a/main/pub/doc/hoon/runes/cl/clfs.md b/base/pub/doc/hoon/runes/cl/clfs.md similarity index 100% rename from main/pub/doc/hoon/runes/cl/clfs.md rename to base/pub/doc/hoon/runes/cl/clfs.md diff --git a/main/pub/doc/hoon/runes/cl/clhp.md b/base/pub/doc/hoon/runes/cl/clhp.md similarity index 100% rename from main/pub/doc/hoon/runes/cl/clhp.md rename to base/pub/doc/hoon/runes/cl/clhp.md diff --git a/main/pub/doc/hoon/runes/cl/clkt.md b/base/pub/doc/hoon/runes/cl/clkt.md similarity index 100% rename from main/pub/doc/hoon/runes/cl/clkt.md rename to base/pub/doc/hoon/runes/cl/clkt.md diff --git a/main/pub/doc/hoon/runes/cl/clls.md b/base/pub/doc/hoon/runes/cl/clls.md similarity index 100% rename from main/pub/doc/hoon/runes/cl/clls.md rename to base/pub/doc/hoon/runes/cl/clls.md diff --git a/main/pub/doc/hoon/runes/cl/clsg.md b/base/pub/doc/hoon/runes/cl/clsg.md similarity index 100% rename from main/pub/doc/hoon/runes/cl/clsg.md rename to base/pub/doc/hoon/runes/cl/clsg.md diff --git a/main/pub/doc/hoon/runes/cl/cltr.md b/base/pub/doc/hoon/runes/cl/cltr.md similarity index 100% rename from main/pub/doc/hoon/runes/cl/cltr.md rename to base/pub/doc/hoon/runes/cl/cltr.md diff --git a/main/pub/doc/hoon/runes/cn.md b/base/pub/doc/hoon/runes/cn.md similarity index 100% rename from main/pub/doc/hoon/runes/cn.md rename to base/pub/doc/hoon/runes/cn.md diff --git a/main/pub/doc/hoon/runes/cn/cncb.md b/base/pub/doc/hoon/runes/cn/cncb.md similarity index 100% rename from main/pub/doc/hoon/runes/cn/cncb.md rename to base/pub/doc/hoon/runes/cn/cncb.md diff --git a/main/pub/doc/hoon/runes/cn/cncl.md b/base/pub/doc/hoon/runes/cn/cncl.md similarity index 100% rename from main/pub/doc/hoon/runes/cn/cncl.md rename to base/pub/doc/hoon/runes/cn/cncl.md diff --git a/main/pub/doc/hoon/runes/cn/cndt.md b/base/pub/doc/hoon/runes/cn/cndt.md similarity index 100% rename from main/pub/doc/hoon/runes/cn/cndt.md rename to base/pub/doc/hoon/runes/cn/cndt.md diff --git a/main/pub/doc/hoon/runes/cn/cnhp.md b/base/pub/doc/hoon/runes/cn/cnhp.md similarity index 100% rename from main/pub/doc/hoon/runes/cn/cnhp.md rename to base/pub/doc/hoon/runes/cn/cnhp.md diff --git a/main/pub/doc/hoon/runes/cn/cnkt.md b/base/pub/doc/hoon/runes/cn/cnkt.md similarity index 100% rename from main/pub/doc/hoon/runes/cn/cnkt.md rename to base/pub/doc/hoon/runes/cn/cnkt.md diff --git a/main/pub/doc/hoon/runes/cn/cnls.md b/base/pub/doc/hoon/runes/cn/cnls.md similarity index 100% rename from main/pub/doc/hoon/runes/cn/cnls.md rename to base/pub/doc/hoon/runes/cn/cnls.md diff --git a/main/pub/doc/hoon/runes/cn/cnsg.md b/base/pub/doc/hoon/runes/cn/cnsg.md similarity index 100% rename from main/pub/doc/hoon/runes/cn/cnsg.md rename to base/pub/doc/hoon/runes/cn/cnsg.md diff --git a/main/pub/doc/hoon/runes/cn/cntr.md b/base/pub/doc/hoon/runes/cn/cntr.md similarity index 100% rename from main/pub/doc/hoon/runes/cn/cntr.md rename to base/pub/doc/hoon/runes/cn/cntr.md diff --git a/main/pub/doc/hoon/runes/cn/cnts.md b/base/pub/doc/hoon/runes/cn/cnts.md similarity index 100% rename from main/pub/doc/hoon/runes/cn/cnts.md rename to base/pub/doc/hoon/runes/cn/cnts.md diff --git a/main/pub/doc/hoon/runes/cn/cnzy.md b/base/pub/doc/hoon/runes/cn/cnzy.md similarity index 100% rename from main/pub/doc/hoon/runes/cn/cnzy.md rename to base/pub/doc/hoon/runes/cn/cnzy.md diff --git a/main/pub/doc/hoon/runes/cn/cnzz.md b/base/pub/doc/hoon/runes/cn/cnzz.md similarity index 100% rename from main/pub/doc/hoon/runes/cn/cnzz.md rename to base/pub/doc/hoon/runes/cn/cnzz.md diff --git a/main/pub/doc/hoon/runes/dt.md b/base/pub/doc/hoon/runes/dt.md similarity index 100% rename from main/pub/doc/hoon/runes/dt.md rename to base/pub/doc/hoon/runes/dt.md diff --git a/main/pub/doc/hoon/runes/dt/dtkt.md b/base/pub/doc/hoon/runes/dt/dtkt.md similarity index 100% rename from main/pub/doc/hoon/runes/dt/dtkt.md rename to base/pub/doc/hoon/runes/dt/dtkt.md diff --git a/main/pub/doc/hoon/runes/dt/dtls.md b/base/pub/doc/hoon/runes/dt/dtls.md similarity index 100% rename from main/pub/doc/hoon/runes/dt/dtls.md rename to base/pub/doc/hoon/runes/dt/dtls.md diff --git a/main/pub/doc/hoon/runes/dt/dttr.md b/base/pub/doc/hoon/runes/dt/dttr.md similarity index 100% rename from main/pub/doc/hoon/runes/dt/dttr.md rename to base/pub/doc/hoon/runes/dt/dttr.md diff --git a/main/pub/doc/hoon/runes/dt/dtts.md b/base/pub/doc/hoon/runes/dt/dtts.md similarity index 100% rename from main/pub/doc/hoon/runes/dt/dtts.md rename to base/pub/doc/hoon/runes/dt/dtts.md diff --git a/main/pub/doc/hoon/runes/dt/dtwt.md b/base/pub/doc/hoon/runes/dt/dtwt.md similarity index 100% rename from main/pub/doc/hoon/runes/dt/dtwt.md rename to base/pub/doc/hoon/runes/dt/dtwt.md diff --git a/main/pub/doc/hoon/runes/dt/dtzy.md b/base/pub/doc/hoon/runes/dt/dtzy.md similarity index 100% rename from main/pub/doc/hoon/runes/dt/dtzy.md rename to base/pub/doc/hoon/runes/dt/dtzy.md diff --git a/main/pub/doc/hoon/runes/dt/dtzz.md b/base/pub/doc/hoon/runes/dt/dtzz.md similarity index 100% rename from main/pub/doc/hoon/runes/dt/dtzz.md rename to base/pub/doc/hoon/runes/dt/dtzz.md diff --git a/main/pub/doc/hoon/runes/hx.md b/base/pub/doc/hoon/runes/hx.md similarity index 100% rename from main/pub/doc/hoon/runes/hx.md rename to base/pub/doc/hoon/runes/hx.md diff --git a/main/pub/doc/hoon/runes/hx/hxgl.md b/base/pub/doc/hoon/runes/hx/hxgl.md similarity index 100% rename from main/pub/doc/hoon/runes/hx/hxgl.md rename to base/pub/doc/hoon/runes/hx/hxgl.md diff --git a/main/pub/doc/hoon/runes/hx/hxgr.md b/base/pub/doc/hoon/runes/hx/hxgr.md similarity index 100% rename from main/pub/doc/hoon/runes/hx/hxgr.md rename to base/pub/doc/hoon/runes/hx/hxgr.md diff --git a/main/pub/doc/hoon/runes/kt.md b/base/pub/doc/hoon/runes/kt.md similarity index 100% rename from main/pub/doc/hoon/runes/kt.md rename to base/pub/doc/hoon/runes/kt.md diff --git a/main/pub/doc/hoon/runes/kt/ktbr.md b/base/pub/doc/hoon/runes/kt/ktbr.md similarity index 100% rename from main/pub/doc/hoon/runes/kt/ktbr.md rename to base/pub/doc/hoon/runes/kt/ktbr.md diff --git a/main/pub/doc/hoon/runes/kt/ktdt.md b/base/pub/doc/hoon/runes/kt/ktdt.md similarity index 100% rename from main/pub/doc/hoon/runes/kt/ktdt.md rename to base/pub/doc/hoon/runes/kt/ktdt.md diff --git a/main/pub/doc/hoon/runes/kt/kthp.md b/base/pub/doc/hoon/runes/kt/kthp.md similarity index 100% rename from main/pub/doc/hoon/runes/kt/kthp.md rename to base/pub/doc/hoon/runes/kt/kthp.md diff --git a/main/pub/doc/hoon/runes/kt/ktls.md b/base/pub/doc/hoon/runes/kt/ktls.md similarity index 100% rename from main/pub/doc/hoon/runes/kt/ktls.md rename to base/pub/doc/hoon/runes/kt/ktls.md diff --git a/main/pub/doc/hoon/runes/kt/ktpm.md b/base/pub/doc/hoon/runes/kt/ktpm.md similarity index 100% rename from main/pub/doc/hoon/runes/kt/ktpm.md rename to base/pub/doc/hoon/runes/kt/ktpm.md diff --git a/main/pub/doc/hoon/runes/kt/ktsg.md b/base/pub/doc/hoon/runes/kt/ktsg.md similarity index 100% rename from main/pub/doc/hoon/runes/kt/ktsg.md rename to base/pub/doc/hoon/runes/kt/ktsg.md diff --git a/main/pub/doc/hoon/runes/kt/ktts.md b/base/pub/doc/hoon/runes/kt/ktts.md similarity index 100% rename from main/pub/doc/hoon/runes/kt/ktts.md rename to base/pub/doc/hoon/runes/kt/ktts.md diff --git a/main/pub/doc/hoon/runes/kt/ktwt.md b/base/pub/doc/hoon/runes/kt/ktwt.md similarity index 100% rename from main/pub/doc/hoon/runes/kt/ktwt.md rename to base/pub/doc/hoon/runes/kt/ktwt.md diff --git a/main/pub/doc/hoon/runes/sg.md b/base/pub/doc/hoon/runes/sg.md similarity index 100% rename from main/pub/doc/hoon/runes/sg.md rename to base/pub/doc/hoon/runes/sg.md diff --git a/main/pub/doc/hoon/runes/sg/sgbc.md b/base/pub/doc/hoon/runes/sg/sgbc.md similarity index 100% rename from main/pub/doc/hoon/runes/sg/sgbc.md rename to base/pub/doc/hoon/runes/sg/sgbc.md diff --git a/main/pub/doc/hoon/runes/sg/sgbr.md b/base/pub/doc/hoon/runes/sg/sgbr.md similarity index 100% rename from main/pub/doc/hoon/runes/sg/sgbr.md rename to base/pub/doc/hoon/runes/sg/sgbr.md diff --git a/main/pub/doc/hoon/runes/sg/sgcb.md b/base/pub/doc/hoon/runes/sg/sgcb.md similarity index 100% rename from main/pub/doc/hoon/runes/sg/sgcb.md rename to base/pub/doc/hoon/runes/sg/sgcb.md diff --git a/main/pub/doc/hoon/runes/sg/sgcn.md b/base/pub/doc/hoon/runes/sg/sgcn.md similarity index 100% rename from main/pub/doc/hoon/runes/sg/sgcn.md rename to base/pub/doc/hoon/runes/sg/sgcn.md diff --git a/main/pub/doc/hoon/runes/sg/sgfs.md b/base/pub/doc/hoon/runes/sg/sgfs.md similarity index 100% rename from main/pub/doc/hoon/runes/sg/sgfs.md rename to base/pub/doc/hoon/runes/sg/sgfs.md diff --git a/main/pub/doc/hoon/runes/sg/sggl.md b/base/pub/doc/hoon/runes/sg/sggl.md similarity index 100% rename from main/pub/doc/hoon/runes/sg/sggl.md rename to base/pub/doc/hoon/runes/sg/sggl.md diff --git a/main/pub/doc/hoon/runes/sg/sggr.md b/base/pub/doc/hoon/runes/sg/sggr.md similarity index 100% rename from main/pub/doc/hoon/runes/sg/sggr.md rename to base/pub/doc/hoon/runes/sg/sggr.md diff --git a/main/pub/doc/hoon/runes/sg/sgls.md b/base/pub/doc/hoon/runes/sg/sgls.md similarity index 100% rename from main/pub/doc/hoon/runes/sg/sgls.md rename to base/pub/doc/hoon/runes/sg/sgls.md diff --git a/main/pub/doc/hoon/runes/sg/sgpm.md b/base/pub/doc/hoon/runes/sg/sgpm.md similarity index 100% rename from main/pub/doc/hoon/runes/sg/sgpm.md rename to base/pub/doc/hoon/runes/sg/sgpm.md diff --git a/main/pub/doc/hoon/runes/sg/sgts.md b/base/pub/doc/hoon/runes/sg/sgts.md similarity index 100% rename from main/pub/doc/hoon/runes/sg/sgts.md rename to base/pub/doc/hoon/runes/sg/sgts.md diff --git a/main/pub/doc/hoon/runes/sg/sgwt.md b/base/pub/doc/hoon/runes/sg/sgwt.md similarity index 100% rename from main/pub/doc/hoon/runes/sg/sgwt.md rename to base/pub/doc/hoon/runes/sg/sgwt.md diff --git a/main/pub/doc/hoon/runes/sg/sgzp.md b/base/pub/doc/hoon/runes/sg/sgzp.md similarity index 100% rename from main/pub/doc/hoon/runes/sg/sgzp.md rename to base/pub/doc/hoon/runes/sg/sgzp.md diff --git a/main/pub/doc/hoon/runes/sm.md b/base/pub/doc/hoon/runes/sm.md similarity index 100% rename from main/pub/doc/hoon/runes/sm.md rename to base/pub/doc/hoon/runes/sm.md diff --git a/main/pub/doc/hoon/runes/sm/smcl.md b/base/pub/doc/hoon/runes/sm/smcl.md similarity index 100% rename from main/pub/doc/hoon/runes/sm/smcl.md rename to base/pub/doc/hoon/runes/sm/smcl.md diff --git a/main/pub/doc/hoon/runes/sm/smcn.md b/base/pub/doc/hoon/runes/sm/smcn.md similarity index 100% rename from main/pub/doc/hoon/runes/sm/smcn.md rename to base/pub/doc/hoon/runes/sm/smcn.md diff --git a/main/pub/doc/hoon/runes/sm/smdq.md b/base/pub/doc/hoon/runes/sm/smdq.md similarity index 100% rename from main/pub/doc/hoon/runes/sm/smdq.md rename to base/pub/doc/hoon/runes/sm/smdq.md diff --git a/main/pub/doc/hoon/runes/sm/smhp.md b/base/pub/doc/hoon/runes/sm/smhp.md similarity index 100% rename from main/pub/doc/hoon/runes/sm/smhp.md rename to base/pub/doc/hoon/runes/sm/smhp.md diff --git a/main/pub/doc/hoon/runes/sm/smls.md b/base/pub/doc/hoon/runes/sm/smls.md similarity index 100% rename from main/pub/doc/hoon/runes/sm/smls.md rename to base/pub/doc/hoon/runes/sm/smls.md diff --git a/main/pub/doc/hoon/runes/sm/smsg.md b/base/pub/doc/hoon/runes/sm/smsg.md similarity index 100% rename from main/pub/doc/hoon/runes/sm/smsg.md rename to base/pub/doc/hoon/runes/sm/smsg.md diff --git a/main/pub/doc/hoon/runes/sm/smsm.md b/base/pub/doc/hoon/runes/sm/smsm.md similarity index 100% rename from main/pub/doc/hoon/runes/sm/smsm.md rename to base/pub/doc/hoon/runes/sm/smsm.md diff --git a/main/pub/doc/hoon/runes/sm/smtr.md b/base/pub/doc/hoon/runes/sm/smtr.md similarity index 100% rename from main/pub/doc/hoon/runes/sm/smtr.md rename to base/pub/doc/hoon/runes/sm/smtr.md diff --git a/main/pub/doc/hoon/runes/sm/smzz.md b/base/pub/doc/hoon/runes/sm/smzz.md similarity index 100% rename from main/pub/doc/hoon/runes/sm/smzz.md rename to base/pub/doc/hoon/runes/sm/smzz.md diff --git a/main/pub/doc/hoon/runes/ts.md b/base/pub/doc/hoon/runes/ts.md similarity index 100% rename from main/pub/doc/hoon/runes/ts.md rename to base/pub/doc/hoon/runes/ts.md diff --git a/main/pub/doc/hoon/runes/ts/tsbr.md b/base/pub/doc/hoon/runes/ts/tsbr.md similarity index 100% rename from main/pub/doc/hoon/runes/ts/tsbr.md rename to base/pub/doc/hoon/runes/ts/tsbr.md diff --git a/main/pub/doc/hoon/runes/ts/tscl.md b/base/pub/doc/hoon/runes/ts/tscl.md similarity index 100% rename from main/pub/doc/hoon/runes/ts/tscl.md rename to base/pub/doc/hoon/runes/ts/tscl.md diff --git a/main/pub/doc/hoon/runes/ts/tsdt.md b/base/pub/doc/hoon/runes/ts/tsdt.md similarity index 100% rename from main/pub/doc/hoon/runes/ts/tsdt.md rename to base/pub/doc/hoon/runes/ts/tsdt.md diff --git a/main/pub/doc/hoon/runes/ts/tsgl.md b/base/pub/doc/hoon/runes/ts/tsgl.md similarity index 100% rename from main/pub/doc/hoon/runes/ts/tsgl.md rename to base/pub/doc/hoon/runes/ts/tsgl.md diff --git a/main/pub/doc/hoon/runes/ts/tsgr.md b/base/pub/doc/hoon/runes/ts/tsgr.md similarity index 100% rename from main/pub/doc/hoon/runes/ts/tsgr.md rename to base/pub/doc/hoon/runes/ts/tsgr.md diff --git a/main/pub/doc/hoon/runes/ts/tshp.md b/base/pub/doc/hoon/runes/ts/tshp.md similarity index 100% rename from main/pub/doc/hoon/runes/ts/tshp.md rename to base/pub/doc/hoon/runes/ts/tshp.md diff --git a/main/pub/doc/hoon/runes/ts/tskt.md b/base/pub/doc/hoon/runes/ts/tskt.md similarity index 100% rename from main/pub/doc/hoon/runes/ts/tskt.md rename to base/pub/doc/hoon/runes/ts/tskt.md diff --git a/main/pub/doc/hoon/runes/ts/tsls.md b/base/pub/doc/hoon/runes/ts/tsls.md similarity index 100% rename from main/pub/doc/hoon/runes/ts/tsls.md rename to base/pub/doc/hoon/runes/ts/tsls.md diff --git a/main/pub/doc/hoon/runes/ts/tssg.md b/base/pub/doc/hoon/runes/ts/tssg.md similarity index 100% rename from main/pub/doc/hoon/runes/ts/tssg.md rename to base/pub/doc/hoon/runes/ts/tssg.md diff --git a/main/pub/doc/hoon/runes/ts/tstr.md b/base/pub/doc/hoon/runes/ts/tstr.md similarity index 100% rename from main/pub/doc/hoon/runes/ts/tstr.md rename to base/pub/doc/hoon/runes/ts/tstr.md diff --git a/main/pub/doc/hoon/runes/wt.md b/base/pub/doc/hoon/runes/wt.md similarity index 100% rename from main/pub/doc/hoon/runes/wt.md rename to base/pub/doc/hoon/runes/wt.md diff --git a/main/pub/doc/hoon/runes/wt/wtbr.md b/base/pub/doc/hoon/runes/wt/wtbr.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wtbr.md rename to base/pub/doc/hoon/runes/wt/wtbr.md diff --git a/main/pub/doc/hoon/runes/wt/wtcl.md b/base/pub/doc/hoon/runes/wt/wtcl.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wtcl.md rename to base/pub/doc/hoon/runes/wt/wtcl.md diff --git a/main/pub/doc/hoon/runes/wt/wtdt.md b/base/pub/doc/hoon/runes/wt/wtdt.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wtdt.md rename to base/pub/doc/hoon/runes/wt/wtdt.md diff --git a/main/pub/doc/hoon/runes/wt/wtgl.md b/base/pub/doc/hoon/runes/wt/wtgl.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wtgl.md rename to base/pub/doc/hoon/runes/wt/wtgl.md diff --git a/main/pub/doc/hoon/runes/wt/wtgr.md b/base/pub/doc/hoon/runes/wt/wtgr.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wtgr.md rename to base/pub/doc/hoon/runes/wt/wtgr.md diff --git a/main/pub/doc/hoon/runes/wt/wthp.md b/base/pub/doc/hoon/runes/wt/wthp.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wthp.md rename to base/pub/doc/hoon/runes/wt/wthp.md diff --git a/main/pub/doc/hoon/runes/wt/wthz.md b/base/pub/doc/hoon/runes/wt/wthz.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wthz.md rename to base/pub/doc/hoon/runes/wt/wthz.md diff --git a/main/pub/doc/hoon/runes/wt/wtkt.md b/base/pub/doc/hoon/runes/wt/wtkt.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wtkt.md rename to base/pub/doc/hoon/runes/wt/wtkt.md diff --git a/main/pub/doc/hoon/runes/wt/wtkz.md b/base/pub/doc/hoon/runes/wt/wtkz.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wtkz.md rename to base/pub/doc/hoon/runes/wt/wtkz.md diff --git a/main/pub/doc/hoon/runes/wt/wtls.md b/base/pub/doc/hoon/runes/wt/wtls.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wtls.md rename to base/pub/doc/hoon/runes/wt/wtls.md diff --git a/main/pub/doc/hoon/runes/wt/wtlz.md b/base/pub/doc/hoon/runes/wt/wtlz.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wtlz.md rename to base/pub/doc/hoon/runes/wt/wtlz.md diff --git a/main/pub/doc/hoon/runes/wt/wtpm.md b/base/pub/doc/hoon/runes/wt/wtpm.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wtpm.md rename to base/pub/doc/hoon/runes/wt/wtpm.md diff --git a/main/pub/doc/hoon/runes/wt/wtpt.md b/base/pub/doc/hoon/runes/wt/wtpt.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wtpt.md rename to base/pub/doc/hoon/runes/wt/wtpt.md diff --git a/main/pub/doc/hoon/runes/wt/wtpz.md b/base/pub/doc/hoon/runes/wt/wtpz.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wtpz.md rename to base/pub/doc/hoon/runes/wt/wtpz.md diff --git a/main/pub/doc/hoon/runes/wt/wtsg.md b/base/pub/doc/hoon/runes/wt/wtsg.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wtsg.md rename to base/pub/doc/hoon/runes/wt/wtsg.md diff --git a/main/pub/doc/hoon/runes/wt/wtsz.md b/base/pub/doc/hoon/runes/wt/wtsz.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wtsz.md rename to base/pub/doc/hoon/runes/wt/wtsz.md diff --git a/main/pub/doc/hoon/runes/wt/wtts.md b/base/pub/doc/hoon/runes/wt/wtts.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wtts.md rename to base/pub/doc/hoon/runes/wt/wtts.md diff --git a/main/pub/doc/hoon/runes/wt/wttz.md b/base/pub/doc/hoon/runes/wt/wttz.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wttz.md rename to base/pub/doc/hoon/runes/wt/wttz.md diff --git a/main/pub/doc/hoon/runes/wt/wtzp.md b/base/pub/doc/hoon/runes/wt/wtzp.md similarity index 100% rename from main/pub/doc/hoon/runes/wt/wtzp.md rename to base/pub/doc/hoon/runes/wt/wtzp.md diff --git a/main/pub/doc/hoon/runes/zp.md b/base/pub/doc/hoon/runes/zp.md similarity index 100% rename from main/pub/doc/hoon/runes/zp.md rename to base/pub/doc/hoon/runes/zp.md diff --git a/main/pub/doc/hoon/runes/zp/zpcb.md b/base/pub/doc/hoon/runes/zp/zpcb.md similarity index 100% rename from main/pub/doc/hoon/runes/zp/zpcb.md rename to base/pub/doc/hoon/runes/zp/zpcb.md diff --git a/main/pub/doc/hoon/runes/zp/zpcm.md b/base/pub/doc/hoon/runes/zp/zpcm.md similarity index 100% rename from main/pub/doc/hoon/runes/zp/zpcm.md rename to base/pub/doc/hoon/runes/zp/zpcm.md diff --git a/main/pub/doc/hoon/runes/zp/zpfs.md b/base/pub/doc/hoon/runes/zp/zpfs.md similarity index 100% rename from main/pub/doc/hoon/runes/zp/zpfs.md rename to base/pub/doc/hoon/runes/zp/zpfs.md diff --git a/main/pub/doc/hoon/runes/zp/zpgr.md b/base/pub/doc/hoon/runes/zp/zpgr.md similarity index 100% rename from main/pub/doc/hoon/runes/zp/zpgr.md rename to base/pub/doc/hoon/runes/zp/zpgr.md diff --git a/main/pub/doc/hoon/runes/zp/zpsm.md b/base/pub/doc/hoon/runes/zp/zpsm.md similarity index 100% rename from main/pub/doc/hoon/runes/zp/zpsm.md rename to base/pub/doc/hoon/runes/zp/zpsm.md diff --git a/main/pub/doc/hoon/runes/zp/zpts.md b/base/pub/doc/hoon/runes/zp/zpts.md similarity index 100% rename from main/pub/doc/hoon/runes/zp/zpts.md rename to base/pub/doc/hoon/runes/zp/zpts.md diff --git a/main/pub/doc/hoon/runes/zp/zpwt.md b/base/pub/doc/hoon/runes/zp/zpwt.md similarity index 100% rename from main/pub/doc/hoon/runes/zp/zpwt.md rename to base/pub/doc/hoon/runes/zp/zpwt.md diff --git a/main/pub/doc/hoon/runes/zp/zpzp.md b/base/pub/doc/hoon/runes/zp/zpzp.md similarity index 100% rename from main/pub/doc/hoon/runes/zp/zpzp.md rename to base/pub/doc/hoon/runes/zp/zpzp.md diff --git a/main/pub/doc/nock.md b/base/pub/doc/nock.md similarity index 100% rename from main/pub/doc/nock.md rename to base/pub/doc/nock.md diff --git a/main/pub/doc/nock/reference.md b/base/pub/doc/nock/reference.md similarity index 100% rename from main/pub/doc/nock/reference.md rename to base/pub/doc/nock/reference.md diff --git a/main/pub/doc/reference.md b/base/pub/doc/reference.md similarity index 100% rename from main/pub/doc/reference.md rename to base/pub/doc/reference.md diff --git a/main/pub/doc/reference/glossary.md b/base/pub/doc/reference/glossary.md similarity index 100% rename from main/pub/doc/reference/glossary.md rename to base/pub/doc/reference/glossary.md diff --git a/main/pub/doc/reference/vere.md b/base/pub/doc/reference/vere.md similarity index 100% rename from main/pub/doc/reference/vere.md rename to base/pub/doc/reference/vere.md diff --git a/main/pub/fab/readme.md b/base/pub/fab/readme.md similarity index 100% rename from main/pub/fab/readme.md rename to base/pub/fab/readme.md diff --git a/main/pub/fab/sqar/hymn.hook b/base/pub/fab/sqar/hymn.hook similarity index 100% rename from main/pub/fab/sqar/hymn.hook rename to base/pub/fab/sqar/hymn.hook diff --git a/main/pub/radio/fab/hymn.hook b/base/pub/radio/fab/hymn.hook similarity index 100% rename from main/pub/radio/fab/hymn.hook rename to base/pub/radio/fab/hymn.hook diff --git a/main/pub/radio/src/main.css b/base/pub/radio/src/main.css similarity index 100% rename from main/pub/radio/src/main.css rename to base/pub/radio/src/main.css diff --git a/main/pub/radio/src/main.js b/base/pub/radio/src/main.js similarity index 100% rename from main/pub/radio/src/main.js rename to base/pub/radio/src/main.js diff --git a/main/pub/sole/fab/hymn.hook b/base/pub/sole/fab/hymn.hook similarity index 100% rename from main/pub/sole/fab/hymn.hook rename to base/pub/sole/fab/hymn.hook diff --git a/main/pub/sole/src/main.coffee b/base/pub/sole/src/main.coffee similarity index 100% rename from main/pub/sole/src/main.coffee rename to base/pub/sole/src/main.coffee diff --git a/main/pub/sole/src/share.coffee b/base/pub/sole/src/share.coffee similarity index 100% rename from main/pub/sole/src/share.coffee rename to base/pub/sole/src/share.coffee diff --git a/main/pub/src/doc/chat/help.txt b/base/pub/src/doc/chat/help.txt similarity index 100% rename from main/pub/src/doc/chat/help.txt rename to base/pub/src/doc/chat/help.txt diff --git a/main/pub/src/radio/hymn.hook b/base/pub/src/radio/hymn.hook similarity index 100% rename from main/pub/src/radio/hymn.hook rename to base/pub/src/radio/hymn.hook diff --git a/main/pub/src/radio/main.js b/base/pub/src/radio/main.js similarity index 100% rename from main/pub/src/radio/main.js rename to base/pub/src/radio/main.js diff --git a/main/pub/src/readme.md b/base/pub/src/readme.md similarity index 100% rename from main/pub/src/readme.md rename to base/pub/src/readme.md diff --git a/main/pub/talk/fab/hymn.hook b/base/pub/talk/fab/hymn.hook similarity index 100% rename from main/pub/talk/fab/hymn.hook rename to base/pub/talk/fab/hymn.hook diff --git a/main/pub/talk/src/css/fonts.styl b/base/pub/talk/src/css/fonts.styl similarity index 100% rename from main/pub/talk/src/css/fonts.styl rename to base/pub/talk/src/css/fonts.styl diff --git a/main/pub/talk/src/css/main.css b/base/pub/talk/src/css/main.css similarity index 100% rename from main/pub/talk/src/css/main.css rename to base/pub/talk/src/css/main.css diff --git a/main/pub/talk/src/css/main.styl b/base/pub/talk/src/css/main.styl similarity index 100% rename from main/pub/talk/src/css/main.styl rename to base/pub/talk/src/css/main.styl diff --git a/main/pub/talk/src/css/mobile.styl b/base/pub/talk/src/css/mobile.styl similarity index 100% rename from main/pub/talk/src/css/mobile.styl rename to base/pub/talk/src/css/mobile.styl diff --git a/main/pub/talk/src/js/actions/MessageActions.coffee b/base/pub/talk/src/js/actions/MessageActions.coffee similarity index 100% rename from main/pub/talk/src/js/actions/MessageActions.coffee rename to base/pub/talk/src/js/actions/MessageActions.coffee diff --git a/main/pub/talk/src/js/actions/StationActions.coffee b/base/pub/talk/src/js/actions/StationActions.coffee similarity index 100% rename from main/pub/talk/src/js/actions/StationActions.coffee rename to base/pub/talk/src/js/actions/StationActions.coffee diff --git a/main/pub/talk/src/js/components/MemberComponent.coffee b/base/pub/talk/src/js/components/MemberComponent.coffee similarity index 100% rename from main/pub/talk/src/js/components/MemberComponent.coffee rename to base/pub/talk/src/js/components/MemberComponent.coffee diff --git a/main/pub/talk/src/js/components/MessagesComponent.coffee b/base/pub/talk/src/js/components/MessagesComponent.coffee similarity index 100% rename from main/pub/talk/src/js/components/MessagesComponent.coffee rename to base/pub/talk/src/js/components/MessagesComponent.coffee diff --git a/main/pub/talk/src/js/components/StationComponent.coffee b/base/pub/talk/src/js/components/StationComponent.coffee similarity index 100% rename from main/pub/talk/src/js/components/StationComponent.coffee rename to base/pub/talk/src/js/components/StationComponent.coffee diff --git a/main/pub/talk/src/js/components/StationsComponent.coffee b/base/pub/talk/src/js/components/StationsComponent.coffee similarity index 100% rename from main/pub/talk/src/js/components/StationsComponent.coffee rename to base/pub/talk/src/js/components/StationsComponent.coffee diff --git a/main/pub/talk/src/js/components/TalkComponent.coffee b/base/pub/talk/src/js/components/TalkComponent.coffee similarity index 100% rename from main/pub/talk/src/js/components/TalkComponent.coffee rename to base/pub/talk/src/js/components/TalkComponent.coffee diff --git a/main/pub/talk/src/js/components/WritingComponent.coffee b/base/pub/talk/src/js/components/WritingComponent.coffee similarity index 100% rename from main/pub/talk/src/js/components/WritingComponent.coffee rename to base/pub/talk/src/js/components/WritingComponent.coffee diff --git a/main/pub/talk/src/js/dep/director.js b/base/pub/talk/src/js/dep/director.js similarity index 100% rename from main/pub/talk/src/js/dep/director.js rename to base/pub/talk/src/js/dep/director.js diff --git a/main/pub/talk/src/js/dispatcher/Dispatcher.coffee b/base/pub/talk/src/js/dispatcher/Dispatcher.coffee similarity index 100% rename from main/pub/talk/src/js/dispatcher/Dispatcher.coffee rename to base/pub/talk/src/js/dispatcher/Dispatcher.coffee diff --git a/main/pub/talk/src/js/main.coffee b/base/pub/talk/src/js/main.coffee similarity index 100% rename from main/pub/talk/src/js/main.coffee rename to base/pub/talk/src/js/main.coffee diff --git a/main/pub/talk/src/js/main.js b/base/pub/talk/src/js/main.js similarity index 100% rename from main/pub/talk/src/js/main.js rename to base/pub/talk/src/js/main.js diff --git a/main/pub/talk/src/js/module.coffee b/base/pub/talk/src/js/module.coffee similarity index 100% rename from main/pub/talk/src/js/module.coffee rename to base/pub/talk/src/js/module.coffee diff --git a/main/pub/talk/src/js/module.js b/base/pub/talk/src/js/module.js similarity index 100% rename from main/pub/talk/src/js/module.js rename to base/pub/talk/src/js/module.js diff --git a/main/pub/talk/src/js/move.coffee b/base/pub/talk/src/js/move.coffee similarity index 100% rename from main/pub/talk/src/js/move.coffee rename to base/pub/talk/src/js/move.coffee diff --git a/main/pub/talk/src/js/package.json b/base/pub/talk/src/js/package.json similarity index 100% rename from main/pub/talk/src/js/package.json rename to base/pub/talk/src/js/package.json diff --git a/main/pub/talk/src/js/persistence/MessagePersistence.coffee b/base/pub/talk/src/js/persistence/MessagePersistence.coffee similarity index 100% rename from main/pub/talk/src/js/persistence/MessagePersistence.coffee rename to base/pub/talk/src/js/persistence/MessagePersistence.coffee diff --git a/main/pub/talk/src/js/persistence/StationPersistence.coffee b/base/pub/talk/src/js/persistence/StationPersistence.coffee similarity index 100% rename from main/pub/talk/src/js/persistence/StationPersistence.coffee rename to base/pub/talk/src/js/persistence/StationPersistence.coffee diff --git a/main/pub/talk/src/js/stores/MessageStore.coffee b/base/pub/talk/src/js/stores/MessageStore.coffee similarity index 100% rename from main/pub/talk/src/js/stores/MessageStore.coffee rename to base/pub/talk/src/js/stores/MessageStore.coffee diff --git a/main/pub/talk/src/js/stores/StationStore.coffee b/base/pub/talk/src/js/stores/StationStore.coffee similarity index 100% rename from main/pub/talk/src/js/stores/StationStore.coffee rename to base/pub/talk/src/js/stores/StationStore.coffee diff --git a/main/pub/talk/src/js/test.js b/base/pub/talk/src/js/test.js similarity index 100% rename from main/pub/talk/src/js/test.js rename to base/pub/talk/src/js/test.js diff --git a/main/pub/talk/src/js/util.coffee b/base/pub/talk/src/js/util.coffee similarity index 100% rename from main/pub/talk/src/js/util.coffee rename to base/pub/talk/src/js/util.coffee diff --git a/main/pub/tree/src/css/fonts.styl b/base/pub/tree/src/css/fonts.styl similarity index 100% rename from main/pub/tree/src/css/fonts.styl rename to base/pub/tree/src/css/fonts.styl diff --git a/main/pub/tree/src/css/main.css b/base/pub/tree/src/css/main.css similarity index 100% rename from main/pub/tree/src/css/main.css rename to base/pub/tree/src/css/main.css diff --git a/main/pub/tree/src/css/main.styl b/base/pub/tree/src/css/main.styl similarity index 100% rename from main/pub/tree/src/css/main.styl rename to base/pub/tree/src/css/main.styl diff --git a/main/pub/tree/src/css/mobile.styl b/base/pub/tree/src/css/mobile.styl similarity index 100% rename from main/pub/tree/src/css/mobile.styl rename to base/pub/tree/src/css/mobile.styl diff --git a/main/pub/tree/src/js/actions/TreeActions.coffee b/base/pub/tree/src/js/actions/TreeActions.coffee similarity index 100% rename from main/pub/tree/src/js/actions/TreeActions.coffee rename to base/pub/tree/src/js/actions/TreeActions.coffee diff --git a/main/pub/tree/src/js/components/AnchorComponent.coffee b/base/pub/tree/src/js/components/AnchorComponent.coffee similarity index 100% rename from main/pub/tree/src/js/components/AnchorComponent.coffee rename to base/pub/tree/src/js/components/AnchorComponent.coffee diff --git a/main/pub/tree/src/js/components/BodyComponent.coffee b/base/pub/tree/src/js/components/BodyComponent.coffee similarity index 100% rename from main/pub/tree/src/js/components/BodyComponent.coffee rename to base/pub/tree/src/js/components/BodyComponent.coffee diff --git a/main/pub/tree/src/js/components/KidsComponent.coffee b/base/pub/tree/src/js/components/KidsComponent.coffee similarity index 100% rename from main/pub/tree/src/js/components/KidsComponent.coffee rename to base/pub/tree/src/js/components/KidsComponent.coffee diff --git a/main/pub/tree/src/js/components/ListComponent.coffee b/base/pub/tree/src/js/components/ListComponent.coffee similarity index 100% rename from main/pub/tree/src/js/components/ListComponent.coffee rename to base/pub/tree/src/js/components/ListComponent.coffee diff --git a/main/pub/tree/src/js/components/LoadComponent.coffee b/base/pub/tree/src/js/components/LoadComponent.coffee similarity index 100% rename from main/pub/tree/src/js/components/LoadComponent.coffee rename to base/pub/tree/src/js/components/LoadComponent.coffee diff --git a/main/pub/tree/src/js/dispatcher/Dispatcher.coffee b/base/pub/tree/src/js/dispatcher/Dispatcher.coffee similarity index 100% rename from main/pub/tree/src/js/dispatcher/Dispatcher.coffee rename to base/pub/tree/src/js/dispatcher/Dispatcher.coffee diff --git a/main/pub/tree/src/js/main.coffee b/base/pub/tree/src/js/main.coffee similarity index 100% rename from main/pub/tree/src/js/main.coffee rename to base/pub/tree/src/js/main.coffee diff --git a/main/pub/tree/src/js/main.js b/base/pub/tree/src/js/main.js similarity index 100% rename from main/pub/tree/src/js/main.js rename to base/pub/tree/src/js/main.js diff --git a/main/pub/tree/src/js/package.json b/base/pub/tree/src/js/package.json similarity index 100% rename from main/pub/tree/src/js/package.json rename to base/pub/tree/src/js/package.json diff --git a/main/pub/tree/src/js/persistence/TreePersistence.coffee b/base/pub/tree/src/js/persistence/TreePersistence.coffee similarity index 100% rename from main/pub/tree/src/js/persistence/TreePersistence.coffee rename to base/pub/tree/src/js/persistence/TreePersistence.coffee diff --git a/main/pub/tree/src/js/stores/TreeStore.coffee b/base/pub/tree/src/js/stores/TreeStore.coffee similarity index 100% rename from main/pub/tree/src/js/stores/TreeStore.coffee rename to base/pub/tree/src/js/stores/TreeStore.coffee diff --git a/main/pub/tree/src/readme.md b/base/pub/tree/src/readme.md similarity index 100% rename from main/pub/tree/src/readme.md rename to base/pub/tree/src/readme.md diff --git a/main/spec/nock/5.txt b/base/spec/nock/5.txt similarity index 100% rename from main/spec/nock/5.txt rename to base/spec/nock/5.txt diff --git a/main/sur/bang-args/gate.hook b/base/sur/bang-args/gate.hook similarity index 100% rename from main/sur/bang-args/gate.hook rename to base/sur/bang-args/gate.hook diff --git a/main/sur/cp-args/gate.hook b/base/sur/cp-args/gate.hook similarity index 100% rename from main/sur/cp-args/gate.hook rename to base/sur/cp-args/gate.hook diff --git a/main/sur/demo-args/gate.hook b/base/sur/demo-args/gate.hook similarity index 100% rename from main/sur/demo-args/gate.hook rename to base/sur/demo-args/gate.hook diff --git a/main/sur/down/gate.hook b/base/sur/down/gate.hook similarity index 100% rename from main/sur/down/gate.hook rename to base/sur/down/gate.hook diff --git a/main/sur/foobar/gate.hook b/base/sur/foobar/gate.hook similarity index 100% rename from main/sur/foobar/gate.hook rename to base/sur/foobar/gate.hook diff --git a/main/sur/hi-args/gate.hook b/base/sur/hi-args/gate.hook similarity index 100% rename from main/sur/hi-args/gate.hook rename to base/sur/hi-args/gate.hook diff --git a/main/sur/into-args/gate.hook b/base/sur/into-args/gate.hook similarity index 100% rename from main/sur/into-args/gate.hook rename to base/sur/into-args/gate.hook diff --git a/main/sur/kyev/gate.hook b/base/sur/kyev/gate.hook similarity index 100% rename from main/sur/kyev/gate.hook rename to base/sur/kyev/gate.hook diff --git a/main/sur/markdown/core.hook b/base/sur/markdown/core.hook similarity index 100% rename from main/sur/markdown/core.hook rename to base/sur/markdown/core.hook diff --git a/main/sur/mess/gate.hook b/base/sur/mess/gate.hook similarity index 100% rename from main/sur/mess/gate.hook rename to base/sur/mess/gate.hook diff --git a/main/sur/mv-args/gate.hook b/base/sur/mv-args/gate.hook similarity index 100% rename from main/sur/mv-args/gate.hook rename to base/sur/mv-args/gate.hook diff --git a/main/sur/reload-args/gate.hook b/base/sur/reload-args/gate.hook similarity index 100% rename from main/sur/reload-args/gate.hook rename to base/sur/reload-args/gate.hook diff --git a/main/sur/rm-args/gate.hook b/base/sur/rm-args/gate.hook similarity index 100% rename from main/sur/rm-args/gate.hook rename to base/sur/rm-args/gate.hook diff --git a/main/sur/sole/core.hook b/base/sur/sole/core.hook similarity index 100% rename from main/sur/sole/core.hook rename to base/sur/sole/core.hook diff --git a/main/sur/sync-args/gate.hook b/base/sur/sync-args/gate.hook similarity index 100% rename from main/sur/sync-args/gate.hook rename to base/sur/sync-args/gate.hook diff --git a/main/sur/talk/core.hook b/base/sur/talk/core.hook similarity index 100% rename from main/sur/talk/core.hook rename to base/sur/talk/core.hook diff --git a/main/sur/term-ctrl/gate.hook b/base/sur/term-ctrl/gate.hook similarity index 100% rename from main/sur/term-ctrl/gate.hook rename to base/sur/term-ctrl/gate.hook diff --git a/main/sur/term-in/gate.hook b/base/sur/term-in/gate.hook similarity index 100% rename from main/sur/term-in/gate.hook rename to base/sur/term-in/gate.hook diff --git a/main/sur/term-line/gate.hook b/base/sur/term-line/gate.hook similarity index 100% rename from main/sur/term-line/gate.hook rename to base/sur/term-line/gate.hook diff --git a/main/sur/ticket-args/gate.hook b/base/sur/ticket-args/gate.hook similarity index 100% rename from main/sur/ticket-args/gate.hook rename to base/sur/ticket-args/gate.hook diff --git a/main/sur/twitter/core.hook b/base/sur/twitter/core.hook similarity index 100% rename from main/sur/twitter/core.hook rename to base/sur/twitter/core.hook diff --git a/main/sur/unsync-args/gate.hook b/base/sur/unsync-args/gate.hook similarity index 100% rename from main/sur/unsync-args/gate.hook rename to base/sur/unsync-args/gate.hook diff --git a/main/sur/user/gate.hook b/base/sur/user/gate.hook similarity index 100% rename from main/sur/user/gate.hook rename to base/sur/user/gate.hook diff --git a/main/sur/users/gate.hook b/base/sur/users/gate.hook similarity index 100% rename from main/sur/users/gate.hook rename to base/sur/users/gate.hook diff --git a/main/sur/verb-args/gate.hook b/base/sur/verb-args/gate.hook similarity index 100% rename from main/sur/verb-args/gate.hook rename to base/sur/verb-args/gate.hook diff --git a/main/sur/wand/gate.hook b/base/sur/wand/gate.hook similarity index 100% rename from main/sur/wand/gate.hook rename to base/sur/wand/gate.hook diff --git a/main/sur/zing/gate.hook b/base/sur/zing/gate.hook similarity index 100% rename from main/sur/zing/gate.hook rename to base/sur/zing/gate.hook diff --git a/main/sur/zong/gate.hook b/base/sur/zong/gate.hook similarity index 100% rename from main/sur/zong/gate.hook rename to base/sur/zong/gate.hook diff --git a/main/sur/zung/gate.hook b/base/sur/zung/gate.hook similarity index 100% rename from main/sur/zung/gate.hook rename to base/sur/zung/gate.hook diff --git a/main/tree/hymn.hook b/base/tree/hymn.hook similarity index 100% rename from main/tree/hymn.hook rename to base/tree/hymn.hook diff --git a/main/tree/json.hook b/base/tree/json.hook similarity index 100% rename from main/tree/json.hook rename to base/tree/json.hook diff --git a/main/tree/util.hoon b/base/tree/util.hoon similarity index 100% rename from main/tree/util.hoon rename to base/tree/util.hoon diff --git a/main/try/readme.md b/base/try/readme.md similarity index 100% rename from main/try/readme.md rename to base/try/readme.md From 75d4e2fbad1929ee367e4198936a51d10961eca0 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Wed, 29 Apr 2015 21:23:46 -0400 Subject: [PATCH 83/89] added %next clay subscription type --- base/arvo/clay.hoon | 101 ++++++++++++++++++++++++++++++++++---------- base/arvo/zuse.hoon | 1 + 2 files changed, 80 insertions(+), 22 deletions(-) diff --git a/base/arvo/clay.hoon b/base/arvo/clay.hoon index f98aad926..cc1157aaf 100644 --- a/base/arvo/clay.hoon +++ b/base/arvo/clay.hoon @@ -152,6 +152,7 @@ == :: ++ rove :: stored request $% [%sing p=mood] :: single request + [%next p=mood] :: next version [%many p=? q=moot] :: change range == :: ++ rung $: rus=(map desk rede) :: neighbor desks @@ -208,10 +209,7 @@ :: ++ aver :: read |= mun=mood - ^- (unit (unit (each cage silk))) - ?: &(=(p.mun %u) !=(p.q.mun now)) :: prevent bad things - ~& [%clay-fail p.q.mun %now now] - !! + ^- (unit (unit (each cage lobe))) =+ ezy=?~(ref ~ (~(get by haw.u.ref) mun)) ?^ ezy `(bind u.ezy (cury same %&)) @@ -243,7 +241,7 @@ [?^(q.i.p.tab !! q.i.p.tab) (slot 5 q.tab)] :: ++ balk :: read and send - |= [hen=duct cay=(unit (each cage silk)) mun=mood] + |= [hen=duct cay=(unit (each cage lobe)) mun=mood] ^+ +> ?~ cay (blub hen) (blab hen mun u.cay) @@ -257,13 +255,13 @@ %_(+> tag :_(tag [hen %pass /tyme %t %rest tym])) :: ++ blab :: ship result - |= [hen=duct mun=mood dat=(each cage silk)] + |= [hen=duct mun=mood dat=(each cage lobe)] ^+ +> ?: ?=(%& -.dat) +>.$(byn [[hen ~ [p.mun q.mun syd] r.mun p.dat] byn]) =- +>.$(tag [- tag]) :* hen %pass [%blab p.mun (scot q.mun) syd r.mun] - %f %exec who [who syd q.mun] ~ p.dat + %f %exec who [who syd q.mun] ~ (lobe-to-silk:ze r.mun p.dat) == :: ++ bleb :: ship sequence @@ -327,15 +325,32 @@ ^+ +> ?- -.rav %sing - ?: &(=(p.p.rav %u) !=(p.q.p.rav now)) - ~& [%clay-fail p.q.p.rav %now now] - !! =+ ver=(aver p.rav) ?~ ver (duce rav) ?~ u.ver (blub hen) (blab hen p.rav u.u.ver) + :: + %next + =+ ver=(aver p.rav) + ?~ ver + (duce rav) + ?~ u.ver + (blub hen) + =+ yon=+((need (case-to-aeon:ze q.p.rav))) + |- ^+ +>.^$ + ?: (gth yon let.dom) + (duce rav) + =+ var=(aver p.rav(q [%ud yon])) + ?~ var + ~& [%oh-no rave=rav aeon=yon letdom=let.dom] + +>.^$ + ?~ u.var + (blab hen p.rav %& %null [%atom %n] ~) :: only for %x + ?: (equivalent-data:ze u.u.ver u.u.var) + $(yon +(yon)) + (blab hen p.rav u.u.var) :: %many =+ nab=(case-to-aeon:ze p.q.rav) @@ -1028,6 +1043,8 @@ %sing ?. ?=(%da -.q.p.rov) ~ `p.q.p.rov + :: + %next ~ %many =* mot q.rov %+ hunt @@ -1040,7 +1057,7 @@ ++ reve |= rov=rove ^- rave - ?: ?=(%sing -.rov) rov + ?. ?=(%many -.rov) rov [%many p.rov p.q.rov q.q.rov r.q.rov] :: ++ rive @@ -1069,8 +1086,27 @@ :: ~& %reading-at-aeon =+ vid=(read-at-aeon:ze u.nao p.q.i.xiq) :: ~& %red-at-aeon - ?~ vid ~& [%oh-well mood=p.q.i.xiq aeon=nao] $(xiq t.xiq, xaq [i.xiq xaq]) + ?~ vid + ~& [%oh-well mood=p.q.i.xiq aeon=nao] + $(xiq t.xiq, xaq [i.xiq xaq]) $(xiq t.xiq, ..wake (balk p.i.xiq u.vid p.q.i.xiq)) + :: + %next + =* mun p.q.i.xiq + =+ ver=(aver mun) + ?~ ver + $(xiq t.xiq, xaq [i.xiq xaq]) + ?~ u.ver + $(xiq t.xiq, ..wake (blub p.i.xiq)) + =+ var=(aver mun(q [%ud let.dom])) + ?~ var + ~& [%oh-noes mood=mun letdom=let.dom] + $(xiq t.xiq) + ?~ u.var + $(xiq t.xiq, ..wake (blab p.i.xiq mun %& %null [%atom %n] ~)) + ?: (equivalent-data:ze u.u.ver u.u.var) + $(xiq t.xiq, xaq [i.xiq xaq]) + $(xiq t.xiq, ..wake (blab p.i.xiq mun u.u.var)) :: %many =+ mot=`moot`q.q.i.xiq @@ -1111,7 +1147,7 @@ %direct p.q %indirect p.q == - ++ lobe-to-silk + ++ lobe-to-silk :: XX maybe move hoo{n,k} stuff here |= [pax=path lob=lobe] ^- silk =+ ^- hat=(map path lobe) @@ -1132,6 +1168,17 @@ == :: ++ page-to-lobe |=(page (shax (jam +<))) + ++ equivalent-data + |= [one=(each cage lobe) two=(each cage lobe)] + ^- ? + ?: ?=(%& -.one) + ?: ?=(%& -.two) + =([p q.q]:p.one [p q.q]:p.two) + =(p.two (page-to-lobe [p q.q]:p.one)) + ?: ?=(%& -.two) + =(p.one (page-to-lobe [p q.q]:p.two)) + =(p.one p.two) + :: ++ make-direct :: make blob |= p=page ^- blob @@ -1346,10 +1393,10 @@ |= ren=?(%u %v %x %y %z) :: endpoint query ^- (unit cage) ?- ren - %u [~ %rang !>(ran)] + %u !! :: [~ %null [%atom %n] ~] %v [~ %dome !>(dom)] - %x ?~(q.ank.dom ~ [~ q.u.q.ank.dom]) - %y [~ %arch !>(as-arch)] + %x !! :: ?~(q.ank.dom ~ [~ q.u.q.ank.dom]) + %y !! :: [~ %arch !>(as-arch)] %z [~ %ankh !>(ank.dom)] == :: @@ -1411,9 +1458,17 @@ ?^(r.mun ~ [~ %w !>([t.yak (forge-nori yak)])]) (query(ank.dom ank:(descend-path:(zu ank.dom) r.mun)) p.mun) :: + ++ read-u + |= [yon=aeon pax=path] + ^- (unit (unit (each ,[%null (hypo ,~)] lobe))) + =+ tak=(~(get by hit.dom) yon) + ?~ tak + ~ + ```[%null [%atom %n] ~] + :: ++ read-x |= [yon=aeon pax=path] - ^- (unit (unit (each cage silk))) + ^- (unit (unit (each cage lobe))) =+ tak=(~(get by hit.dom) yon) ?~ tak ~ @@ -1425,7 +1480,7 @@ [~ ~] =+ mar=(lobe-to-mark u.lob) ?. ?=(?(%hoon %hook) mar) - [~ ~ %| (lobe-to-silk pax u.lob)] + [~ ~ %| u.lob] :^ ~ ~ %& :+ mar [%atom %t] |- ^- @t :: (urge cord) would be faster @@ -1443,7 +1498,7 @@ :: ++ read-y |= [yon=aeon pax=path] - ^- (unit (unit (cask (hypo arch)))) + ^- (unit (unit ,[%arch (hypo arch)])) =+ tak=(~(get by hit.dom) yon) ?~ tak ~ @@ -1475,9 +1530,11 @@ :: ++ read-at-aeon :: read-at-aeon:ze |= [yon=aeon mun=mood] :: seek and read - ^- (unit (unit (each cage silk))) + ^- (unit (unit (each cage lobe))) ?: &(?=(%w p.mun) !?=(%ud -.q.mun)) :: NB only for speed ?^(r.mun [~ ~] [~ ~ %& %aeon !>(yon)]) + ?: ?=(%u p.mun) + (read-u yon r.mun) ?: ?=(%x p.mun) (read-x yon r.mun) ?: ?=(%y p.mun) @@ -1485,10 +1542,10 @@ %+ bind (rewind yon) |= a=(unit ,_+>.$) - ^- (unit (each cage silk)) + ^- (unit (each cage lobe)) ?~ a ~ - `(unit (each cage silk))`(bind (read:u.a mun) (cury same %&)) + `(unit (each cage lobe))`(bind (read:u.a mun) (cury same %&)) :: ++ rewind :: rewind:ze |= yon=aeon :: rewind to aeon diff --git a/base/arvo/zuse.hoon b/base/arvo/zuse.hoon index 47aeefabf..baecf03bd 100644 --- a/base/arvo/zuse.hoon +++ b/base/arvo/zuse.hoon @@ -2171,6 +2171,7 @@ == :: ++ rave :: general request $% [%sing p=mood] :: single request + [%next p=mood] :: next version [%many p=? q=moat] :: change range == :: ++ rill :: outbound stream From fb74e61885202715a0743c6272a1ba4b23363b39 Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Thu, 30 Apr 2015 14:37:22 -0400 Subject: [PATCH 84/89] moved ford dependencies to new model --- base/arvo/ford.hoon | 29 +++++++---------------------- base/lib/talk/core.hook | 1 + 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/base/arvo/ford.hoon b/base/arvo/ford.hoon index f6b70eb47..9bd785580 100644 --- a/base/arvo/ford.hoon +++ b/base/arvo/ford.hoon @@ -131,7 +131,7 @@ == :: ++ deps :: depend state $% [%init p=(set beam)] :: given out - [%sent p=(set duct) q=(map beam (unit ,@uv))] :: listener exists + [%sent p=(set duct) q=(set beam)] :: listener exists [%done ~] :: change seen == :: ++ task :: problem in progress @@ -267,28 +267,19 @@ ?- -.+.sih %writ ?~ p.sih +>.$ - =+ ark=;;(arch |2.r.u.p.sih) - =+ [dap=(~(got by deh.bay) dep) bem=`beam`[bek sup] new=p.ark] + =+ [dap=(~(got by deh.bay) dep) bem=`beam`[bek sup]] =- ?~(dop con con(deh.bay (~(put by deh.bay) dep dop))) ^- [dop=$|(~ _dap) con=_+>.$] ?- -.dap %done `+>.$ :: writ redundant %init ~|(never-subscribed/dep !!) %sent - =+ old=(~(got by q.dap) bem) - ?: |(=(old ~) =(old [~ new])) - :- dap(q (~(put by q.dap) bem `new)) - =. r.bem q.p.u.p.sih - ?> ?=(%ud -.r.bem) - =- +>.$(mow :_(mow [hen %pass tea noe])) - ^- noe=note - [%c [%warp [our p.bem] q.bem ~ [%sing %y ud/+(p.r.bem) (flop s.bem)]]] =- [[%done ~] +>.$(mow (weld - mow))] ^- (list move) %+ weld (turn (~(tap in p.dap)) |=(hen=duct [hen %give %news ~])) - =. q.dap (~(del by q.dap) bem) - %+ turn (~(tap by q.dap)) :: cancel outstanding - |= [bem=beam *] + =. q.dap (~(del in q.dap) bem) + %+ turn (~(tap in q.dap)) :: cancel outstanding + |= bem=beam =. tea [(scot %p our) (scot %uv dep) (tope bem)] [hen %pass tea %c %warp [our p.bem] q.bem ~] == @@ -308,19 +299,13 @@ %init %_ +>.$ deh.bay - =+ (turn (~(tap in p.dap)) |=(a=beam [a ~])) - (~(put by deh.bay) dep [%sent [hen ~ ~] (mo `(list ,[beam ~])`-)]) + (~(put by deh.bay) dep [%sent [hen ~ ~] p.dap]) :: mow =< (welp :_(mow (turn (~(tap in p.dap)) .))) |= bem=beam :^ hen %pass [(scot %p our) (scot %uv dep) (tope bem)] - =- [%c [%warp [our p.bem] q.bem ~ [%sing %y ud/- (flop s.bem)]]] - ?. ?=(%ud -.r.bem) - ;;(@ q.q:(need (need (ska ~ %cw -.bem /)))) - ?: =(0 p.r.bem) - ;;(@ q.q:(need (need (ska ~ %cw -.bem(r da/now) /)))) - p.r.bem + [%c [%warp [our p.bem] q.bem ~ [%next %y r.bem (flop s.bem)]]] == == :: ++ zo diff --git a/base/lib/talk/core.hook b/base/lib/talk/core.hook index 02e5434c9..8cde98c44 100644 --- a/base/lib/talk/core.hook +++ b/base/lib/talk/core.hook @@ -10,6 +10,7 @@ :: |% ++ main :: main story + |= our=ship ^- cord =+ can=(clan our) ?+ can %porch From d30dfc5270102a2150ce4e38519373669f399f7b Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Thu, 30 Apr 2015 14:52:51 -0400 Subject: [PATCH 85/89] bumped protocol number to 3 --- base/arvo/ames.hoon | 6 +++--- base/lib/talk/core.hook | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/base/arvo/ames.hoon b/base/arvo/ames.hoon index 6edff2bf8..564688a90 100644 --- a/base/arvo/ames.hoon +++ b/base/arvo/ames.hoon @@ -440,7 +440,7 @@ vix=(bex +((cut 0 [25 2] mag))) :: width of sender tay=(cut 0 [27 5] mag) :: message type == - ?> =(2 vez) + ?> =(3 vez) ?> =(chk (end 0 20 (mug bod))) :+ [(end 3 wix bod) (cut 3 [wix vix] bod)] (kins tay) @@ -460,7 +460,7 @@ =+ tay=(ksin q.kec) %+ mix %+ can 0 - :~ [3 2] + :~ [3 3] [20 (mug bod)] [2 yax] [2 qax] @@ -1043,7 +1043,7 @@ ++ gnaw :: gnaw:am |= [kay=cape ryn=lane pac=rock] :: process packet ^- [p=(list boon) q=fort] - ?. =(2 (end 0 3 pac)) [~ fox] + ?. =(3 (end 0 3 pac)) [~ fox] =+ kec=(bite pac) ?: (goop p.p.kec) [~ fox] ?. (~(has by urb.ton.fox) q.p.kec) diff --git a/base/lib/talk/core.hook b/base/lib/talk/core.hook index 8cde98c44..02e5434c9 100644 --- a/base/lib/talk/core.hook +++ b/base/lib/talk/core.hook @@ -10,7 +10,6 @@ :: |% ++ main :: main story - |= our=ship ^- cord =+ can=(clan our) ?+ can %porch From 7ebfeda9a556e3e1e5dff3bc3f8db6ca3ec36987 Mon Sep 17 00:00:00 2001 From: Anton Dyudin Date: Thu, 30 Apr 2015 12:34:36 -0700 Subject: [PATCH 86/89] fixed main/ imports to base/ --- base/app/shell/core.hook | 2 +- base/app/terminal/hymn.hook | 2 +- base/pub/radio/fab/hymn.hook | 6 +++--- base/pub/sole/fab/hymn.hook | 2 +- base/pub/src/radio/hymn.hook | 4 ++-- base/pub/talk/fab/hymn.hook | 6 +++--- base/tree/hymn.hook | 6 +++--- base/tree/json.hook | 6 +++--- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/base/app/shell/core.hook b/base/app/shell/core.hook index b76616e78..03219aa83 100644 --- a/base/app/shell/core.hook +++ b/base/app/shell/core.hook @@ -14,7 +14,7 @@ tiv=? :: typing? wit=[p=@u q=(map ,@u coma)] :: waiting commands pid=@u :: next process id - pax=_`path`/=main=/try :: working directory + pax=_`path`/=base=/try :: working directory act=(unit span) :: active child pip=(jar span span) :: pipe out->in pop=(jar span span) :: pipe in->out diff --git a/base/app/terminal/hymn.hook b/base/app/terminal/hymn.hook index 7df1fb846..1f699a0a2 100644 --- a/base/app/terminal/hymn.hook +++ b/base/app/terminal/hymn.hook @@ -13,7 +13,7 @@ ;head ;title: Hi ;script: window.urb = window.urb || \{}; - ;script@"/~/at/main/lib/urb.js"; + ;script@"/~/at/base/lib/urb.js"; ;script@"//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"; ;script@"//cdnjs.cloudflare.com/ajax/libs/mousetrap/1.4.6/mousetrap.js"; ;script@"//use.typekit.net/fkv0sjk.js"; diff --git a/base/pub/radio/fab/hymn.hook b/base/pub/radio/fab/hymn.hook index e308a31d3..86369c103 100644 --- a/base/pub/radio/fab/hymn.hook +++ b/base/pub/radio/fab/hymn.hook @@ -14,13 +14,13 @@ ;script:''' try{Typekit.load();}catch(e){} ''' - ;link(type "text/css", rel "stylesheet", href "/main/pub/radio/src/main.css"); + ;link(type "text/css", rel "stylesheet", href "/base/pub/radio/src/main.css"); ;script(type "text/javascript", src "/gop/hart.js"); ;title: Radio == ;body ;div#c; - ;script(type "text/javascript", src "/main/lib/urb.js"); - ;script(type "text/javascript", src "/main/pub/radio/src/main.js"); + ;script(type "text/javascript", src "/base/lib/urb.js"); + ;script(type "text/javascript", src "/base/pub/radio/src/main.js"); == == diff --git a/base/pub/sole/fab/hymn.hook b/base/pub/sole/fab/hymn.hook index 9bc875957..90e69afc4 100644 --- a/base/pub/sole/fab/hymn.hook +++ b/base/pub/sole/fab/hymn.hook @@ -18,7 +18,7 @@ "mousetrap/1.4.6/mousetrap.js" "react/0.11.0/react.js" == - ;script(src "/~/at/main/lib/urb.js"); + ;script(src "/~/at/base/lib/urb.js"); ;script: urb.appl = 'dojo' ;style:''' #term { diff --git a/base/pub/src/radio/hymn.hook b/base/pub/src/radio/hymn.hook index 5fc100790..8d0bae426 100644 --- a/base/pub/src/radio/hymn.hook +++ b/base/pub/src/radio/hymn.hook @@ -5,7 +5,7 @@ ;script(type "text/javascript", src "/gep/hart.js"); == ;body - ;script(type "text/javascript", src "/main/lib/urb.js"); - ;script(type "text/javascript", src "/main/pub/src/radio/main.js"); + ;script(type "text/javascript", src "/base/lib/urb.js"); + ;script(type "text/javascript", src "/base/pub/src/radio/main.js"); == == \ No newline at end of file diff --git a/base/pub/talk/fab/hymn.hook b/base/pub/talk/fab/hymn.hook index d7e36d5f1..d8c1cdebd 100644 --- a/base/pub/talk/fab/hymn.hook +++ b/base/pub/talk/fab/hymn.hook @@ -22,14 +22,14 @@ "react/0.13.1/react.js" == :: remove /~~ for anon - ;script(type "text/javascript", src "/~~/~/at/main/lib/urb.js"); + ;script(type "text/javascript", src "/~~/~/at/base/lib/urb.js"); ;meta(name "viewport", content "width=device-width, height=device-height, ". "initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0"); - ;link(type "text/css", rel "stylesheet", href "/main/pub/talk/src/css/main.css"); + ;link(type "text/css", rel "stylesheet", href "/base/pub/talk/src/css/main.css"); ;title: urbit talk == ;body ;div#c; - ;script(type "text/javascript", src "/main/pub/talk/src/js/main.js"); + ;script(type "text/javascript", src "/base/pub/talk/src/js/main.js"); == == diff --git a/base/tree/hymn.hook b/base/tree/hymn.hook index 337bdf27a..84ee42e3c 100644 --- a/base/tree/hymn.hook +++ b/base/tree/hymn.hook @@ -1,7 +1,7 @@ :: /? 314 /= gas /$ fuel -/= ral /: /=main=/pub /% /react-js/ +/= ral /: /=base=/pub /% /react-js/ :: :::: :: @@ -17,12 +17,12 @@ ;head ;title: urbit Tree ;meta(name "viewport", content "width=device-width, initial-scale=1"); - ;link(type "text/css", rel "stylesheet", href "/main/pub/tree/src/css/main.css"); + ;link(type "text/css", rel "stylesheet", href "/base/pub/tree/src/css/main.css"); ::;link(type "text/css", rel "stylesheet", href "http://localhost:8000/docs/pub/tree/src/css/main.css"); ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"); ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"); ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/react/0.12.2/react.js"); - ;script(type "text/javascript", src "/main/pub/tree/src/js/main.js"); + ;script(type "text/javascript", src "/base/pub/tree/src/js/main.js"); ::;script(type "text/javascript", src "http://localhost:8000/docs/pub/tree/src/js/main.js"); == ;body diff --git a/base/tree/json.hook b/base/tree/json.hook index 5f78be830..a8330d918 100644 --- a/base/tree/json.hook +++ b/base/tree/json.hook @@ -1,13 +1,13 @@ :: /? 314 /= gas /$ fuel -/= ral /: /=main=/pub /% /react-js/ -/= pal /: /=main=/pub +/= ral /: /=base=/pub /% /react-js/ +/= pal /: /=base=/pub /; |= a=(map ,@ta cord) a /% 2 /_ /react-js/ :: -/= sal /: /=main=/pub +/= sal /: /=base=/pub /; |= a=(map ,@ta json) a /% 2 /_ /react-snip-json/ From 6457c00c2879117f0155254221e9697020808b0e Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Thu, 30 Apr 2015 15:58:39 -0400 Subject: [PATCH 87/89] comment out %camping --- base/arvo/ford.hoon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/arvo/ford.hoon b/base/arvo/ford.hoon index 9bd785580..321f811ef 100644 --- a/base/arvo/ford.hoon +++ b/base/arvo/ford.hoon @@ -356,7 +356,7 @@ :^ %pass [(scot %p our) (scot %ud num) (scot %ud p.kig) (tope bek ~)] %c - ~& >> [%camping bem] + :: ~& >> [%camping bem] [%warp [our p.bem] q.bem [~ %sing ren r.bem (flop s.bem)]] == :: From b97b04a552200982dd80579668b30578c05b81be Mon Sep 17 00:00:00 2001 From: Philip C Monk Date: Thu, 30 Apr 2015 17:01:41 -0400 Subject: [PATCH 88/89] get rid of swapfile --- base/cat/helm/reload/.gate.hook.swp | Bin 12288 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 base/cat/helm/reload/.gate.hook.swp diff --git a/base/cat/helm/reload/.gate.hook.swp b/base/cat/helm/reload/.gate.hook.swp deleted file mode 100644 index 20ba475626a35dc0fe5cfdd481707af970456b17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI&ze>YE90%~9&WfU&(^V_9Lwnj5lt9oy!6J@z5r=DfwzZd>@RwKz9kQ$6gKsX^-(4V|E%eu3J8T|^jcS8<%oE-36wj+Jj52UAJ+0(|Cp*B`^ zWLL$y+Ou|$_iWT40D&BVBtEHZ&QiU$zLxG)Z(KWx+^yI~6CiB#fd9uU=0SG_<0uX=z1Rwwb2tWV=5P-lh6i^+ar8%M#PWu1< z*Z2QBuU|PYoM+Ax=aKWkx#iq&E;y&0^z1$d0|F3$00bZa0SG_<0uX=z1R(Ga1WJ)L zx)NEjns%>OKD*b23cF?E3po|>twMr_>t<7Wd&HaElIcgWh;`_f#nmxgx!PwnShE37dp4--HaLnfm4mmvdLUK!p`g((Z%+?N{m1*mI) Date: Thu, 30 Apr 2015 17:09:02 -0400 Subject: [PATCH 89/89] forgot to commit cat/helm/unix --- base/cat/helm/unix/gate.hook | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 base/cat/helm/unix/gate.hook diff --git a/base/cat/helm/unix/gate.hook b/base/cat/helm/unix/gate.hook new file mode 100644 index 000000000..6bca0773a --- /dev/null +++ b/base/cat/helm/unix/gate.hook @@ -0,0 +1,15 @@ +:: +:::: /hook/gate/unix/helm/cat + :: +/? 314 +:: +:::: + !: +|= $: [now=@da eny=@uvI bec=beak] + [[syd=@tas syn=?(~ [? ~])] ~] + == +:+ %helm-unix + syd +?~ syn + ~ +`-.syn