Artifact 71471e1a09ff9540be922f6aafe265d67f3409c4:
- File webgate-suspend.scm — part of check-in [1b29946a75] at 2013-05-31 12:21:09 on branch trunk — Support for uri-safe or standard base64-encode (user: murphy size: 3361)
0000: 3b 3b 20 2d 2a 2d 20 6d 6f 64 65 3a 20 53 63 68 ;; -*- mode: Sch 0010: 65 6d 65 3b 20 2d 2a 2d 0a 3b 3b 0a 3b 3b 20 54 eme; -*-.;;.;; T 0020: 68 69 73 20 66 69 6c 65 20 69 73 20 70 61 72 74 his file is part 0030: 20 6f 66 20 57 65 62 47 61 74 65 20 66 6f 72 20 of WebGate for 0040: 43 48 49 43 4b 45 4e 2e 0a 3b 3b 20 43 6f 70 79 CHICKEN..;; Copy 0050: 72 69 67 68 74 20 28 63 29 20 32 30 31 31 2d 32 right (c) 2011-2 0060: 30 31 33 20 62 79 20 54 68 6f 6d 61 73 20 43 68 013 by Thomas Ch 0070: 75 73 74 2e 20 20 41 6c 6c 20 72 69 67 68 74 73 ust. All rights 0080: 20 72 65 73 65 72 76 65 64 2e 0a 3b 3b 0a 3b 3b reserved..;;.;; 0090: 20 50 65 72 6d 69 73 73 69 6f 6e 20 69 73 20 68 Permission is h 00a0: 65 72 65 62 79 20 67 72 61 6e 74 65 64 2c 20 66 ereby granted, f 00b0: 72 65 65 20 6f 66 20 63 68 61 72 67 65 2c 20 74 ree of charge, t 00c0: 6f 20 61 6e 79 20 70 65 72 73 6f 6e 0a 3b 3b 20 o any person.;; 00d0: 6f 62 74 61 69 6e 69 6e 67 20 61 20 63 6f 70 79 obtaining a copy 00e0: 20 6f 66 20 74 68 69 73 20 73 6f 66 74 77 61 72 of this softwar 00f0: 65 20 61 6e 64 20 61 73 73 6f 63 69 61 74 65 64 e and associated 0100: 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 0a 3b documentation.; 0110: 3b 20 66 69 6c 65 73 20 28 74 68 65 20 53 6f 66 ; files (the Sof 0120: 74 77 61 72 65 29 2c 20 74 6f 20 64 65 61 6c 20 tware), to deal 0130: 69 6e 20 74 68 65 20 53 6f 66 74 77 61 72 65 20 in the Software 0140: 77 69 74 68 6f 75 74 20 72 65 73 74 72 69 63 74 without restrict 0150: 69 6f 6e 2c 0a 3b 3b 20 69 6e 63 6c 75 64 69 6e ion,.;; includin 0160: 67 20 77 69 74 68 6f 75 74 20 6c 69 6d 69 74 61 g without limita 0170: 74 69 6f 6e 20 74 68 65 20 72 69 67 68 74 73 20 tion the rights 0180: 74 6f 20 75 73 65 2c 20 63 6f 70 79 2c 20 6d 6f to use, copy, mo 0190: 64 69 66 79 2c 0a 3b 3b 20 6d 65 72 67 65 2c 20 dify,.;; merge, 01a0: 70 75 62 6c 69 73 68 2c 20 64 69 73 74 72 69 62 publish, distrib 01b0: 75 74 65 2c 20 73 75 62 6c 69 63 65 6e 73 65 2c ute, sublicense, 01c0: 20 61 6e 64 2f 6f 72 20 73 65 6c 6c 20 63 6f 70 and/or sell cop 01d0: 69 65 73 20 6f 66 20 74 68 65 0a 3b 3b 20 53 6f ies of the.;; So 01e0: 66 74 77 61 72 65 2c 20 61 6e 64 20 74 6f 20 70 ftware, and to p 01f0: 65 72 6d 69 74 20 70 65 72 73 6f 6e 73 20 74 6f ermit persons to 0200: 20 77 68 6f 6d 20 74 68 65 20 53 6f 66 74 77 61 whom the Softwa 0210: 72 65 20 69 73 20 66 75 72 6e 69 73 68 65 64 0a re is furnished. 0220: 3b 3b 20 74 6f 20 64 6f 20 73 6f 2c 20 73 75 62 ;; to do so, sub 0230: 6a 65 63 74 20 74 6f 20 74 68 65 20 66 6f 6c 6c ject to the foll 0240: 6f 77 69 6e 67 20 63 6f 6e 64 69 74 69 6f 6e 73 owing conditions 0250: 3a 0a 3b 3b 20 0a 3b 3b 20 54 68 65 20 61 62 6f :.;; .;; The abo 0260: 76 65 20 63 6f 70 79 72 69 67 68 74 20 6e 6f 74 ve copyright not 0270: 69 63 65 20 61 6e 64 20 74 68 69 73 20 70 65 72 ice and this per 0280: 6d 69 73 73 69 6f 6e 20 6e 6f 74 69 63 65 20 73 mission notice s 0290: 68 61 6c 6c 20 62 65 0a 3b 3b 20 69 6e 63 6c 75 hall be.;; inclu 02a0: 64 65 64 20 69 6e 20 61 6c 6c 20 63 6f 70 69 65 ded in all copie 02b0: 73 20 6f 72 20 73 75 62 73 74 61 6e 74 69 61 6c s or substantial 02c0: 20 70 6f 72 74 69 6f 6e 73 20 6f 66 20 74 68 65 portions of the 02d0: 20 53 6f 66 74 77 61 72 65 2e 0a 3b 3b 20 0a 3b Software..;; .; 02e0: 3b 20 54 48 45 20 53 4f 46 54 57 41 52 45 20 49 ; THE SOFTWARE I 02f0: 53 20 50 52 4f 56 49 44 45 44 20 41 53 49 53 2c S PROVIDED ASIS, 0300: 20 57 49 54 48 4f 55 54 20 57 41 52 52 41 4e 54 WITHOUT WARRANT 0310: 59 20 4f 46 20 41 4e 59 20 4b 49 4e 44 2c 0a 3b Y OF ANY KIND,.; 0320: 3b 20 45 58 50 52 45 53 53 20 4f 52 20 49 4d 50 ; EXPRESS OR IMP 0330: 4c 49 45 44 2c 20 49 4e 43 4c 55 44 49 4e 47 20 LIED, INCLUDING 0340: 42 55 54 20 4e 4f 54 20 4c 49 4d 49 54 45 44 20 BUT NOT LIMITED 0350: 54 4f 20 54 48 45 20 57 41 52 52 41 4e 54 49 45 TO THE WARRANTIE 0360: 53 20 4f 46 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 S OF.;; MERCHANT 0370: 41 42 49 4c 49 54 59 2c 20 46 49 54 4e 45 53 53 ABILITY, FITNESS 0380: 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 FOR A PARTICULA 0390: 52 20 50 55 52 50 4f 53 45 20 41 4e 44 0a 3b 3b R PURPOSE AND.;; 03a0: 20 4e 4f 4e 49 4e 46 52 49 4e 47 45 4d 45 4e 54 NONINFRINGEMENT 03b0: 2e 20 49 4e 20 4e 4f 20 45 56 45 4e 54 20 53 48 . IN NO EVENT SH 03c0: 41 4c 4c 20 54 48 45 20 41 55 54 48 4f 52 53 20 ALL THE AUTHORS 03d0: 4f 52 20 43 4f 50 59 52 49 47 48 54 20 48 4f 4c OR COPYRIGHT HOL 03e0: 44 45 52 53 0a 3b 3b 20 42 45 20 4c 49 41 42 4c DERS.;; BE LIABL 03f0: 45 20 46 4f 52 20 41 4e 59 20 43 4c 41 49 4d 2c E FOR ANY CLAIM, 0400: 20 44 41 4d 41 47 45 53 20 4f 52 20 4f 54 48 45 DAMAGES OR OTHE 0410: 52 20 4c 49 41 42 49 4c 49 54 59 2c 20 57 48 45 R LIABILITY, WHE 0420: 54 48 45 52 20 49 4e 20 41 4e 0a 3b 3b 20 41 43 THER IN AN.;; AC 0430: 54 49 4f 4e 20 4f 46 20 43 4f 4e 54 52 41 43 54 TION OF CONTRACT 0440: 2c 20 54 4f 52 54 20 4f 52 20 4f 54 48 45 52 57 , TORT OR OTHERW 0450: 49 53 45 2c 20 41 52 49 53 49 4e 47 20 46 52 4f ISE, ARISING FRO 0460: 4d 2c 20 4f 55 54 20 4f 46 20 4f 52 20 49 4e 0a M, OUT OF OR IN. 0470: 3b 3b 20 43 4f 4e 4e 45 43 54 49 4f 4e 20 57 49 ;; CONNECTION WI 0480: 54 48 20 54 48 45 20 53 4f 46 54 57 41 52 45 20 TH THE SOFTWARE 0490: 4f 52 20 54 48 45 20 55 53 45 20 4f 52 20 4f 54 OR THE USE OR OT 04a0: 48 45 52 20 44 45 41 4c 49 4e 47 53 20 49 4e 20 HER DEALINGS IN 04b0: 54 48 45 0a 3b 3b 20 53 4f 46 54 57 41 52 45 2e THE.;; SOFTWARE. 04c0: 0a 0a 3b 3b 3b 20 53 75 70 70 6f 72 74 20 66 6f ..;;; Support fo 04d0: 72 20 73 75 73 70 65 6e 64 65 64 20 63 6f 6d 70 r suspended comp 04e0: 75 74 61 74 69 6f 6e 73 0a 0a 28 64 65 66 69 6e utations..(defin 04f0: 65 20 63 75 72 72 65 6e 74 2d 73 75 73 70 65 6e e current-suspen 0500: 73 69 6f 6e 2d 6b 65 79 0a 20 20 28 6d 61 6b 65 sion-key. (make 0510: 2d 70 61 72 61 6d 65 74 65 72 0a 20 20 20 28 73 -parameter. (s 0520: 70 72 69 6e 74 66 0a 20 20 20 20 22 7e 61 3a 7e printf. "~a:~ 0530: 61 3a 7e 61 22 0a 20 20 20 20 28 63 75 72 72 65 a:~a". (curre 0540: 6e 74 2d 75 73 65 72 2d 69 64 29 20 28 63 75 72 nt-user-id) (cur 0550: 72 65 6e 74 2d 67 72 6f 75 70 2d 69 64 29 20 28 rent-group-id) ( 0560: 63 75 72 72 65 6e 74 2d 64 69 72 65 63 74 6f 72 current-director 0570: 79 29 29 29 29 0a 0a 28 64 65 66 69 6e 65 20 28 y))))..(define ( 0580: 77 72 61 70 2d 73 75 73 70 65 6e 73 69 6f 6e 20 wrap-suspension 0590: 73 6b 29 0a 20 20 28 6c 65 74 20 28 28 65 76 70 sk). (let ((evp 05a0: 20 28 63 72 65 61 74 65 2d 65 6e 76 65 6c 6f 70 (create-envelop 05b0: 65 20 46 4f 52 4d 41 54 2d 43 52 59 50 54 4c 49 e FORMAT-CRYPTLI 05c0: 42 29 29 29 0a 20 20 20 20 28 64 79 6e 61 6d 69 B))). (dynami 05d0: 63 2d 77 69 6e 64 0a 09 76 6f 69 64 0a 09 28 6c c-wind..void..(l 05e0: 61 6d 62 64 61 20 28 29 0a 09 20 20 28 61 74 74 ambda ().. (att 05f0: 72 69 62 75 74 65 2d 73 65 74 21 20 65 76 70 20 ribute-set! evp 0600: 4f 50 54 49 4f 4e 2d 45 4e 43 52 2d 41 4c 47 4f OPTION-ENCR-ALGO 0610: 20 41 4c 47 4f 2d 41 45 53 29 0a 09 20 20 28 61 ALGO-AES).. (a 0620: 74 74 72 69 62 75 74 65 2d 73 65 74 21 20 65 76 ttribute-set! ev 0630: 70 20 4f 50 54 49 4f 4e 2d 45 4e 43 52 2d 48 41 p OPTION-ENCR-HA 0640: 53 48 20 41 4c 47 4f 2d 53 48 41 32 29 0a 09 20 SH ALGO-SHA2).. 0650: 20 28 61 74 74 72 69 62 75 74 65 2d 73 65 74 21 (attribute-set! 0660: 20 65 76 70 20 4f 50 54 49 4f 4e 2d 45 4e 43 52 evp OPTION-ENCR 0670: 2d 4d 41 43 20 41 4c 47 4f 2d 48 4d 41 43 2d 53 -MAC ALGO-HMAC-S 0680: 48 41 32 29 0a 09 20 20 28 61 74 74 72 69 62 75 HA2).. (attribu 0690: 74 65 2d 73 65 74 21 20 65 76 70 20 45 4e 56 49 te-set! evp ENVI 06a0: 4e 46 4f 2d 49 4e 54 45 47 52 49 54 59 20 49 4e NFO-INTEGRITY IN 06b0: 54 45 47 52 49 54 59 2d 46 55 4c 4c 29 0a 09 20 TEGRITY-FULL).. 06c0: 20 28 61 74 74 72 69 62 75 74 65 2d 73 65 74 21 (attribute-set! 06d0: 2f 73 74 72 69 6e 67 20 65 76 70 20 45 4e 56 49 /string evp ENVI 06e0: 4e 46 4f 2d 50 41 53 53 57 4f 52 44 20 28 63 75 NFO-PASSWORD (cu 06f0: 72 72 65 6e 74 2d 73 75 73 70 65 6e 73 69 6f 6e rrent-suspension 0700: 2d 6b 65 79 29 29 0a 09 20 20 28 61 74 74 72 69 -key)).. (attri 0710: 62 75 74 65 2d 73 65 74 21 20 65 76 70 20 45 4e bute-set! evp EN 0720: 56 49 4e 46 4f 2d 44 41 54 41 53 49 5a 45 20 28 VINFO-DATASIZE ( 0730: 73 74 72 69 6e 67 2d 6c 65 6e 67 74 68 20 73 6b string-length sk 0740: 29 29 0a 09 20 20 28 6c 65 74 20 28 28 70 6f 72 )).. (let ((por 0750: 74 20 28 6f 70 65 6e 2d 6f 75 74 70 75 74 2d 6f t (open-output-o 0760: 62 6a 65 63 74 20 65 76 70 29 29 29 0a 09 20 20 bject evp))).. 0770: 20 20 28 77 72 69 74 65 2d 73 74 72 69 6e 67 20 (write-string 0780: 73 6b 20 23 66 20 70 6f 72 74 29 0a 09 20 20 20 sk #f port).. 0790: 20 28 63 6c 6f 73 65 2d 6f 75 74 70 75 74 2d 70 (close-output-p 07a0: 6f 72 74 20 70 6f 72 74 29 29 0a 09 20 20 28 62 ort port)).. (b 07b0: 61 73 65 36 34 2d 65 6e 63 6f 64 65 20 28 72 65 ase64-encode (re 07c0: 61 64 2d 73 74 72 69 6e 67 20 23 66 20 28 6f 70 ad-string #f (op 07d0: 65 6e 2d 69 6e 70 75 74 2d 6f 62 6a 65 63 74 20 en-input-object 07e0: 65 76 70 20 23 66 20 23 74 29 29 20 23 74 29 29 evp #f #t)) #t)) 07f0: 0a 09 28 6c 61 6d 62 64 61 20 28 29 0a 09 20 20 ..(lambda ().. 0800: 28 64 65 73 74 72 6f 79 2d 6f 62 6a 65 63 74 20 (destroy-object 0810: 65 76 70 29 29 29 29 29 0a 0a 28 64 65 66 69 6e evp)))))..(defin 0820: 65 20 63 72 79 70 74 2d 63 6f 6e 64 69 74 69 6f e crypt-conditio 0830: 6e 3f 0a 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d n?. (condition- 0840: 70 72 65 64 69 63 61 74 65 20 27 63 72 79 70 74 predicate 'crypt 0850: 29 29 0a 0a 28 64 65 66 69 6e 65 20 63 72 79 70 ))..(define cryp 0860: 74 2d 63 6f 6e 64 69 74 69 6f 6e 2d 63 6f 64 65 t-condition-code 0870: 0a 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 70 72 . (condition-pr 0880: 6f 70 65 72 74 79 2d 61 63 63 65 73 73 6f 72 20 operty-accessor 0890: 27 63 72 79 70 74 20 27 63 6f 64 65 20 23 66 29 'crypt 'code #f) 08a0: 29 0a 0a 28 64 65 66 69 6e 65 20 28 75 6e 77 72 )..(define (unwr 08b0: 61 70 2d 73 75 73 70 65 6e 73 69 6f 6e 20 73 6b ap-suspension sk 08c0: 29 0a 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 ). (condition-c 08d0: 61 73 65 0a 20 20 20 28 6c 65 74 20 28 28 65 76 ase. (let ((ev 08e0: 70 20 28 63 72 65 61 74 65 2d 65 6e 76 65 6c 6f p (create-envelo 08f0: 70 65 20 46 4f 52 4d 41 54 2d 41 55 54 4f 29 29 pe FORMAT-AUTO)) 0900: 29 0a 20 20 20 20 20 28 64 79 6e 61 6d 69 63 2d ). (dynamic- 0910: 77 69 6e 64 0a 09 20 76 6f 69 64 0a 09 20 28 6c wind.. void.. (l 0920: 61 6d 62 64 61 20 28 29 0a 09 20 20 20 28 77 69 ambda ().. (wi 0930: 74 68 2d 65 78 63 65 70 74 69 6f 6e 2d 68 61 6e th-exception-han 0940: 64 6c 65 72 0a 09 20 20 20 20 28 6c 65 74 20 28 dler.. (let ( 0950: 28 61 62 6f 72 74 20 28 63 75 72 72 65 6e 74 2d (abort (current- 0960: 65 78 63 65 70 74 69 6f 6e 2d 68 61 6e 64 6c 65 exception-handle 0970: 72 29 29 29 0a 09 20 20 20 20 20 20 28 6c 61 6d r))).. (lam 0980: 62 64 61 20 28 65 78 6e 29 0a 09 09 28 69 66 20 bda (exn)...(if 0990: 28 61 6e 64 20 28 63 72 79 70 74 2d 63 6f 6e 64 (and (crypt-cond 09a0: 69 74 69 6f 6e 3f 20 65 78 6e 29 0a 09 09 09 20 ition? exn).... 09b0: 28 65 71 76 3f 20 28 63 72 79 70 74 2d 63 6f 6e (eqv? (crypt-con 09c0: 64 69 74 69 6f 6e 2d 63 6f 64 65 20 65 78 6e 29 dition-code exn) 09d0: 20 45 4e 56 45 4c 4f 50 45 2d 52 45 53 4f 55 52 ENVELOPE-RESOUR 09e0: 43 45 29 29 0a 09 09 20 20 20 20 28 61 74 74 72 CE))... (attr 09f0: 69 62 75 74 65 2d 73 65 74 21 2f 73 74 72 69 6e ibute-set!/strin 0a00: 67 0a 09 09 20 20 20 20 20 65 76 70 20 45 4e 56 g... evp ENV 0a10: 49 4e 46 4f 2d 50 41 53 53 57 4f 52 44 20 28 63 INFO-PASSWORD (c 0a20: 75 72 72 65 6e 74 2d 73 75 73 70 65 6e 73 69 6f urrent-suspensio 0a30: 6e 2d 6b 65 79 29 29 0a 09 09 20 20 20 20 28 61 n-key))... (a 0a40: 62 6f 72 74 20 65 78 6e 29 29 29 29 0a 09 20 20 bort exn)))).. 0a50: 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 09 20 20 (lambda ().. 0a60: 20 20 20 20 28 6c 65 74 20 28 28 70 6f 72 74 20 (let ((port 0a70: 28 6f 70 65 6e 2d 6f 75 74 70 75 74 2d 6f 62 6a (open-output-obj 0a80: 65 63 74 20 65 76 70 29 29 29 0a 09 09 28 77 72 ect evp)))...(wr 0a90: 69 74 65 2d 73 74 72 69 6e 67 20 28 62 61 73 65 ite-string (base 0aa0: 36 34 2d 64 65 63 6f 64 65 20 73 6b 29 20 23 66 64-decode sk) #f 0ab0: 20 70 6f 72 74 29 0a 09 09 28 63 6c 6f 73 65 2d port)...(close- 0ac0: 6f 75 74 70 75 74 2d 70 6f 72 74 20 70 6f 72 74 output-port port 0ad0: 29 29 0a 09 20 20 20 20 20 20 28 61 6e 64 20 28 )).. (and ( 0ae0: 65 71 76 3f 20 28 61 74 74 72 69 62 75 74 65 20 eqv? (attribute 0af0: 65 76 70 20 45 4e 56 49 4e 46 4f 2d 49 4e 54 45 evp ENVINFO-INTE 0b00: 47 52 49 54 59 29 20 49 4e 54 45 47 52 49 54 59 GRITY) INTEGRITY 0b10: 2d 46 55 4c 4c 29 0a 09 09 20 20 20 28 72 65 61 -FULL)... (rea 0b20: 64 2d 73 74 72 69 6e 67 20 23 66 20 28 6f 70 65 d-string #f (ope 0b30: 6e 2d 69 6e 70 75 74 2d 6f 62 6a 65 63 74 20 65 n-input-object e 0b40: 76 70 20 23 66 20 23 74 29 29 29 29 29 29 0a 09 vp #f #t)))))).. 0b50: 20 28 6c 61 6d 62 64 61 20 28 29 0a 09 20 20 20 (lambda ().. 0b60: 28 64 65 73 74 72 6f 79 2d 6f 62 6a 65 63 74 20 (destroy-object 0b70: 65 76 70 29 29 29 29 0a 20 20 20 20 28 28 65 78 evp)))). ((ex 0b80: 6e 20 63 72 79 70 74 29 20 23 66 29 0a 20 20 20 n crypt) #f). 0b90: 20 28 28 65 78 6e 20 73 79 6e 74 61 78 29 20 23 ((exn syntax) # 0ba0: 66 29 29 29 0a 0a 28 64 65 66 69 6e 65 2d 72 65 f)))..(define-re 0bb0: 73 6f 75 72 63 65 20 28 73 75 73 70 65 6e 64 65 source (suspende 0bc0: 64 20 22 73 75 73 70 65 6e 64 65 64 22 20 73 6b d "suspended" sk 0bd0: 20 70 61 72 61 6d 65 74 65 72 73 29 0a 20 20 28 parameters). ( 0be0: 63 6f 6e 64 0a 20 20 20 28 28 75 6e 77 72 61 70 cond. ((unwrap 0bf0: 2d 73 75 73 70 65 6e 73 69 6f 6e 20 73 6b 29 0a -suspension sk). 0c00: 20 20 20 20 3d 3e 20 28 63 75 74 20 63 6f 6e 74 => (cut cont 0c10: 69 6e 75 61 74 69 6f 6e 2d 72 65 73 75 6d 65 20 inuation-resume 0c20: 3c 3e 20 70 61 72 61 6d 65 74 65 72 73 29 29 0a <> parameters)). 0c30: 20 20 20 28 65 6c 73 65 0a 20 20 20 20 28 6d 61 (else. (ma 0c40: 6b 65 2d 65 72 72 6f 72 2d 72 65 73 70 6f 6e 73 ke-error-respons 0c50: 65 0a 20 20 20 20 20 34 30 34 20 22 54 68 65 20 e. 404 "The 0c60: 72 65 71 75 65 73 74 65 64 20 73 75 73 70 65 6e requested suspen 0c70: 64 65 64 20 72 65 73 6f 75 72 63 65 20 77 61 73 ded resource was 0c80: 20 6e 6f 74 20 66 6f 75 6e 64 20 6f 6e 20 74 68 not found on th 0c90: 65 20 73 65 72 76 65 72 2e 22 29 29 29 29 0a 0a e server.")))).. 0ca0: 28 64 65 66 69 6e 65 20 28 73 65 6e 64 2f 73 75 (define (send/su 0cb0: 73 70 65 6e 64 20 70 72 6f 63 29 0a 20 20 28 63 spend proc). (c 0cc0: 6f 6e 74 69 6e 75 61 74 69 6f 6e 2d 73 75 73 70 ontinuation-susp 0cd0: 65 6e 64 0a 20 20 20 28 6c 61 6d 62 64 61 20 28 end. (lambda ( 0ce0: 73 6b 29 0a 20 20 20 20 20 28 70 72 6f 63 20 28 sk). (proc ( 0cf0: 72 65 73 6f 75 72 63 65 2d 75 72 69 20 73 75 73 resource-uri sus 0d00: 70 65 6e 64 65 64 20 28 77 72 61 70 2d 73 75 73 pended (wrap-sus 0d10: 70 65 6e 73 69 6f 6e 20 73 6b 29 29 29 29 29 29 pension sk)))))) 0d20: 0a .