;ELC   
;;; Compiled
;;; in Emacs version 28.2
;;; with all optimizations.



(byte-code "\300\301!\210\300\302!\210\300\303!\207" [require rng-pttrn rng-util rng-dt] 2)
(defvar rng-not-allowed-ipattern nil)
(defvar rng-empty-ipattern nil)
(defvar rng-text-ipattern nil)
(defvar rng-compile-table nil)
#@104 Contains a list of ref patterns currently being compiled.
Used to detect invalid recursive references.
(defvar rng-being-compiled nil (#$ . 309))
(defvar rng-ipattern-table nil)
(defvar rng-last-ipattern-index nil)
#@59 An ipattern representing the current state of validation.
(defvar rng-match-state nil (#$ . 530))
#@18 

(fn NEW-STATE)
(defalias 'rng-update-match-state #[257 "\211=\203\n 	=\207\211\302\207" [rng-not-allowed-ipattern rng-match-state t] 3 (#$ . 634)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put rng-update-match-state speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@75 compiler-macro for inlining `rng--ipattern-type'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-type--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-type (progn (aref cl-x 0))) nil] 9 (#$ . 941)])
(put 'rng--ipattern-type 'compiler-macro 'rng--ipattern-type--cmacro)
#@63 Access slot "type" of `rng--ipattern' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-type #[257 "\211\300H\207" [0] 3 (#$ . 1270)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-type side-effect-free t] 4)
#@76 compiler-macro for inlining `rng--ipattern-index'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-index--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-index (progn (aref cl-x 1))) nil] 9 (#$ . 1505)])
(put 'rng--ipattern-index 'compiler-macro 'rng--ipattern-index--cmacro)
#@64 Access slot "index" of `rng--ipattern' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-index #[257 "\211\300H\207" [1] 3 (#$ . 1840)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-index side-effect-free t] 4)
#@81 compiler-macro for inlining `rng--ipattern-name-class'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-name-class--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-name-class (progn (aref cl-x 2))) nil] 9 (#$ . 2078)])
(put 'rng--ipattern-name-class 'compiler-macro 'rng--ipattern-name-class--cmacro)
#@69 Access slot "name-class" of `rng--ipattern' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-name-class #[257 "\211\300H\207" [2] 3 (#$ . 2438)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-name-class side-effect-free t] 4)
#@76 compiler-macro for inlining `rng--ipattern-child'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-child--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-child (progn (aref cl-x 3))) nil] 9 (#$ . 2691)])
(put 'rng--ipattern-child 'compiler-macro 'rng--ipattern-child--cmacro)
#@64 Access slot "child" of `rng--ipattern' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-child #[257 "\211\300H\207" [3] 3 (#$ . 3026)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-child side-effect-free t] 4)
#@79 compiler-macro for inlining `rng--ipattern-nullable'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-nullable--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-nullable (progn (aref cl-x 4))) nil] 9 (#$ . 3264)])
(put 'rng--ipattern-nullable 'compiler-macro 'rng--ipattern-nullable--cmacro)
#@67 Access slot "nullable" of `rng--ipattern' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-nullable #[257 "\211\300H\207" [4] 3 (#$ . 3614)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-nullable side-effect-free t] 4)
#@86 compiler-macro for inlining `rng--ipattern-memo-text-typed'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-memo-text-typed--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-memo-text-typed (progn (aref cl-x 5))) nil] 9 (#$ . 3861)])
(put 'rng--ipattern-memo-text-typed 'compiler-macro 'rng--ipattern-memo-text-typed--cmacro)
#@74 Access slot "memo-text-typed" of `rng--ipattern' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-memo-text-typed #[257 "\211\300H\207" [5] 3 (#$ . 4246)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-memo-text-typed side-effect-free t] 4)
#@100 compiler-macro for inlining `rng--ipattern-memo-map-start-tag-open-deriv'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-memo-map-start-tag-open-deriv--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-memo-map-start-tag-open-deriv (progn (aref cl-x 6))) nil] 9 (#$ . 4515)])
(put 'rng--ipattern-memo-map-start-tag-open-deriv 'compiler-macro 'rng--ipattern-memo-map-start-tag-open-deriv--cmacro)
#@88 Access slot "memo-map-start-tag-open-deriv" of `rng--ipattern' struct
CL-X.

(fn CL-X)
(defalias 'rng--ipattern-memo-map-start-tag-open-deriv #[257 "\211\300H\207" [6] 3 (#$ . 4970)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-memo-map-start-tag-open-deriv side-effect-free t] 4)
#@101 compiler-macro for inlining `rng--ipattern-memo-map-start-attribute-deriv'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-memo-map-start-attribute-deriv--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-memo-map-start-attribute-deriv (progn (aref cl-x 7))) nil] 9 (#$ . 5281)])
(put 'rng--ipattern-memo-map-start-attribute-deriv 'compiler-macro 'rng--ipattern-memo-map-start-attribute-deriv--cmacro)
#@89 Access slot "memo-map-start-attribute-deriv" of `rng--ipattern' struct
CL-X.

(fn CL-X)
(defalias 'rng--ipattern-memo-map-start-attribute-deriv #[257 "\211\300H\207" [7] 3 (#$ . 5741)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-memo-map-start-attribute-deriv side-effect-free t] 4)
#@97 compiler-macro for inlining `rng--ipattern-memo-start-tag-close-deriv'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-memo-start-tag-close-deriv--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-memo-start-tag-close-deriv (progn (aref cl-x 8))) nil] 9 (#$ . 6054)])
(put 'rng--ipattern-memo-start-tag-close-deriv 'compiler-macro 'rng--ipattern-memo-start-tag-close-deriv--cmacro)
#@85 Access slot "memo-start-tag-close-deriv" of `rng--ipattern' struct
CL-X.

(fn CL-X)
(defalias 'rng--ipattern-memo-start-tag-close-deriv #[257 "\211\300H\207" [8] 3 (#$ . 6494)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-memo-start-tag-close-deriv side-effect-free t] 4)
#@91 compiler-macro for inlining `rng--ipattern-memo-text-only-deriv'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-memo-text-only-deriv--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-memo-text-only-deriv (progn (aref cl-x 9))) nil] 9 (#$ . 6795)])
(put 'rng--ipattern-memo-text-only-deriv 'compiler-macro 'rng--ipattern-memo-text-only-deriv--cmacro)
#@79 Access slot "memo-text-only-deriv" of `rng--ipattern' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-memo-text-only-deriv #[257 "\211\300H\207" [9] 3 (#$ . 7205)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-memo-text-only-deriv side-effect-free t] 4)
#@92 compiler-macro for inlining `rng--ipattern-memo-mixed-text-deriv'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-memo-mixed-text-deriv--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-memo-mixed-text-deriv (progn (aref cl-x 10))) nil] 9 (#$ . 7488)])
(put 'rng--ipattern-memo-mixed-text-deriv 'compiler-macro 'rng--ipattern-memo-mixed-text-deriv--cmacro)
#@80 Access slot "memo-mixed-text-deriv" of `rng--ipattern' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-memo-mixed-text-deriv #[257 "\211\300H\207" [10] 3 (#$ . 7904)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-memo-mixed-text-deriv side-effect-free t] 4)
#@90 compiler-macro for inlining `rng--ipattern-memo-map-data-deriv'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-memo-map-data-deriv--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-memo-map-data-deriv (progn (aref cl-x 11))) nil] 9 (#$ . 8191)])
(put 'rng--ipattern-memo-map-data-deriv 'compiler-macro 'rng--ipattern-memo-map-data-deriv--cmacro)
#@78 Access slot "memo-map-data-deriv" of `rng--ipattern' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-memo-map-data-deriv #[257 "\211\300H\207" [11] 3 (#$ . 8597)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-memo-map-data-deriv side-effect-free t] 4)
#@89 compiler-macro for inlining `rng--ipattern-memo-end-tag-deriv'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-memo-end-tag-deriv--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-memo-end-tag-deriv (progn (aref cl-x 12))) nil] 9 (#$ . 8878)])
(put 'rng--ipattern-memo-end-tag-deriv 'compiler-macro 'rng--ipattern-memo-end-tag-deriv--cmacro)
#@77 Access slot "memo-end-tag-deriv" of `rng--ipattern' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-memo-end-tag-deriv #[257 "\211\300H\207" [12] 3 (#$ . 9279)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-memo-end-tag-deriv side-effect-free t] 4)
#@106 compiler-macro for inlining `rng-make-ipattern'.

(fn CL-WHOLE-ARG TYPE INDEX NAME-CLASS CHILD NULLABLE)
(defalias 'rng-make-ipattern--cmacro #[1542 "\300\301\302\303\211\211\n\n\n\n\n&\n\207" [cl--defsubst-expand (type index name-class child nullable) (cl-block rng-make-ipattern (vector type index name-class child nullable 'unknown nil nil nil nil nil nil nil)) nil] 17 (#$ . 9558)])
(put 'rng-make-ipattern 'compiler-macro 'rng-make-ipattern--cmacro)
#@93 Constructor for objects of type `rng--ipattern'.

(fn TYPE INDEX NAME-CLASS CHILD NULLABLE)
(defalias 'rng-make-ipattern #[1285 "\300\301\302\211\211\211\211\211\211&\207" [vector unknown nil] 19 (#$ . 10024)])
(byte-code "\300\301\302\303#\304\305\306\211\307\306\310\311\305\306&	\210\312\313\314\"\210\312\315\314\"\210\312\316\317\"\207" [function-put rng-make-ipattern side-effect-free t cl-struct-define rng--ipattern nil vector ((type) (index) (name-class) (child) (nullable) (memo-text-typed 'unknown) (memo-map-start-tag-open-deriv) (memo-map-start-attribute-deriv) (memo-start-tag-close-deriv) (memo-text-only-deriv) (memo-mixed-text-deriv) (memo-map-data-deriv) (memo-end-tag-deriv)) cl-struct-rng--ipattern-tags defalias rng--ipattern-datatype rng--ipattern-name-class rng--ipattern-after rng--ipattern-value-object rng--ipattern-child] 11)
(defconst rng-memo-map-alist-max 10)
#@67 Return the value associated with KEY in memo-map MM.

(fn KEY MM)
(defalias 'rng-memo-map-get #[514 "\300\"\211\203 \211A\207\205 @\301!\205 \302\"\262\207" [assoc hash-table-p gethash] 7 (#$ . 10926)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put rng-memo-map-get speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@828 Associate KEY with VALUE in memo-map MM and return the new memo-map.
The new memo-map may or may not be a different object from MM.

Alists are better for small maps.  Hash tables are better for large
maps.  A memo-map therefore starts off as an alist and switches to a
hash table for large memo-maps.  A memo-map is always a list.  An empty
memo-map is represented by nil.  A large memo-map is represented by a
list containing just a hash-table.  A small memo map is represented by
a list whose cdr is an alist and whose car is the number of entries in
the alist.  The complete memo-map can be passed to `assoc' without
problems: assoc ignores any members that are not cons cells.  There is
therefore minimal overhead in successful lookups on small lists
(which is the most common case).

(fn KEY VALUE MM &optional WEAKNESS)
(defalias 'rng-memo-map-add #[1027 "\204\n \301BD\207@\302!\203 \303#\210\207\211Y\203I \304\305\306\307\310\311_&A\262\203F @\262\303@A#\210A\262\202/ \211C\207\211TBABB\207" [rng-memo-map-alist-max 1 hash-table-p puthash make-hash-table :test equal :weakness :size 2] 13 (#$ . 11289)])
(defalias 'rng-ipattern-maybe-init #[0 "?\205 \302\303\304\"\305\211\207" [rng-ipattern-table rng-last-ipattern-index make-hash-table :test equal -1] 3])
(defalias 'rng-ipattern-clear #[0 "\203 \302!\210\303\211\207" [rng-ipattern-table rng-last-ipattern-index clrhash -1] 2])
(defalias 'rng-gen-ipattern-index #[0 "T\211\207" [rng-last-ipattern-index] 2])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put rng-gen-ipattern-index speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@43 

(fn KEY TYPE NAME-CLASS CHILD NULLABLE)
(defalias 'rng-put-ipattern #[1285 "T\211\302\303\304\211\211\211\211\211\211&\262\305	#\210\207" [rng-last-ipattern-index rng-ipattern-table vector unknown nil puthash] 20 (#$ . 12952)])
#@12 

(fn KEY)
(defalias 'rng-get-ipattern #[257 "\301\"\207" [rng-ipattern-table gethash] 4 (#$ . 13203)])
(byte-code "\204 \303\304\305\306\211\211\307\306\211\211\211\211\211\211&	\204* \303\310\311\306\211\312\307\306\211\211\211\211\211\211&\n\204? \303\313\314\306\211\312\307\306\211\211\211\211\211\211&\306\207" [rng-not-allowed-ipattern rng-empty-ipattern rng-text-ipattern vector not-allowed -3 nil unknown empty -2 t text -1] 14)
(defconst rng-const-ipatterns (list rng-not-allowed-ipattern rng-empty-ipattern rng-text-ipattern))
#@20 

(fn CHILD AFTER)
(defalias 'rng-intern-after #[514 "=\203 \207\301\302H\302HE\303!\206 \304\301\305%\207" [rng-not-allowed-ipattern after 1 rng-get-ipattern rng-put-ipattern nil] 9 (#$ . 13757)])
#@28 

(fn NAME-CLASS IPATTERN)
(defalias 'rng-intern-attribute #[514 "\211=\203 \207\301\302HE\303!\206 \304\301\305%\207" [rng-not-allowed-ipattern attribute 1 rng-get-ipattern rng-put-ipattern nil] 9 (#$ . 13973)])
#@28 

(fn DT MATCHES-ANYTHING)
(defalias 'rng-intern-data #[514 "\300D\301!\206 \302\300\303%\211\304?I\210\211\262\207" [data rng-get-ipattern rng-put-ipattern nil 5] 9 (#$ . 14202)])
#@20 

(fn DT IPATTERN)
(defalias 'rng-intern-data-except #[514 "\300E\301!\206 \302\300\303%\207" [data-except rng-get-ipattern rng-put-ipattern nil] 9 (#$ . 14398)])
#@15 

(fn DT OBJ)
(defalias 'rng-intern-value #[514 "\300E\301!\206 \302\300\303%\207" [value rng-get-ipattern rng-put-ipattern nil] 9 (#$ . 14574)])
#@17 

(fn IPATTERN)
(defalias 'rng-intern-one-or-more #[257 "\300!\206 \301\302HCB\303!\206 \304\301\305\211\306H%\262\207" [rng-intern-one-or-more-shortcut one-or-more 1 rng-get-ipattern rng-put-ipattern nil 4] 9 (#$ . 14733)])
#@17 

(fn IPATTERN)
(defalias 'rng-intern-one-or-more-shortcut #[257 "\211=\203 \207\211	=\203 	\207\211\302H\303=\203 \207\304\207" [rng-not-allowed-ipattern rng-empty-ipattern 0 one-or-more nil] 3 (#$ . 14972)])
#@17 

(fn IPATTERN)
(defalias 'rng-intern-list #[257 "\211=\203 \207\301\302HCB\303!\206 \304\301\305\305%\207" [rng-not-allowed-ipattern list 1 rng-get-ipattern rng-put-ipattern nil] 8 (#$ . 15193)])
#@80 Return an ipattern for the list of group members in IPATTERNS.

(fn IPATTERNS)
(defalias 'rng-intern-group #[257 "\300!\206* \301!\211A\300!\206( \302\303\304\"B\305!\206& \306\302\307@%\262\266\202\207" [rng-intern-group-shortcut rng-normalize-group-list group mapcar rng--ipattern-index rng-get-ipattern rng-put-ipattern nil] 10 (#$ . 15404)])
#@124 Try to shortcut interning a group list.
If successful, return the interned pattern.  Otherwise return nil.

(fn IPATTERNS)
(defalias 'rng-intern-group-shortcut #[257 "\211\203 \211@=\203 \211A\262\202  \211\203S \211@\211	=\203  	\207A\262\203R \211\203R @\211	=\203> \211\262\302\262\210\202$ \211=\203L A\262\210\202$ \266\302\202$ \207\207" [rng-empty-ipattern rng-not-allowed-ipattern nil] 5 (#$ . 15767)])
#@228 Normalize a list containing members of a group.
Expands nested groups, removes empty members, handles notAllowed.
Returns a pair whose car says whether the list is nullable and whose
cdr is the normalized list.

(fn IPATTERNS)
(defalias 'rng-normalize-group-list #[257 "\302\303\211\203J @\262A\262\203 \211\304H\262\211\305H\306=\203, \307\310H!\244\262\202 \211=\203< C\262\303\262\202 \211	=\204 \211B\262\202 \237B\207" [rng-not-allowed-ipattern rng-empty-ipattern t nil 4 0 group reverse 3] 7 (#$ . 16200)])
#@18 

(fn IPATTERNS)
(defalias 'rng-intern-interleave #[257 "\300!\206* \301!\211A\300!\206( \302\303\304\"B\305!\206& \306\302\307@%\262\266\202\207" [rng-intern-group-shortcut rng-normalize-interleave-list interleave mapcar rng--ipattern-index rng-get-ipattern rng-put-ipattern nil] 10 (#$ . 16742)])
#@234 Normalize a list containing members of an interleave.
Expands nested groups, removes empty members, handles notAllowed.
Returns a pair whose car says whether the list is nullable and whose
cdr is the normalized list.

(fn IPATTERNS)
(defalias 'rng-normalize-interleave-list #[257 "\302\303\211\203I @\262A\262\203 \211\304H\262\211\305H\306=\203+ \307\310H\"\262\202 \211=\203; C\262\303\262\202 \211	=\204 \211B\262\202 \311\312\"B\207" [rng-not-allowed-ipattern rng-empty-ipattern t nil 4 0 interleave append 3 sort rng-compare-ipattern] 8 (#$ . 17058)])
#@101 Return a choice ipattern for the list of choices in IPATTERNS.
May alter IPATTERNS.

(fn IPATTERNS)
(defalias 'rng-intern-choice #[257 "\300!\206 \301!\211A\300!\206 \302@\"\266\202\207" [rng-intern-choice-shortcut rng-normalize-choice-list rng-intern-choice1] 6 (#$ . 17645)])
#@17 

(fn IPATTERN)
(defalias 'rng-intern-optional #[257 "\211\302H\203 \207\211=\203 	\207\303	\304H\305=\203 \306H\202! CB\307\"\207" [rng-not-allowed-ipattern rng-empty-ipattern 4 rng-intern-choice1 0 choice 3 t] 5 (#$ . 17936)])
#@28 

(fn NORMALIZED NULLABLE)
(defalias 'rng-intern-choice1 #[514 "\300\301\302\"B\303!\206 \304\300\305%\207" [choice mapcar rng--ipattern-index rng-get-ipattern rng-put-ipattern nil] 9 (#$ . 18178)])
#@125 Try to shortcut interning a choice list.
If successful, return the interned pattern.  Otherwise return nil.

(fn IPATTERNS)
(defalias 'rng-intern-choice-shortcut #[257 "\211\203 \211@=\203 \211A\262\202  \211\203= \211@A\262\203< \211\203< @=\2045 @=\2045 \301\262A\262\202 \207\207" [rng-not-allowed-ipattern nil] 4 (#$ . 18392)])
#@235 Normalize a list of choices.
Expands nested choices, removes not-allowed members, sorts by index
and removes duplicates.  Return a pair whose car says whether the
list is nullable and whose cdr is the normalized list.

(fn IPATTERNS)
(defalias 'rng-normalize-choice-list #[257 "\301\302\211B\211\302\303\302\203\205 @\262\204 \211\304H\262\211\305H\306=\203; \307\310H\"\262A\262\302\262\241\210\202 \211=\203L A\262\241\210\202 \203{ \211\311HY\203g U\206k \302\211\262\n\202k \211\262\302\262\203{ A\262\241\210\202 \262A\262\202 \241\266\211A\262\203\227 \202\236 \312\313\314\"\315\"B\207" [rng-not-allowed-ipattern t nil -100 4 0 choice append 3 1 seq-uniq sort rng-compare-ipattern eq] 12 (#$ . 18747)])
#@14 

(fn P1 P2)
(defalias 'rng-compare-ipattern #[514 "\300H\300HW\207" [1] 5 (#$ . 19514)])
#@14 

(fn NC NM)
(defalias 'rng-name-class-contains #[514 ":\203	 \211\232\207\300\"\207" [rng-name-class-contains1] 5 (#$ . 19612)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put rng-name-class-contains speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@14 

(fn NC NM)
(defalias 'rng-name-class-contains1 #[514 "\300H\211\301\267\202 \302\207\303H:\203 \211\232\266\202\202\" \304\"\266\202?\207@\303H=\207@\303H=\205\200 \305H:\203E \211\232\266\202\202K \304\"\266\202?\207\303H\306\203~ @:\203e \211\232\266\202\202k \304\"\266\202\203w \306\262\302\262\202Q A\262\202Q \207\306\207" [0 #s(hash-table size 5 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (any-name 9 any-name-except 11 ns-name 36 ns-name-except 43 choice 77)) t 1 rng-name-class-contains1 2 nil] 10 (#$ . 19901)])
#@380 Return a list of possible names that nameclass NC can match.

Each possible name should be returned as a (NAMESPACE . LOCAL-NAME)
pair, where NAMESPACE is a symbol or nil and LOCAL-NAME is a string.
NAMESPACE, if nil, matches the absent namespace.  ACCUM is a list of
names which should be appended to the returned list.  The returned
list may contain duplicates.

(fn NC ACCUM)
(defalias 'rng-name-class-possible-names #[514 ":\203	 B\207\300H\301=\2037 \302H\303\2035 @\262\211:\203( \211B\202, \304\"\262A\262\202 \266\207" [0 choice 1 nil rng-name-class-possible-names] 7 (#$ . 20484)])
#@17 

(fn IPATTERN)
(defalias 'rng-ipattern-to-string #[257 "\211\300H\211\301\267\202^ \302\303H!\304\302\305!!Q\207\306\307\310H!\311Q\207\312\307\310H!\313\302\303H!\314\260\207\315\207\316\207\317\207\302\303H!\320P\207\321\322\302\303H\323#\324Q\207\321\322\302\303H\325#\324Q\207\321\322\302\303H\326#\324Q\207\327!\207" [0 #s(hash-table size 10 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (after 9 element 22 attribute 31 empty 47 text 49 not-allowed 51 one-or-more 53 choice 61 group 72 interleave 83)) rng-ipattern-to-string 3 " </> " rng--ipattern-after "element " rng-name-class-to-string 2 " {...}" "attribute " " { " " } " "empty" "text" "notAllowed" "+" "(" mapconcat " | " ")" ", " " & " symbol-name] 8 (#$ . 21097)])
#@11 

(fn NC)
(defalias 'rng-name-class-to-string #[257 "\211:\203 \211A\207\211\300H\211\301=\203 \302\303\304H\305#\207\306!\307P\207" [0 choice mapconcat rng-name-class-to-string 1 "|" symbol-name "*"] 6 (#$ . 21863)])
(defalias 'rng-compile-maybe-init #[0 "?\205 \301\302\303\"\211\207" [rng-compile-table make-hash-table :test eq] 3])
(defalias 'rng-compile-clear #[0 "\205 \301!\207" [rng-compile-table clrhash] 2])
#@16 

(fn PATTERN)
(defalias 'rng-compile #[257 "\301\"\206 \302@\303NA\"\304#\210\211\262\207" [rng-compile-table gethash apply rng-compile puthash] 6 (#$ . 22297)])
(byte-code "\300\301\302\303#\210\300\304\302\305#\210\300\306\302\307#\210\300\310\302\311#\210\300\312\302\313#\210\300\314\302\315#\210\300\316\302\317#\210\300\320\302\321#\210\300\322\302\323#\210\300\324\302\325#\210\300\326\302\327#\210\300\330\302\331#\210\300\332\302\333#\210\300\334\302\335#\210\300\336\302\337#\210\300\340\302\341#\210\300\342\302\343#\207" [put empty rng-compile rng-compile-empty text rng-compile-text not-allowed rng-compile-not-allowed element rng-compile-element attribute rng-compile-attribute choice rng-compile-choice optional rng-compile-optional group rng-compile-group interleave rng-compile-interleave ref rng-compile-ref one-or-more rng-compile-one-or-more zero-or-more rng-compile-zero-or-more mixed rng-compile-mixed data rng-compile-data data-except rng-compile-data-except value rng-compile-value list rng-compile-list] 4)
(defalias 'rng-compile-not-allowed #[0 "\207" [rng-not-allowed-ipattern] 1])
(defalias 'rng-compile-empty #[0 "\207" [rng-empty-ipattern] 1])
(defalias 'rng-compile-text #[0 "\207" [rng-text-ipattern] 1])
#@27 

(fn NAME-CLASS PATTERN)
(defalias 'rng-compile-element #[514 "T\211\301!\302\303\304\305\304\211\211\211\211\211\211&\207" [rng-last-ipattern-index rng-compile-name-class vector element nil unknown] 18 (#$ . 23553)])
#@16 

(fn ELEMENT)
(defalias 'rng-element-get-child #[257 "\211\300H\301!\203\n \207\300\302!I\207" [3 vectorp rng-compile] 6 (#$ . 23786)])
#@27 

(fn NAME-CLASS PATTERN)
(defalias 'rng-compile-attribute #[514 "\300\301!\302!\"\207" [rng-intern-attribute rng-compile-name-class rng-compile] 6 (#$ . 23932)])
#@21 

(fn PATTERN NAME)
(defalias 'rng-compile-ref #[514 ">\203 \301\302\"\210B\303\216\304!)\207" [rng-being-compiled rng-compile-error "Reference loop on symbol %s" #[0 "A\211\207" [rng-being-compiled] 2] rng-compile] 5 (#$ . 24103)])
#@16 

(fn PATTERN)
(defalias 'rng-compile-one-or-more #[257 "\300\301!!\207" [rng-intern-one-or-more rng-compile] 4 (#$ . 24352)])
#@16 

(fn PATTERN)
(defalias 'rng-compile-zero-or-more #[257 "\300\301\302!!!\207" [rng-intern-optional rng-intern-one-or-more rng-compile] 5 (#$ . 24486)])
#@16 

(fn PATTERN)
(defalias 'rng-compile-optional #[257 "\300\301!!\207" [rng-intern-optional rng-compile] 4 (#$ . 24646)])
#@16 

(fn PATTERN)
(defalias 'rng-compile-mixed #[257 "\301\302!CB!\207" [rng-text-ipattern rng-intern-interleave rng-compile] 5 (#$ . 24774)])
#@16 

(fn PATTERN)
(defalias 'rng-compile-list #[257 "\300\301!!\207" [rng-intern-list rng-compile] 4 (#$ . 24922)])
#@23 

(fn &rest PATTERNS)
(defalias 'rng-compile-choice #[128 "\300\301\302\"!\207" [rng-intern-choice mapcar rng-compile] 5 (#$ . 25042)])
#@23 

(fn &rest PATTERNS)
(defalias 'rng-compile-group #[128 "\300\301\302\"!\207" [rng-intern-group mapcar rng-compile] 5 (#$ . 25185)])
#@23 

(fn &rest PATTERNS)
(defalias 'rng-compile-interleave #[128 "\300\301\302\"!\207" [rng-intern-interleave mapcar rng-compile] 5 (#$ . 25326)])
#@20 

(fn NAME PARAMS)
(defalias 'rng-compile-dt #[514 "\301@\211\302N\206 \301\303\"\262A\")\207" [rng-dt-error-reporter rng-compile-error rng-dt-compile "Unknown datatype library %s"] 6 (#$ . 25477)])
#@20 

(fn NAME PARAMS)
(defalias 'rng-compile-data #[514 "\300\"\301A@\"\207" [rng-compile-dt rng-intern-data] 6 (#$ . 25689)])
#@28 

(fn NAME PARAMS PATTERN)
(defalias 'rng-compile-data-except #[771 "\300\301\"A\302!\"\207" [rng-intern-data-except rng-compile-dt rng-compile] 7 (#$ . 25823)])
#@25 

(fn NAME STR CONTEXT)
(defalias 'rng-compile-value #[771 "\301\302\"A\303D\211\304@AB\"\266\202\211\203  \305\"\202& \306\307#)\207" [rng-dt-namespace-context-getter rng-compile-dt nil identity apply rng-intern-value rng-compile-error "Value %s is not a valid instance of the datatype %s"] 10 (#$ . 25994)])
#@11 

(fn NC)
(defalias 'rng-compile-name-class #[257 "\211@\211\300\267\2024 A@\207\301\207\302\303\304A@!\"\207\302\305A@\"\207\302\306A@\304\3078!#\207\302\310\311\304A\"\"\207\312\313\"\207" [#s(hash-table size 6 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (name 8 any-name 12 any-name-except 14 ns-name 23 ns-name-except 30 choice 43)) [any-name] vector any-name-except rng-compile-name-class ns-name ns-name-except 2 choice mapcar error "Bad name-class type %s"] 8 (#$ . 26322)])
#@42 

(fn FUNCTION PATTERN ACCUM &rest ARGS)
(defalias 'rng-map-element-attribute #[899 "\300\301\302\"\303\211\211@\262\304\267\202^ \305BB\"\262\3068\262\202a A@\262\307\"\203= \303\262\202a \310\311#\210\202a AB\262\303\262\202a A@\262\202a \303\262\204 \211\203u \211@\262\211A\262\202 \203\214 @\262A\262\211@\262\211A\262\202 \207" [make-hash-table :test eq nil #s(hash-table size 10 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (element 18 attribute 18 ref 41 choice 72 group 72 interleave 72 one-or-more 85 zero-or-more 85 optional 85 mixed 85)) apply 2 gethash puthash t] 13 (#$ . 26838)])
#@27 

(fn PATTERN ACCUM NAME)
(defalias 'rng-find-element-content-pattern #[771 "@\300=\203 \301A@\"\203 \302\3038!B\207\207" [element rng-search-name rng-compile 2] 6 (#$ . 27509)])
#@16 

(fn NAME NC)
(defalias 'rng-search-name #[514 "\211@\211\300\267\202/ A@\232\207A\301\203. \211\204. \302@\"\203' \303\262\202 A\262\202 \207\301\207" [#s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (name 8 choice 14)) nil rng-search-name t] 8 (#$ . 27702)])
#@17 

(fn NC ACCUM)
(defalias 'rng-find-name-class-uris #[514 "@\211\300\267\202. \301A@@\"\207\301A@\"\207A\211\203+ \302@\"\262\211A\262\202 \210\207\207" [#s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (name 8 ns-name 16 ns-name-except 16 choice 23)) rng-accum-namespace-uri rng-find-name-class-uris] 7 (#$ . 28018)])
#@17 

(fn NS ACCUM)
(defalias 'rng-accum-namespace-uri #[514 "\203 >\204 B\207\207" [] 4 (#$ . 28392)])
#@17 

(fn IPATTERN)
(defalias 'rng-ipattern-text-typed-p #[257 "\211\300H\211\301=\203 \300\302!I\207\207" [5 unknown rng-ipattern-compute-text-typed-p] 6 (#$ . 28505)])
#@17 

(fn IPATTERN)
(defalias 'rng-ipattern-compute-text-typed-p #[257 "\211\300H\211\301\267\202Y \302H\303\203) \211\204) \304@!\203\" \305\262\202 A\262\202 \207\302H\303\211\203Q \204Q @\262\304!\203D \305\262\211\306H\205L A\262\202/ \207\304\302H!\207\211\307>\205` \305\207" [0 #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (choice 9 group 42 after 83)) 3 nil rng-ipattern-text-typed-p t 4 (value list data data-except)] 7 (#$ . 28680)])
#@20 

(fn IPATTERN NM)
(defalias 'rng-start-tag-open-deriv #[514 "\211\300H\301\"\211\203 \211A\266\203\202' \205% @\302!\205# \303\"\262\266\203\2062 \304\305\"#\207" [6 assoc hash-table-p gethash rng-ipattern-memo-start-tag-open-deriv rng-compute-start-tag-open-deriv] 9 (#$ . 29185)])
#@26 

(fn IPATTERN NM DERIV)
(defalias 'rng-ipattern-memo-start-tag-open-deriv #[771 ">\204 \301\302\301H#I\210\207" [rng-const-ipatterns 6 rng-memo-map-add] 10 (#$ . 29489)])
#@20 

(fn IPATTERN NM)
(defalias 'rng-compute-start-tag-open-deriv #[514 "\302H\211\303\267\202j \304\305\306\"\"\207\307H:\203\" \211\232\266\202\202( \310\"\266\202\2032 \311\312!\"\207	\207\313\305\314\"\315#\207\316\305\317\"\320#\207\321!\322\305\323\"\324\325H\"\"\207\326!\322\305\327\"\324\325H\"\"\207	\207" [rng-empty-ipattern rng-not-allowed-ipattern 0 #s(hash-table size 6 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (choice 9 element 17 group 52 interleave 61 one-or-more 70 after 88)) rng-transform-choice make-closure #[257 "\301\300\"\207" [V0 rng-start-tag-open-deriv] 4 "\n\n(fn P)"] 2 rng-name-class-contains1 rng-intern-after rng-element-get-child rng-transform-group-nullable #[257 "\301\300\"\207" [V0 rng-start-tag-open-deriv] 4 "\n\n(fn P)"] rng-cons-group-after rng-transform-interleave-single #[257 "\301\300\"\207" [V0 rng-start-tag-open-deriv] 4 "\n\n(fn P)"] rng-subst-interleave-after rng-intern-optional rng-apply-after #[257 "\301\300D!\207" [V0 rng-intern-group] 4 "\n\n(fn P)"] rng-start-tag-open-deriv 3 rng--ipattern-after #[257 "\301\300\"\207" [V0 rng-intern-after] 4 "\n\n(fn P)"]] 9 (#$ . 29675)])
#@20 

(fn IPATTERN NM)
(defalias 'rng-start-attribute-deriv #[514 "\211\300H\301\"\211\203 \211A\266\203\202' \205% @\302!\205# \303\"\262\266\203\2062 \304\305\"#\207" [7 assoc hash-table-p gethash rng-ipattern-memo-start-attribute-deriv rng-compute-start-attribute-deriv] 9 (#$ . 30867)])
#@26 

(fn IPATTERN NM DERIV)
(defalias 'rng-ipattern-memo-start-attribute-deriv #[771 ">\204 \301\302\301H#I\210\207" [rng-const-ipatterns 7 rng-memo-map-add] 10 (#$ . 31174)])
#@20 

(fn IPATTERN NM)
(defalias 'rng-compute-start-attribute-deriv #[514 "\302H\211\303\267\202j \304\305\306\"\"\207\307H:\203\" \211\232\266\202\202( \310\"\266\202\2032 \311\312H\"\207	\207\313\305\314\"\315#\207\313\305\316\"\317#\207\320!\321\305\322\"\323\312H\"\"\207\324!\321\305\325\"\323\312H\"\"\207	\207" [rng-empty-ipattern rng-not-allowed-ipattern 0 #s(hash-table size 6 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (choice 9 attribute 17 group 52 interleave 61 one-or-more 70 after 88)) rng-transform-choice make-closure #[257 "\301\300\"\207" [V0 rng-start-attribute-deriv] 4 "\n\n(fn P)"] 2 rng-name-class-contains1 rng-intern-after 3 rng-transform-interleave-single #[257 "\301\300\"\207" [V0 rng-start-attribute-deriv] 4 "\n\n(fn P)"] rng-subst-group-after #[257 "\301\300\"\207" [V0 rng-start-attribute-deriv] 4 "\n\n(fn P)"] rng-subst-interleave-after rng-intern-optional rng-apply-after #[257 "\301\300D!\207" [V0 rng-intern-group] 4 "\n\n(fn P)"] rng-start-attribute-deriv rng--ipattern-after #[257 "\301\300\"\207" [V0 rng-intern-after] 4 "\n\n(fn P)"]] 9 (#$ . 31361)])
#@12 

(fn X Y)
(defalias 'rng-cons-group-after #[514 "\300\301\302\"\"\207" [rng-apply-after make-closure #[257 "\301\300B!\207" [V0 rng-intern-group] 4 "\n\n(fn P)"]] 6 (#$ . 32510)])
#@21 

(fn NEW OLD LIST)
(defalias 'rng-subst-group-after #[771 "\300\301\302#\"\207" [rng-apply-after make-closure #[257 "\302\303\300\301#!\207" [V0 V1 rng-intern-group rng-substq] 6 "\n\n(fn P)"]] 8 (#$ . 32700)])
#@21 

(fn NEW OLD LIST)
(defalias 'rng-subst-interleave-after #[771 "\300\301\302#\"\207" [rng-apply-after make-closure #[257 "\302\303\300\301#!\207" [V0 V1 rng-intern-interleave rng-substq] 6 "\n\n(fn P)"]] 8 (#$ . 32922)])
#@19 

(fn F IPATTERN)
(defalias 'rng-apply-after #[514 "\211\301H\211\302\267\202 \303\304H\305!!\"\207\306\307\310\"\"\207\207" [rng-not-allowed-ipattern 0 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (after 9 choice 20)) rng-intern-after 3 rng--ipattern-after rng-transform-choice make-closure #[257 "\301\300\"\207" [V0 rng-apply-after] 4 "\n\n(fn X)"]] 8 (#$ . 33154)])
#@17 

(fn IPATTERN)
(defalias 'rng-start-tag-close-deriv #[257 "\211\300H\206\f \211\300\301!I\207" [8 rng-compute-start-tag-close-deriv] 5 (#$ . 33578)])
(defconst rng-transform-map '((choice . rng-transform-choice) (group . rng-transform-group) (interleave . rng-transform-interleave) (one-or-more . rng-transform-one-or-more) (after . rng-transform-after-child)))
#@17 

(fn IPATTERN)
(defalias 'rng-compute-start-tag-close-deriv #[257 "\211\302H\211\303=\203 \207\211	\236\211\203 \211A\304\"\207\207" [rng-not-allowed-ipattern rng-transform-map 0 attribute rng-start-tag-close-deriv] 6 (#$ . 33948)])
#@17 

(fn IPATTERN)
(defalias 'rng-ignore-attributes-deriv #[257 "\211\302H\211\303=\203 \207\211	\236\211\203 \211A\304\"\207\207" [rng-empty-ipattern rng-transform-map 0 attribute rng-ignore-attributes-deriv] 6 (#$ . 34193)])
#@17 

(fn IPATTERN)
(defalias 'rng-text-only-deriv #[257 "\211\300H\206\f \211\300\301!I\207" [9 rng-compute-text-only-deriv] 5 (#$ . 34428)])
#@17 

(fn IPATTERN)
(defalias 'rng-compute-text-only-deriv #[257 "\211\301H\211\302=\203 \207\211\303\236\211\203 \211A\304\"\207\207" [rng-not-allowed-ipattern 0 element ((choice . rng-transform-choice) (group . rng-transform-group) (interleave . rng-transform-interleave) (one-or-more . rng-transform-one-or-more) (after . rng-transform-after-child)) rng-text-only-deriv] 6 (#$ . 34574)])
#@17 

(fn IPATTERN)
(defalias 'rng-mixed-text-deriv #[257 "\211\300H\206\f \211\300\301!I\207" [10 rng-compute-mixed-text-deriv] 5 (#$ . 34972)])
#@17 

(fn IPATTERN)
(defalias 'rng-compute-mixed-text-deriv #[257 "\211\301H\211\302\267\202- \207\303\304\"\207\305\304\"\207\306\304\307H!\310!D!\207\311\304\312#\207\313\304\314#\207\211\315=\203; \316H\204; \207\207" [rng-not-allowed-ipattern 0 #s(hash-table size 6 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (text 9 after 11 choice 16 one-or-more 21 group 33 interleave 39)) rng-transform-after-child rng-mixed-text-deriv rng-transform-choice rng-intern-group 3 rng-intern-optional rng-transform-group-nullable #[514 "\300B!\207" [rng-intern-group] 5 "\n\n(fn X Y)"] rng-transform-interleave-single #[771 "\300\301#!\207" [rng-intern-interleave rng-substq] 8 "\n\n(fn NEW OLD LIST)"] data 5] 6 (#$ . 35121)])
#@17 

(fn IPATTERN)
(defalias 'rng-end-tag-deriv #[257 "\211\300H\206\f \211\300\301!I\207" [12 rng-compute-end-tag-deriv] 5 (#$ . 35873)])
#@17 

(fn IPATTERN)
(defalias 'rng-compute-end-tag-deriv #[257 "\211\301H\211\302\267\202  \303\304\305\306H\"!\207\306H\307H\203 \310!\207\207\207" [rng-not-allowed-ipattern 0 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (choice 9 after 18)) rng-intern-choice mapcar rng-end-tag-deriv 3 4 rng--ipattern-after] 7 (#$ . 36016)])
#@23 

(fn IPATTERN VALUE)
(defalias 'rng-data-deriv #[514 "\211\301H\302\"\211\203 \211A\266\203\202' \205% @\303!\205# \304\"\262\266\203\206\240 \211\305 B\301H\302\"\211\203@ \211A\266\203\202T \205R @\303!\205P \304\"\262\266\203\203\210 \211\306@A\"B\301H\302\"\211\203q \211A\266\203\202\205 \205\203 @\303!\205\201 \304\"\262\266\203\206\240 \307\310!\311BB\312\"\313\314H$)\266\202\207" [rng-dt-namespace-context-getter 11 assoc hash-table-p gethash rng-namespace-context-get-no-trace apply vector nil rng-namespace-context-tracer rng-compute-data-deriv rng-ipattern-memo-data-deriv 0] 9 (#$ . 36392)])
#@31 

(fn USED GETTER &rest ARGS)
(defalias 'rng-namespace-context-tracer #[642 "\300\"\301I\210\207" [apply 0] 7 (#$ . 37044)])
(defalias 'rng-namespace-context-get-no-trace #[0 "\211\203 \211@\301=\203 \211AA\262\202 \302@A\"\207" [rng-dt-namespace-context-getter rng-namespace-context-tracer apply] 4])
#@56 Don't memoize data-derivs for values longer than this.
(defconst rng-memo-data-deriv-max-length 80 (#$ . 37363))
#@37 

(fn IPATTERN VALUE CONTEXT DERIV)
(defalias 'rng-ipattern-memo-data-deriv #[1028 ">\204$ G	V\204$ \302\303\203 B\202 \302H\304$I\210\207" [rng-const-ipatterns rng-memo-data-deriv-max-length 11 rng-memo-map-add t] 11 (#$ . 37482)])
#@23 

(fn IPATTERN VALUE)
(defalias 'rng-compute-data-deriv #[514 "\302H\211\303\267\202\303 \207\304\305\306\"\"\207\307\305\310\"\311#\207\312\313\314H\"\315!D!\207\314H\313\"\211\316H\262\204D \211\316H\203H \317!\203H \320!\207\207\321!\322@AB\"\266\202\203] 	\207\207\321!\322@AB\"\266\202\203\200 \313\314H\"\211\316H\262\204\200 	\207\207\321!\322@AB\"\266\202\323!\232\203\231 	\207\207\324!\314H\203\271 \211=\204\271 \313@\"\262A\262\202\241 \211\316H\203\301 	\207\207\207" [rng-not-allowed-ipattern rng-empty-ipattern 0 #s(hash-table size 9 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (text 9 choice 11 group 19 one-or-more 28 after 41 data 74 data-except 95 value 130 list 155)) rng-transform-choice make-closure #[257 "\301\300\"\207" [V0 rng-data-deriv] 4 "\n\n(fn P)"] rng-transform-group-nullable #[257 "\301\300\"\207" [V0 rng-data-deriv] 4 "\n\n(fn P)"] #[514 "\300B!\207" [rng-intern-group] 5 "\n\n(fn X Y)"] rng-intern-group rng-data-deriv 3 rng-intern-optional 4 rng-blank-p rng--ipattern-after rng--ipattern-datatype apply rng--ipattern-value-object split-string] 9 (#$ . 37734)])
#@28 

(fn F IPATTERN INTERNER)
(defalias 'rng-transform-multi #[771 "\300H\301\"\302\"\203 \207!\207" [3 mapcar rng-members-eq] 8 (#$ . 38913)])
#@19 

(fn F IPATTERN)
(defalias 'rng-transform-choice #[514 "\300\301#\207" [rng-transform-multi rng-intern-choice] 6 (#$ . 39069)])
#@19 

(fn F IPATTERN)
(defalias 'rng-transform-group #[514 "\300\301#\207" [rng-transform-multi rng-intern-group] 6 (#$ . 39206)])
#@19 

(fn F IPATTERN)
(defalias 'rng-transform-interleave #[514 "\300\301#\207" [rng-transform-multi rng-intern-interleave] 6 (#$ . 39341)])
#@19 

(fn F IPATTERN)
(defalias 'rng-transform-one-or-more #[514 "\211\300H!=\203 \207\301!\207" [3 rng-intern-one-or-more] 6 (#$ . 39486)])
#@19 

(fn F IPATTERN)
(defalias 'rng-transform-after-child #[514 "\211\300H!=\203 \207\301\302!\"\207" [3 rng-intern-after rng--ipattern-after] 8 (#$ . 39636)])
#@27 

(fn F SUBSTER IPATTERN)
(defalias 'rng-transform-interleave-single #[771 "\211\301H\302\203- \211\204- @!\211=\203  A\262\266\202 \301H#\266\203\202 \211\2062 \207" [rng-not-allowed-ipattern 3 nil] 12 (#$ . 39807)])
#@257 Given a group x1,...,xn,y1,...,yn where the xs are all
nullable and y1 isn't, return a choice
  (conser f(x1) x2,...,xm,y1,...,yn)
  |(conser f(x2) x3,...,xm,y1,...,yn)
  |...
  |(conser f(xm) y1,...,yn)
  |(conser f(y1) y2,...,yn)

(fn F CONSER IPATTERN)
(defalias 'rng-transform-group-nullable #[771 "\300\301\302H#!\207" [rng-intern-choice rng-transform-group-nullable-gen-choices 3] 9 (#$ . 40048)])
#@25 

(fn F CONSER MEMBERS)
(defalias 'rng-transform-group-nullable-gen-choices #[771 "\211@A\211\203 !\"\300H\205 \301#B\207!C\207" [4 rng-transform-group-nullable-gen-choices] 10 (#$ . 40461)])
#@20 

(fn LIST1 LIST2)
(defalias 'rng-members-eq #[514 "\203 \211\203 @@=\203 A\262\211A\262\202  ?\205\" \211?\207" [] 4 (#$ . 40674)])
#@17 

(fn IPATTERN)
(defalias 'rng-ipattern-after #[257 "\211\300H\211\301\267\202 \302\303\"\207\304!\207\207\305\306\"\207" [0 #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (choice 9 after 14 not-allowed 18)) rng-transform-choice rng-ipattern-after rng--ipattern-after error "Internal error in rng-ipattern-after: unexpected type %s"] 5 (#$ . 40823)])
#@17 

(fn IPATTERN)
(defalias 'rng-unknown-start-tag-open-deriv #[257 "\301\302!\"\207" [rng-any-content rng-intern-after rng-compile] 4 (#$ . 41223)])
#@17 

(fn IPATTERN)
(defalias 'rng-ipattern-optionalize-elements #[257 "\211\301H\211\236\211\203 \211A\302\"\207\303=\203 \304!\207\207" [rng-transform-map 0 rng-ipattern-optionalize-elements element rng-intern-optional] 6 (#$ . 41379)])
#@17 

(fn IPATTERN)
(defalias 'rng-ipattern-empty-before-p #[257 "\211\301H\211\302\267\202- \303H=\207\303H\304\203, \211\203, \305@!\204% \306\262A\262\202 \207\306\207" [rng-empty-ipattern 0 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (after 9 choice 15)) 3 t rng-ipattern-empty-before-p nil] 6 (#$ . 41627)])
#@23 

(fn IPATTERN ACCUM)
(defalias 'rng-ipattern-possible-start-tags #[514 "\301H\211\302\267\202_ \303\304H\"\207\304H\211\203% \303@\"\262\211A\262\202 \210\207\304H\211\203D \303@\"\262\211@\305H\205? \211A\262\202+ \210\207\306!=\203Q \207\307\310H\"\207\303\304H\"\207\207" [rng-not-allowed-ipattern 0 #s(hash-table size 6 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (after 9 choice 16 interleave 16 group 40 element 71 one-or-more 88)) rng-ipattern-possible-start-tags 3 4 rng-element-get-child rng-name-class-possible-names 2] 7 (#$ . 41992)])
#@17 

(fn IPATTERN)
(defalias 'rng-ipattern-start-tag-possible-p #[257 "\211\301H\211\302\267\202Q \303\304H!\207\304H\305\203( \211\204( \303@!\262A\262\202 \207\304H\305\203I \211\204I \303@!\262@\306H\205D A\262\202- \207\307!=?\207\305\207" [rng-not-allowed-ipattern 0 #s(hash-table size 6 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (after 9 one-or-more 9 choice 15 interleave 15 group 41 element 74)) rng-ipattern-start-tag-possible-p 3 nil 4 rng-element-get-child] 6 (#$ . 42590)])
#@23 

(fn IPATTERN ACCUM)
(defalias 'rng-ipattern-possible-attributes #[514 "\300H\211\301\267\2026 \302\303H\"\207\303H\211\203% \302@\"\262\211A\262\202 \210\207\304\305H\"\207\302\303H\"\207\207" [0 #s(hash-table size 6 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (after 9 choice 16 interleave 16 group 16 attribute 40 one-or-more 47)) rng-ipattern-possible-attributes 3 rng-name-class-possible-names 2] 7 (#$ . 43118)])
#@23 

(fn IPATTERN ACCUM)
(defalias 'rng-ipattern-possible-values #[514 "\300H\211\301\267\2026 \302\303H\"\207\303H\211\203% \302@\"\262\211A\262\202 \210\207\304!\211;\2034 \211B\207\207\207" [0 #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (after 9 choice 16 value 40)) rng-ipattern-possible-values 3 rng--ipattern-value-object] 7 (#$ . 43579)])
#@17 

(fn IPATTERN)
(defalias 'rng-ipattern-required-element #[257 "\211\301H\211\302\267\202\243 \303\304H!\207\304H\303@!\211\2031 A\211\262\2031 \211\303@!\232\204 \305\262\202 \207\304H\305\303@!\211\262\204O @\306H\203O A\211\262\2046 \207\304H\305\203\217 \303@!\211\204h A\262\210\202T \204w \211\262A\262\210\202T \232\203\205 A\262\210\202T \305\262\305\262\210\202T \207\307H\211:\205\242 \310!=?\205\242 \211\207\305\207" [rng-not-allowed-ipattern 0 #s(hash-table size 6 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (after 9 one-or-more 9 choice 15 group 50 interleave 80 element 144)) rng-ipattern-required-element 3 nil 4 2 rng-element-get-child] 7 (#$ . 43983)])
#@23 

(fn IPATTERN ACCUM)
(defalias 'rng-ipattern-required-attributes #[514 "\300H\211\301\267\202\204 \302\303H\"\207\303H\211\203% \302@\"\262\211A\262\202 \210\207\303H\304\211\211\302@\304\"\262\203i A\211\262\203i \302@\304\"\262\304\262\203c @\235\203\\ @B\262A\262\202K \211\262\2025 \305\"\207\306H\211:\203{ \211B\207\207\302\303H\"\207\207" [0 #s(hash-table size 6 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (after 9 interleave 16 group 16 choice 40 attribute 111 one-or-more 125)) rng-ipattern-required-attributes 3 nil append 2] 10 (#$ . 44714)])
#@19 

(fn &rest ARGS)
(defalias 'rng-compile-error #[128 "\300\301\302\303\"C\"\207" [signal rng-compile-error apply format-message] 6 (#$ . 45333)])
(define-error 'rng-compile-error "Incorrect schema" 'rng-error)
(defalias 'rng-match-state #[0 "\207" [rng-match-state] 1])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put rng-match-state speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@14 

(fn STATE)
(defalias 'rng-set-match-state #[257 "\211\211\207" [rng-match-state] 3 (#$ . 45752)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put rng-set-match-state speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@14 

(fn STATE)
(defalias 'rng-match-state-equal #[257 "\211=\207" [rng-match-state] 3 (#$ . 46004)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put rng-match-state-equal speed -1 put byte-optimizer byte-compile-inline-expand] 5)
(defalias 'rng-schema-changed #[0 "\300 \210\301 \207" [rng-ipattern-clear rng-compile-clear] 1])
(defalias 'rng-match-init-buffer #[0 "\300\301!\210\300\302!\210\300\303!\207" [make-local-variable rng-compile-table rng-ipattern-table rng-last-ipattern-index] 2])
(defalias 'rng-match-start-document #[0 "\302 \210\303 \210\304\305\306\307\310$\210\311!\211\207" [rng-current-schema rng-match-state rng-ipattern-maybe-init rng-compile-maybe-init add-hook rng-schema-change-hook rng-schema-changed nil t rng-compile] 5])
#@13 

(fn NAME)
(defalias 'rng-match-start-tag-open #[257 "\302\"\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-start-tag-open-deriv t] 4 (#$ . 46779)])
#@13 

(fn NAME)
(defalias 'rng-match-attribute-name #[257 "\302\"\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-start-attribute-deriv t] 4 (#$ . 46969)])
#@14 

(fn VALUE)
(defalias 'rng-match-attribute-value #[257 "\302\"\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-data-deriv t] 4 (#$ . 47160)])
#@14 

(fn VALUE)
(defalias 'rng-match-element-value #[257 "\302!\211	=\203 	=\262\202 \211\303\262\205, \304\"\211	=\203' 	=\207\211\303\262\207" [rng-match-state rng-not-allowed-ipattern rng-text-only-deriv t rng-data-deriv] 4 (#$ . 47342)])
(defalias 'rng-match-start-tag-close #[0 "\302!\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-start-tag-close-deriv t] 3])
(defalias 'rng-match-mixed-text #[0 "\302!\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-mixed-text-deriv t] 3])
(defalias 'rng-match-end-tag #[0 "\302!\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-end-tag-deriv t] 3])
(defalias 'rng-match-after #[0 "\302!\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-ipattern-after t] 3])
#@13 

(fn NAME)
(defalias 'rng-match-out-of-context-start-tag-open #[257 "\303\304\305$\211\203 \306!\202 	\307\n\"\211	=\203 \n	=\207\211\310\207" [rng-current-schema rng-not-allowed-ipattern rng-match-state rng-map-element-attribute rng-find-element-content-pattern nil rng-intern-choice rng-intern-after t] 6 (#$ . 48184)])
#@144 Return a list of all the namespace URIs used in the current schema.
The absent URI is not included, so the result is always a list of symbols.
(defalias 'rng-match-possible-namespace-uris #[0 "\301\302\303#\207" [rng-current-schema rng-map-element-attribute #[514 "\300A@\"\207" [rng-find-name-class-uris] 5 "\n\n(fn PATTERN ACCUM)"] nil] 4 (#$ . 48522)])
(defalias 'rng-match-unknown-start-tag-open #[0 "\302!\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-unknown-start-tag-open-deriv t] 3])
(defalias 'rng-match-optionalize-elements #[0 "\302!\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-ipattern-optionalize-elements t] 3])
(defalias 'rng-match-ignore-attributes #[0 "\302!\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-ignore-attributes-deriv t] 3])
(defalias 'rng-match-text-typed-p #[0 "\301!\207" [rng-match-state rng-ipattern-text-typed-p] 2])
(defalias 'rng-match-empty-content #[0 "\300 \203	 \301\302!\207\303 \207" [rng-match-text-typed-p rng-match-element-value "" rng-match-end-tag] 2])
#@176 Return non-nil if what can be matched before an end-tag is empty.
In other words, return non-nil if the pattern for what can be matched
for an end-tag is equivalent to empty.
(defalias 'rng-match-empty-before-p #[0 "\301!\207" [rng-match-state rng-ipattern-empty-before-p] 2 (#$ . 49638)])
#@19 

(fn LOCAL-NAME)
(defalias 'rng-match-infer-start-tag-namespace #[257 "\301\302\"\302\211\203H @\262A\232\203A @9\203A \211\204* @\262A\262\202 \211@\232\2038 A\262\202 \302\262\302\262\202 A\262\202 \207" [rng-match-state rng-ipattern-possible-start-tags nil] 6 (#$ . 49935)])
(defalias 'rng-match-nullable-p #[0 "\301H\207" [rng-match-state 4] 2])
#@274 Return a list of possible names that would be valid for start-tags.

Each possible name is returned as a (NAMESPACE . LOCAL-NAME) pair,
where NAMESPACE is a symbol or nil (meaning the absent namespace) and
LOCAL-NAME is a string.  The returned list may contain duplicates.
(defalias 'rng-match-possible-start-tag-names #[0 "\301\302\"\207" [rng-match-state rng-ipattern-possible-start-tags nil] 3 (#$ . 50316)])
#@44 Return non-nil if a start-tag is possible.
(defalias 'rng-match-start-tag-possible-p #[0 "\301!\207" [rng-match-state rng-ipattern-start-tag-possible-p] 2 (#$ . 50735)])
#@146 Return a list of possible names that would be valid for attributes.

See the function `rng-match-possible-start-tag-names' for
more information.
(defalias 'rng-match-possible-attribute-names #[0 "\301\302\"\207" [rng-match-state rng-ipattern-possible-attributes nil] 3 (#$ . 50913)])
#@136 Return a list of strings that would be valid as content.
The list may contain duplicates.  Typically, the list will not
be exhaustive.
(defalias 'rng-match-possible-value-strings #[0 "\301\302\"\207" [rng-match-state rng-ipattern-possible-values nil] 3 (#$ . 51205)])
#@65 Return the name of an element which must occur, or nil if none.
(defalias 'rng-match-required-element-name #[0 "\301!\207" [rng-match-state rng-ipattern-required-element] 2 (#$ . 51480)])
#@60 Return a list of names of attributes which must all occur.
(defalias 'rng-match-required-attribute-names #[0 "\301\302\"\207" [rng-match-state rng-ipattern-required-attributes nil] 3 (#$ . 51675)])
#@19 

(fn &rest BODY)
(defalias 'rng-match-save '(macro . #[128 "\300\301!\302\303BC\304\305B\306\307EEE\207" [make-symbol "state" let (rng-match-state) unwind-protect progn setq rng-match-state] 9 (#$ . 51880)]))
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put rng-match-save lisp-indent-function 0 put edebug-form-spec t] 5)
#@26 

(fn SCHEMA &rest BODY)
(defalias 'rng-match-with-schema '(macro . #[385 "\300\301D\302B\303\304\305BBBBB\207" [let rng-current-schema (rng-match-state rng-compile-table rng-ipattern-table rng-last-ipattern-index) (rng-ipattern-maybe-init) (rng-compile-maybe-init) (setq rng-match-state (rng-compile rng-current-schema))] 8 (#$ . 52231)]))
(byte-code "\300\301\302\303#\304\301\305\306#\210\307\310!\207" [function-put rng-match-with-schema lisp-indent-function 1 put edebug-form-spec t provide rng-match] 5)
